diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 00000000..132dc8a6 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,18 @@ +[run] +omit = + simple_vm_client/VirtualMachineService.py + simple_vm_client/constants.py + simple_vm_client/test_openstack_connector.py + simple_vm_client/ttypes.py + simple_vm_client/forc_connector/template/test_templates.py + simple_vm_client/util/logger.py + simple_vm_client/forc_connector/test_forc_connector.py + simple_vm_client/VirtualMachineServer.py + + check_env.py + +[report] +exclude_lines = + pragma: no cover + raise NotImplementedError + if __name__ == .__main__.: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 66940280..5cc29085 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,7 +39,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: +security-extended, security-and-quality @@ -51,7 +51,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -65,4 +65,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 445dd260..4c4aa12d 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,20 +1,35 @@ -name: 'coverage' + +# This workflow will install dependencies, create coverage tests and run Pytest Coverage Comment +# For more information see: https://github.com/MishaKav/pytest-coverage-comment/ +name: pytest-coverage-comment on: - pull_request: - workflow_dispatch: + pull_request: + branches: + - '*' +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.11 + uses: actions/setup-python@v2 + with: + python-version: 3.11 -jobs: - coverage: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4.1.1 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install flake8 pytest pytest-cov + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + + - name: Build coverage file + run: | + pytest --junitxml=pytest.xml | tee pytest-coverage.txt - - name: Run Coverage - run: cd simplevm-client/simple_vm_client && coverage xml coverage.xml + - name: Pytest coverage comment + uses: MishaKav/pytest-coverage-comment@main + with: + pytest-coverage-path: ./pytest-coverage.txt + junitxml-path: ./pytest.xml - - name: Get Cover - uses: orgoro/coverage@v3.1 - with: - coverageFile: coverage.xml - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index de5821b9..b44a19a1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -9,17 +9,19 @@ repos: - id: end-of-file-fixer - id: check-yaml - - repo: https://github.com/psf/black - rev: 23.11.0 + - repo: https://github.com/psf/black-pre-commit-mirror + + rev: 23.12.0 hooks: - id: black + language_version: python3.11 - repo: https://github.com/sondrelg/pep585-upgrade rev: 'v1.0.1' # Use the sha / tag you want to point at hooks: - id: upgrade-type-hints - repo: https://github.com/PyCQA/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort @@ -33,7 +35,7 @@ repos: - --remove-all-unused-imports - repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 + rev: 7.0.0 hooks: - id: flake8 args: [ "--config=setup.cfg" ] diff --git a/Dockerfile b/Dockerfile index a1b9141e..85eb54e3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,24 @@ FROM python:3.11.4-buster -RUN apt-get update -y -RUN apt-get install -y build-essential + +RUN apt-get update -y \ + && apt-get install -y build-essential \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /code -ADD requirements.txt /code + +# Copy requirements and install them first to leverage Docker cache +COPY requirements.txt /code RUN pip install -r requirements.txt -ADD requirements.yml /code -ADD ansible.cfg /etc/ansible/ + +COPY requirements.yml /code +COPY ansible.cfg /etc/ansible/ RUN ansible-galaxy install -r requirements.yml -ADD . /code + +# Copy the entire project +COPY . /code + +# Set PYTHONPATH to include the project root +ENV PYTHONPATH /code + WORKDIR /code/simple_vm_client diff --git a/Makefile b/Makefile index afa7f487..8fafcf2c 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,6 @@ thrift_py: ## Builds python code from thrift file thrift --gen py portal_client.thrift cp -a gen-py/VirtualMachineService/. simple_vm_client rm -rf gen-py - @echo Remember to fix the imports: for pip relative imports are needed, for others absolute imports dev-build: ## Build and Start the docker-compose.dev.yml docker-compose -f docker-compose.dev.yml up --build diff --git a/docker-compose.bibigrid.yml b/docker-compose.bibigrid.yml index 9c801809..71be2cb0 100644 --- a/docker-compose.bibigrid.yml +++ b/docker-compose.bibigrid.yml @@ -41,7 +41,7 @@ services: # filebeat simplevm_filebeat: - image: docker.elastic.co/beats/filebeat:8.11.2 + image: docker.elastic.co/beats/filebeat:8.11.3 env_file: - .env volumes: diff --git a/docker-compose.yml b/docker-compose.yml index 5b361c38..50652065 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,7 +27,7 @@ services: # filebeat simplevm_client_filebeat: container_name: simplevm_client_filebeat - image: docker.elastic.co/beats/filebeat:8.11.2 + image: docker.elastic.co/beats/filebeat:8.11.3 env_file: - .env volumes: diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 00000000..4d846814 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,6 @@ +# pytest.ini + +[pytest] +addopts = --cov=. --cov-config=.coveragerc + +# Add other configuration options as needed diff --git a/requirements.txt b/requirements.txt index 08094208..3d9116eb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,18 @@ -setuptools==69.0.2 +setuptools==69.0.3 thrift==0.16.0 python-keystoneclient==5.2.0 -openstacksdk==1.5.0 +openstacksdk==2.0.0 deprecated==1.2.14 Click==8.1.7 ansible==5.1.0 -flake8==6.1.0 -paramiko==2.12.0 +flake8==7.0.0 +paramiko==3.4.0 ruamel.yaml==0.18.5 pyvim==3.0.3 redis==5.0.1 requests==2.31.0 pyyaml==6.0.1 -pre-commit==3.5.0 +pre-commit==3.6.0 types-PyYAML==6.0.12.12 sympy==1.12 -types-redis==4.6.0.11 +types-redis==4.6.0.20240106 diff --git a/setup.cfg b/setup.cfg index f75c6c1c..fd6cc3eb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,5 +27,3 @@ warn_unused_configs = True [coverage:run] include = simple_vm_client/* omit = *migrations*, *tests* -plugins = - django_coverage_plugin diff --git a/simple_vm_client/VirtualMachineHandler.py b/simple_vm_client/VirtualMachineHandler.py index 547fd580..1e348a9e 100644 --- a/simple_vm_client/VirtualMachineHandler.py +++ b/simple_vm_client/VirtualMachineHandler.py @@ -5,29 +5,27 @@ """ from __future__ import annotations -from typing import TYPE_CHECKING - -from bibigrid_connector.bibigrid_connector import BibigridConnector -from forc_connector.forc_connector import ForcConnector -from openstack_connector.openstack_connector import OpenStackConnector -from util import thrift_converter -from util.logger import setup_custom_logger -from VirtualMachineService import Iface - -if TYPE_CHECKING: - from ttypes import ( - VM, - Backend, - ClusterInfo, - ClusterInstance, - CondaPackage, - Flavor, - Image, - PlaybookResult, - ResearchEnvironmentTemplate, - Snapshot, - Volume, - ) + +from simple_vm_client.bibigrid_connector.bibigrid_connector import BibigridConnector +from simple_vm_client.forc_connector.forc_connector import ForcConnector +from simple_vm_client.openstack_connector.openstack_connector import OpenStackConnector +from simple_vm_client.util import thrift_converter +from simple_vm_client.util.logger import setup_custom_logger + +from .ttypes import ( + VM, + Backend, + ClusterInfo, + ClusterInstance, + CondaPackage, + Flavor, + Image, + PlaybookResult, + ResearchEnvironmentTemplate, + Snapshot, + Volume, +) +from .VirtualMachineService import Iface logger = setup_custom_logger(__name__) @@ -143,10 +141,13 @@ def get_server(self, openstack_id: str) -> VM: return server def get_servers(self) -> list[VM]: - serv = thrift_converter.os_to_thrift_servers( - openstack_servers=self.openstack_connector.get_servers() - ) - return serv + servers = openstack_servers = self.openstack_connector.get_servers() + servers_full = [] + + for server in servers: + servers_full.append(self.forc_connector.get_playbook_status(server=server)) + serv = thrift_converter.os_to_thrift_servers(openstack_servers=servers) + return servers_full def get_servers_by_ids(self, server_ids: list[str]) -> list[VM]: return thrift_converter.os_to_thrift_servers( diff --git a/simple_vm_client/VirtualMachineServer.py b/simple_vm_client/VirtualMachineServer.py index 1c57ff6d..3820dcc8 100644 --- a/simple_vm_client/VirtualMachineServer.py +++ b/simple_vm_client/VirtualMachineServer.py @@ -1,4 +1,3 @@ -import os import signal import ssl import sys @@ -8,8 +7,9 @@ from thrift.protocol import TBinaryProtocol from thrift.server import TServer from thrift.transport import TSocket, TSSLSocket, TTransport -from VirtualMachineHandler import VirtualMachineHandler -from VirtualMachineService import Processor + +from simple_vm_client.VirtualMachineHandler import VirtualMachineHandler +from simple_vm_client.VirtualMachineService import Processor USERNAME = "OS_USERNAME" PASSWORD = "OS_PASSWORD" @@ -72,15 +72,5 @@ def catch_shutdown(signal: int, frame: object) -> None: server.serve() -def check_environment_variables(envs: list[str]) -> None: - def check_env(var: str) -> None: - if var not in os.environ: - click.echo(f"ERROR: There is no {var} set in environment.") - click.echo("Please make sure you have sourced your OpenStack rc file") - sys.exit() - - list(map(lambda var: check_env(var), envs)) - - if __name__ == "__main__": startServer() diff --git a/simple_vm_client/VirtualMachineService-remote b/simple_vm_client/VirtualMachineService-remote index 9c494411..0bc1e72c 100755 --- a/simple_vm_client/VirtualMachineService-remote +++ b/simple_vm_client/VirtualMachineService-remote @@ -1,128 +1,100 @@ #!/usr/bin/env python # -# Autogenerated by Thrift Compiler (0.16.0) +# Autogenerated by Thrift Compiler (0.19.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # # options string: py # -import pprint import sys - +import pprint if sys.version_info[0] > 2: from urllib.parse import urlparse else: from urlparse import urlparse - +from thrift.transport import TTransport, TSocket, TSSLSocket, THttpClient from thrift.protocol.TBinaryProtocol import TBinaryProtocol -from thrift.transport import THttpClient, TSocket, TSSLSocket, TTransport -from VirtualMachineService import VirtualMachineService -if len(sys.argv) <= 1 or sys.argv[1] == "--help": - print("") - print( - "Usage: " - + sys.argv[0] - + " [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]" - ) - print("") - print("Functions:") - print(" bool is_version(double version)") - print(" string get_client_version()") - print(" get_gateway_ip()") - print(" get_calculation_values()") - print(" string import_keypair(string keyname, string public_key)") - print(" get_vm_ports(string openstack_id)") - print(" void add_udp_security_group(string server_id)") - print(" add_metadata_to_server(string openstack_id, metadata)") - print(" get_flavors()") - print(" get_images()") - print(" get_public_images()") - print(" get_private_images()") - print(" Image get_image(string openstack_id, bool ignore_not_active)") - print(" Volume get_volume(string volume_id)") - print(" get_volumes_by_ids( volume_ids)") - print(" void resize_volume(string volume_id, int size)") - print( - " string open_port_range_for_vm_in_project(int range_start, int range_stop, string openstack_id, string ethertype, string protocol)" - ) - print(" void delete_security_group_rule(string openstack_id)") - print(" void delete_server(string openstack_id)") - print( - " string start_server(string flavor_name, string image_name, string public_key, string servername, metadata, volume_ids_path_new, volume_ids_path_attach, additional_keys, string research_environment, additional_security_group_ids)" - ) - print(" bool is_bibigrid_available()") - print(" void detach_ip_from_server(string server_id, string floating_ip)") - print( - " string start_server_with_custom_key(string flavor_name, string image_name, string servername, metadata, string research_environment, volume_ids_path_new, volume_ids_path_attach, additional_security_group_ids)" - ) - print(" bool exist_server(string name)") - print( - " int create_and_deploy_playbook(string public_key, string openstack_id, conda_packages, string research_environment_template, apt_packages, bool create_only_backend, string base_url)" - ) - print(" PlaybookResult get_playbook_logs(string openstack_id)") - print(" bool has_forc()") - print(" string get_forc_url()") - print( - " Backend create_backend(string owner, string user_path, string template, string upstream_url)" - ) - print(" get_backends()") - print(" get_backends_by_owner(string owner)") - print(" get_backends_by_template(string template)") - print(" Backend get_backend_by_id(i64 id)") - print(" void delete_backend(i64 id)") - print(" add_user_to_backend(i64 backend_id, string user_id)") - print(" get_users_from_backend(i64 backend_id)") - print(" delete_user_from_backend(i64 backend_id, string user_id)") - print(" get_allowed_templates()") - print(" get_servers()") - print(" get_servers_by_ids( server_ids)") - print(" get_servers_by_bibigrid_id(string bibigrid_id)") - print( - " scale_up_cluster(string cluster_id, string image_name, string flavor_name, int count, names, int start_idx, int batch_idx)" - ) - print( - " string add_cluster_machine(string cluster_id, string cluster_user, string cluster_group_id, string image_name, string flavor_name, string name, string key_name, int batch_idx, int worker_idx)" - ) - print(" ClusterInfo get_cluster_info(string cluster_id)") - print(" get_cluster_status(string cluster_id)") - print(" VM get_server(string openstack_id)") - print(" void stop_server(string openstack_id)") - print( - " string create_snapshot(string openstack_id, string name, string username, base_tags, string description)" - ) - print(" get_limits()") - print( - " start_cluster(string public_key, ClusterInstance master_instance, worker_instances, string user)" - ) - print(" terminate_cluster(string cluster_id)") - print(" void delete_image(string image_id)") - print(" void detach_volume(string volume_id, string server_id)") - print(" void delete_volume(string volume_id)") - print(" attach_volume_to_server(string openstack_id, string volume_id)") - print(" void resume_server(string openstack_id)") - print(" Volume create_volume(string volume_name, int volume_storage, metadata)") - print( - " Volume create_volume_by_source_volume(string volume_name, metadata, string source_volume_id)" - ) - print( - " Volume create_volume_by_volume_snap(string volume_name, metadata, string volume_snap_id)" - ) - print( - " string create_volume_snapshot(string volume_id, string name, string description)" - ) - print(" Snapshot get_volume_snapshot(string name_or_id)") - print(" void delete_volume_snapshot(string snapshot_id)") - print(" void reboot_hard_server(string openstack_id)") - print(" void reboot_soft_server(string openstack_id)") - print("") +from VirtualMachineService import VirtualMachineService +from VirtualMachineService.ttypes import * + +if len(sys.argv) <= 1 or sys.argv[1] == '--help': + print('') + print('Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] [-s[sl]] [-novalidate] [-ca_certs certs] [-keyfile keyfile] [-certfile certfile] function [arg1 [arg2...]]') + print('') + print('Functions:') + print(' bool is_version(double version)') + print(' string get_client_version()') + print(' get_gateway_ip()') + print(' get_calculation_values()') + print(' string import_keypair(string keyname, string public_key)') + print(' get_vm_ports(string openstack_id)') + print(' void add_udp_security_group(string server_id)') + print(' add_metadata_to_server(string openstack_id, metadata)') + print(' get_flavors()') + print(' get_images()') + print(' get_public_images()') + print(' get_private_images()') + print(' Image get_image(string openstack_id, bool ignore_not_active)') + print(' Volume get_volume(string volume_id)') + print(' get_volumes_by_ids( volume_ids)') + print(' void resize_volume(string volume_id, int size)') + print(' string open_port_range_for_vm_in_project(int range_start, int range_stop, string openstack_id, string ethertype, string protocol)') + print(' void delete_security_group_rule(string openstack_id)') + print(' void delete_server(string openstack_id)') + print(' string start_server(string flavor_name, string image_name, string public_key, string servername, metadata, volume_ids_path_new, volume_ids_path_attach, additional_keys, string research_environment, additional_security_group_ids)') + print(' bool is_bibigrid_available()') + print(' void detach_ip_from_server(string server_id, string floating_ip)') + print(' string start_server_with_custom_key(string flavor_name, string image_name, string servername, metadata, string research_environment, volume_ids_path_new, volume_ids_path_attach, additional_security_group_ids)') + print(' bool exist_server(string name)') + print(' int create_and_deploy_playbook(string public_key, string openstack_id, conda_packages, string research_environment_template, apt_packages, bool create_only_backend, string base_url)') + print(' PlaybookResult get_playbook_logs(string openstack_id)') + print(' bool has_forc()') + print(' string get_forc_url()') + print(' Backend create_backend(string owner, string user_path, string template, string upstream_url)') + print(' get_backends()') + print(' get_backends_by_owner(string owner)') + print(' get_backends_by_template(string template)') + print(' Backend get_backend_by_id(i64 id)') + print(' void delete_backend(i64 id)') + print(' add_user_to_backend(i64 backend_id, string user_id)') + print(' get_users_from_backend(i64 backend_id)') + print(' delete_user_from_backend(i64 backend_id, string user_id)') + print(' get_allowed_templates()') + print(' get_servers()') + print(' get_servers_by_ids( server_ids)') + print(' get_servers_by_bibigrid_id(string bibigrid_id)') + print(' scale_up_cluster(string cluster_id, string image_name, string flavor_name, int count, names, int start_idx, int batch_idx)') + print(' string add_cluster_machine(string cluster_id, string cluster_user, string cluster_group_id, string image_name, string flavor_name, string name, string key_name, int batch_idx, int worker_idx)') + print(' ClusterInfo get_cluster_info(string cluster_id)') + print(' get_cluster_status(string cluster_id)') + print(' VM get_server(string openstack_id)') + print(' void stop_server(string openstack_id)') + print(' string create_snapshot(string openstack_id, string name, string username, base_tags, string description)') + print(' get_limits()') + print(' start_cluster(string public_key, ClusterInstance master_instance, worker_instances, string user)') + print(' terminate_cluster(string cluster_id)') + print(' void delete_image(string image_id)') + print(' void detach_volume(string volume_id, string server_id)') + print(' void delete_volume(string volume_id)') + print(' attach_volume_to_server(string openstack_id, string volume_id)') + print(' void resume_server(string openstack_id)') + print(' Volume create_volume(string volume_name, int volume_storage, metadata)') + print(' Volume create_volume_by_source_volume(string volume_name, metadata, string source_volume_id)') + print(' Volume create_volume_by_volume_snap(string volume_name, metadata, string volume_snap_id)') + print(' string create_volume_snapshot(string volume_id, string name, string description)') + print(' Snapshot get_volume_snapshot(string name_or_id)') + print(' void delete_volume_snapshot(string snapshot_id)') + print(' void reboot_hard_server(string openstack_id)') + print(' void reboot_soft_server(string openstack_id)') + print('') sys.exit(0) pp = pprint.PrettyPrinter(indent=2) -host = "localhost" +host = 'localhost' port = 9090 -uri = "" +uri = '' framed = False ssl = False validate = True @@ -132,16 +104,16 @@ certfile = None http = False argi = 1 -if sys.argv[argi] == "-h": - parts = sys.argv[argi + 1].split(":") +if sys.argv[argi] == '-h': + parts = sys.argv[argi + 1].split(':') host = parts[0] if len(parts) > 1: port = int(parts[1]) argi += 2 -if sys.argv[argi] == "-u": +if sys.argv[argi] == '-u': url = urlparse(sys.argv[argi + 1]) - parts = url[1].split(":") + parts = url[1].split(':') host = parts[0] if len(parts) > 1: port = int(parts[1]) @@ -149,49 +121,42 @@ if sys.argv[argi] == "-u": port = 80 uri = url[2] if url[4]: - uri += "?%s" % url[4] + uri += '?%s' % url[4] http = True argi += 2 -if sys.argv[argi] == "-f" or sys.argv[argi] == "-framed": +if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed': framed = True argi += 1 -if sys.argv[argi] == "-s" or sys.argv[argi] == "-ssl": +if sys.argv[argi] == '-s' or sys.argv[argi] == '-ssl': ssl = True argi += 1 -if sys.argv[argi] == "-novalidate": +if sys.argv[argi] == '-novalidate': validate = False argi += 1 -if sys.argv[argi] == "-ca_certs": - ca_certs = sys.argv[argi + 1] +if sys.argv[argi] == '-ca_certs': + ca_certs = sys.argv[argi+1] argi += 2 -if sys.argv[argi] == "-keyfile": - keyfile = sys.argv[argi + 1] +if sys.argv[argi] == '-keyfile': + keyfile = sys.argv[argi+1] argi += 2 -if sys.argv[argi] == "-certfile": - certfile = sys.argv[argi + 1] +if sys.argv[argi] == '-certfile': + certfile = sys.argv[argi+1] argi += 2 cmd = sys.argv[argi] -args = sys.argv[argi + 1 :] +args = sys.argv[argi + 1:] if http: transport = THttpClient.THttpClient(host, port, uri) else: if ssl: - socket = TSSLSocket.TSSLSocket( - host, - port, - validate=validate, - ca_certs=ca_certs, - keyfile=keyfile, - certfile=certfile, - ) + socket = TSSLSocket.TSSLSocket(host, port, validate=validate, ca_certs=ca_certs, keyfile=keyfile, certfile=certfile) else: socket = TSocket.TSocket(host, port) if framed: @@ -202,659 +167,392 @@ protocol = TBinaryProtocol(transport) client = VirtualMachineService.Client(protocol) transport.open() -if cmd == "is_version": +if cmd == 'is_version': if len(args) != 1: - print("is_version requires 1 args") + print('is_version requires 1 args') sys.exit(1) - pp.pprint( - client.is_version( - eval(args[0]), - ) - ) + pp.pprint(client.is_version(eval(args[0]),)) -elif cmd == "get_client_version": +elif cmd == 'get_client_version': if len(args) != 0: - print("get_client_version requires 0 args") + print('get_client_version requires 0 args') sys.exit(1) pp.pprint(client.get_client_version()) -elif cmd == "get_gateway_ip": +elif cmd == 'get_gateway_ip': if len(args) != 0: - print("get_gateway_ip requires 0 args") + print('get_gateway_ip requires 0 args') sys.exit(1) pp.pprint(client.get_gateway_ip()) -elif cmd == "get_calculation_values": +elif cmd == 'get_calculation_values': if len(args) != 0: - print("get_calculation_values requires 0 args") + print('get_calculation_values requires 0 args') sys.exit(1) pp.pprint(client.get_calculation_values()) -elif cmd == "import_keypair": +elif cmd == 'import_keypair': if len(args) != 2: - print("import_keypair requires 2 args") + print('import_keypair requires 2 args') sys.exit(1) - pp.pprint( - client.import_keypair( - args[0], - args[1], - ) - ) + pp.pprint(client.import_keypair(args[0], args[1],)) -elif cmd == "get_vm_ports": +elif cmd == 'get_vm_ports': if len(args) != 1: - print("get_vm_ports requires 1 args") + print('get_vm_ports requires 1 args') sys.exit(1) - pp.pprint( - client.get_vm_ports( - args[0], - ) - ) + pp.pprint(client.get_vm_ports(args[0],)) -elif cmd == "add_udp_security_group": +elif cmd == 'add_udp_security_group': if len(args) != 1: - print("add_udp_security_group requires 1 args") + print('add_udp_security_group requires 1 args') sys.exit(1) - pp.pprint( - client.add_udp_security_group( - args[0], - ) - ) + pp.pprint(client.add_udp_security_group(args[0],)) -elif cmd == "add_metadata_to_server": +elif cmd == 'add_metadata_to_server': if len(args) != 2: - print("add_metadata_to_server requires 2 args") + print('add_metadata_to_server requires 2 args') sys.exit(1) - pp.pprint( - client.add_metadata_to_server( - args[0], - eval(args[1]), - ) - ) + pp.pprint(client.add_metadata_to_server(args[0], eval(args[1]),)) -elif cmd == "get_flavors": +elif cmd == 'get_flavors': if len(args) != 0: - print("get_flavors requires 0 args") + print('get_flavors requires 0 args') sys.exit(1) pp.pprint(client.get_flavors()) -elif cmd == "get_images": +elif cmd == 'get_images': if len(args) != 0: - print("get_images requires 0 args") + print('get_images requires 0 args') sys.exit(1) pp.pprint(client.get_images()) -elif cmd == "get_public_images": +elif cmd == 'get_public_images': if len(args) != 0: - print("get_public_images requires 0 args") + print('get_public_images requires 0 args') sys.exit(1) pp.pprint(client.get_public_images()) -elif cmd == "get_private_images": +elif cmd == 'get_private_images': if len(args) != 0: - print("get_private_images requires 0 args") + print('get_private_images requires 0 args') sys.exit(1) pp.pprint(client.get_private_images()) -elif cmd == "get_image": +elif cmd == 'get_image': if len(args) != 2: - print("get_image requires 2 args") + print('get_image requires 2 args') sys.exit(1) - pp.pprint( - client.get_image( - args[0], - eval(args[1]), - ) - ) + pp.pprint(client.get_image(args[0], eval(args[1]),)) -elif cmd == "get_volume": +elif cmd == 'get_volume': if len(args) != 1: - print("get_volume requires 1 args") + print('get_volume requires 1 args') sys.exit(1) - pp.pprint( - client.get_volume( - args[0], - ) - ) + pp.pprint(client.get_volume(args[0],)) -elif cmd == "get_volumes_by_ids": +elif cmd == 'get_volumes_by_ids': if len(args) != 1: - print("get_volumes_by_ids requires 1 args") + print('get_volumes_by_ids requires 1 args') sys.exit(1) - pp.pprint( - client.get_volumes_by_ids( - eval(args[0]), - ) - ) + pp.pprint(client.get_volumes_by_ids(eval(args[0]),)) -elif cmd == "resize_volume": +elif cmd == 'resize_volume': if len(args) != 2: - print("resize_volume requires 2 args") + print('resize_volume requires 2 args') sys.exit(1) - pp.pprint( - client.resize_volume( - args[0], - eval(args[1]), - ) - ) + pp.pprint(client.resize_volume(args[0], eval(args[1]),)) -elif cmd == "open_port_range_for_vm_in_project": +elif cmd == 'open_port_range_for_vm_in_project': if len(args) != 5: - print("open_port_range_for_vm_in_project requires 5 args") - sys.exit(1) - pp.pprint( - client.open_port_range_for_vm_in_project( - eval(args[0]), - eval(args[1]), - args[2], - args[3], - args[4], - ) - ) - -elif cmd == "delete_security_group_rule": + print('open_port_range_for_vm_in_project requires 5 args') + sys.exit(1) + pp.pprint(client.open_port_range_for_vm_in_project(eval(args[0]), eval(args[1]), args[2], args[3], args[4],)) + +elif cmd == 'delete_security_group_rule': if len(args) != 1: - print("delete_security_group_rule requires 1 args") + print('delete_security_group_rule requires 1 args') sys.exit(1) - pp.pprint( - client.delete_security_group_rule( - args[0], - ) - ) + pp.pprint(client.delete_security_group_rule(args[0],)) -elif cmd == "delete_server": +elif cmd == 'delete_server': if len(args) != 1: - print("delete_server requires 1 args") + print('delete_server requires 1 args') sys.exit(1) - pp.pprint( - client.delete_server( - args[0], - ) - ) + pp.pprint(client.delete_server(args[0],)) -elif cmd == "start_server": +elif cmd == 'start_server': if len(args) != 10: - print("start_server requires 10 args") - sys.exit(1) - pp.pprint( - client.start_server( - args[0], - args[1], - args[2], - args[3], - eval(args[4]), - eval(args[5]), - eval(args[6]), - eval(args[7]), - args[8], - eval(args[9]), - ) - ) - -elif cmd == "is_bibigrid_available": + print('start_server requires 10 args') + sys.exit(1) + pp.pprint(client.start_server(args[0], args[1], args[2], args[3], eval(args[4]), eval(args[5]), eval(args[6]), eval(args[7]), args[8], eval(args[9]),)) + +elif cmd == 'is_bibigrid_available': if len(args) != 0: - print("is_bibigrid_available requires 0 args") + print('is_bibigrid_available requires 0 args') sys.exit(1) pp.pprint(client.is_bibigrid_available()) -elif cmd == "detach_ip_from_server": +elif cmd == 'detach_ip_from_server': if len(args) != 2: - print("detach_ip_from_server requires 2 args") + print('detach_ip_from_server requires 2 args') sys.exit(1) - pp.pprint( - client.detach_ip_from_server( - args[0], - args[1], - ) - ) + pp.pprint(client.detach_ip_from_server(args[0], args[1],)) -elif cmd == "start_server_with_custom_key": +elif cmd == 'start_server_with_custom_key': if len(args) != 8: - print("start_server_with_custom_key requires 8 args") - sys.exit(1) - pp.pprint( - client.start_server_with_custom_key( - args[0], - args[1], - args[2], - eval(args[3]), - args[4], - eval(args[5]), - eval(args[6]), - eval(args[7]), - ) - ) - -elif cmd == "exist_server": + print('start_server_with_custom_key requires 8 args') + sys.exit(1) + pp.pprint(client.start_server_with_custom_key(args[0], args[1], args[2], eval(args[3]), args[4], eval(args[5]), eval(args[6]), eval(args[7]),)) + +elif cmd == 'exist_server': if len(args) != 1: - print("exist_server requires 1 args") + print('exist_server requires 1 args') sys.exit(1) - pp.pprint( - client.exist_server( - args[0], - ) - ) + pp.pprint(client.exist_server(args[0],)) -elif cmd == "create_and_deploy_playbook": +elif cmd == 'create_and_deploy_playbook': if len(args) != 7: - print("create_and_deploy_playbook requires 7 args") - sys.exit(1) - pp.pprint( - client.create_and_deploy_playbook( - args[0], - args[1], - eval(args[2]), - args[3], - eval(args[4]), - eval(args[5]), - args[6], - ) - ) - -elif cmd == "get_playbook_logs": + print('create_and_deploy_playbook requires 7 args') + sys.exit(1) + pp.pprint(client.create_and_deploy_playbook(args[0], args[1], eval(args[2]), args[3], eval(args[4]), eval(args[5]), args[6],)) + +elif cmd == 'get_playbook_logs': if len(args) != 1: - print("get_playbook_logs requires 1 args") + print('get_playbook_logs requires 1 args') sys.exit(1) - pp.pprint( - client.get_playbook_logs( - args[0], - ) - ) + pp.pprint(client.get_playbook_logs(args[0],)) -elif cmd == "has_forc": +elif cmd == 'has_forc': if len(args) != 0: - print("has_forc requires 0 args") + print('has_forc requires 0 args') sys.exit(1) pp.pprint(client.has_forc()) -elif cmd == "get_forc_url": +elif cmd == 'get_forc_url': if len(args) != 0: - print("get_forc_url requires 0 args") + print('get_forc_url requires 0 args') sys.exit(1) pp.pprint(client.get_forc_url()) -elif cmd == "create_backend": +elif cmd == 'create_backend': if len(args) != 4: - print("create_backend requires 4 args") - sys.exit(1) - pp.pprint( - client.create_backend( - args[0], - args[1], - args[2], - args[3], - ) - ) - -elif cmd == "get_backends": + print('create_backend requires 4 args') + sys.exit(1) + pp.pprint(client.create_backend(args[0], args[1], args[2], args[3],)) + +elif cmd == 'get_backends': if len(args) != 0: - print("get_backends requires 0 args") + print('get_backends requires 0 args') sys.exit(1) pp.pprint(client.get_backends()) -elif cmd == "get_backends_by_owner": +elif cmd == 'get_backends_by_owner': if len(args) != 1: - print("get_backends_by_owner requires 1 args") + print('get_backends_by_owner requires 1 args') sys.exit(1) - pp.pprint( - client.get_backends_by_owner( - args[0], - ) - ) + pp.pprint(client.get_backends_by_owner(args[0],)) -elif cmd == "get_backends_by_template": +elif cmd == 'get_backends_by_template': if len(args) != 1: - print("get_backends_by_template requires 1 args") + print('get_backends_by_template requires 1 args') sys.exit(1) - pp.pprint( - client.get_backends_by_template( - args[0], - ) - ) + pp.pprint(client.get_backends_by_template(args[0],)) -elif cmd == "get_backend_by_id": +elif cmd == 'get_backend_by_id': if len(args) != 1: - print("get_backend_by_id requires 1 args") + print('get_backend_by_id requires 1 args') sys.exit(1) - pp.pprint( - client.get_backend_by_id( - eval(args[0]), - ) - ) + pp.pprint(client.get_backend_by_id(eval(args[0]),)) -elif cmd == "delete_backend": +elif cmd == 'delete_backend': if len(args) != 1: - print("delete_backend requires 1 args") + print('delete_backend requires 1 args') sys.exit(1) - pp.pprint( - client.delete_backend( - eval(args[0]), - ) - ) + pp.pprint(client.delete_backend(eval(args[0]),)) -elif cmd == "add_user_to_backend": +elif cmd == 'add_user_to_backend': if len(args) != 2: - print("add_user_to_backend requires 2 args") + print('add_user_to_backend requires 2 args') sys.exit(1) - pp.pprint( - client.add_user_to_backend( - eval(args[0]), - args[1], - ) - ) + pp.pprint(client.add_user_to_backend(eval(args[0]), args[1],)) -elif cmd == "get_users_from_backend": +elif cmd == 'get_users_from_backend': if len(args) != 1: - print("get_users_from_backend requires 1 args") + print('get_users_from_backend requires 1 args') sys.exit(1) - pp.pprint( - client.get_users_from_backend( - eval(args[0]), - ) - ) + pp.pprint(client.get_users_from_backend(eval(args[0]),)) -elif cmd == "delete_user_from_backend": +elif cmd == 'delete_user_from_backend': if len(args) != 2: - print("delete_user_from_backend requires 2 args") + print('delete_user_from_backend requires 2 args') sys.exit(1) - pp.pprint( - client.delete_user_from_backend( - eval(args[0]), - args[1], - ) - ) + pp.pprint(client.delete_user_from_backend(eval(args[0]), args[1],)) -elif cmd == "get_allowed_templates": +elif cmd == 'get_allowed_templates': if len(args) != 0: - print("get_allowed_templates requires 0 args") + print('get_allowed_templates requires 0 args') sys.exit(1) pp.pprint(client.get_allowed_templates()) -elif cmd == "get_servers": +elif cmd == 'get_servers': if len(args) != 0: - print("get_servers requires 0 args") + print('get_servers requires 0 args') sys.exit(1) pp.pprint(client.get_servers()) -elif cmd == "get_servers_by_ids": +elif cmd == 'get_servers_by_ids': if len(args) != 1: - print("get_servers_by_ids requires 1 args") + print('get_servers_by_ids requires 1 args') sys.exit(1) - pp.pprint( - client.get_servers_by_ids( - eval(args[0]), - ) - ) + pp.pprint(client.get_servers_by_ids(eval(args[0]),)) -elif cmd == "get_servers_by_bibigrid_id": +elif cmd == 'get_servers_by_bibigrid_id': if len(args) != 1: - print("get_servers_by_bibigrid_id requires 1 args") + print('get_servers_by_bibigrid_id requires 1 args') sys.exit(1) - pp.pprint( - client.get_servers_by_bibigrid_id( - args[0], - ) - ) + pp.pprint(client.get_servers_by_bibigrid_id(args[0],)) -elif cmd == "scale_up_cluster": +elif cmd == 'scale_up_cluster': if len(args) != 7: - print("scale_up_cluster requires 7 args") - sys.exit(1) - pp.pprint( - client.scale_up_cluster( - args[0], - args[1], - args[2], - eval(args[3]), - eval(args[4]), - eval(args[5]), - eval(args[6]), - ) - ) - -elif cmd == "add_cluster_machine": + print('scale_up_cluster requires 7 args') + sys.exit(1) + pp.pprint(client.scale_up_cluster(args[0], args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]), eval(args[6]),)) + +elif cmd == 'add_cluster_machine': if len(args) != 9: - print("add_cluster_machine requires 9 args") - sys.exit(1) - pp.pprint( - client.add_cluster_machine( - args[0], - args[1], - args[2], - args[3], - args[4], - args[5], - args[6], - eval(args[7]), - eval(args[8]), - ) - ) - -elif cmd == "get_cluster_info": + print('add_cluster_machine requires 9 args') + sys.exit(1) + pp.pprint(client.add_cluster_machine(args[0], args[1], args[2], args[3], args[4], args[5], args[6], eval(args[7]), eval(args[8]),)) + +elif cmd == 'get_cluster_info': if len(args) != 1: - print("get_cluster_info requires 1 args") + print('get_cluster_info requires 1 args') sys.exit(1) - pp.pprint( - client.get_cluster_info( - args[0], - ) - ) + pp.pprint(client.get_cluster_info(args[0],)) -elif cmd == "get_cluster_status": +elif cmd == 'get_cluster_status': if len(args) != 1: - print("get_cluster_status requires 1 args") + print('get_cluster_status requires 1 args') sys.exit(1) - pp.pprint( - client.get_cluster_status( - args[0], - ) - ) + pp.pprint(client.get_cluster_status(args[0],)) -elif cmd == "get_server": +elif cmd == 'get_server': if len(args) != 1: - print("get_server requires 1 args") + print('get_server requires 1 args') sys.exit(1) - pp.pprint( - client.get_server( - args[0], - ) - ) + pp.pprint(client.get_server(args[0],)) -elif cmd == "stop_server": +elif cmd == 'stop_server': if len(args) != 1: - print("stop_server requires 1 args") + print('stop_server requires 1 args') sys.exit(1) - pp.pprint( - client.stop_server( - args[0], - ) - ) + pp.pprint(client.stop_server(args[0],)) -elif cmd == "create_snapshot": +elif cmd == 'create_snapshot': if len(args) != 5: - print("create_snapshot requires 5 args") - sys.exit(1) - pp.pprint( - client.create_snapshot( - args[0], - args[1], - args[2], - eval(args[3]), - args[4], - ) - ) - -elif cmd == "get_limits": + print('create_snapshot requires 5 args') + sys.exit(1) + pp.pprint(client.create_snapshot(args[0], args[1], args[2], eval(args[3]), args[4],)) + +elif cmd == 'get_limits': if len(args) != 0: - print("get_limits requires 0 args") + print('get_limits requires 0 args') sys.exit(1) pp.pprint(client.get_limits()) -elif cmd == "start_cluster": +elif cmd == 'start_cluster': if len(args) != 4: - print("start_cluster requires 4 args") - sys.exit(1) - pp.pprint( - client.start_cluster( - args[0], - eval(args[1]), - eval(args[2]), - args[3], - ) - ) - -elif cmd == "terminate_cluster": + print('start_cluster requires 4 args') + sys.exit(1) + pp.pprint(client.start_cluster(args[0], eval(args[1]), eval(args[2]), args[3],)) + +elif cmd == 'terminate_cluster': if len(args) != 1: - print("terminate_cluster requires 1 args") + print('terminate_cluster requires 1 args') sys.exit(1) - pp.pprint( - client.terminate_cluster( - args[0], - ) - ) + pp.pprint(client.terminate_cluster(args[0],)) -elif cmd == "delete_image": +elif cmd == 'delete_image': if len(args) != 1: - print("delete_image requires 1 args") + print('delete_image requires 1 args') sys.exit(1) - pp.pprint( - client.delete_image( - args[0], - ) - ) + pp.pprint(client.delete_image(args[0],)) -elif cmd == "detach_volume": +elif cmd == 'detach_volume': if len(args) != 2: - print("detach_volume requires 2 args") + print('detach_volume requires 2 args') sys.exit(1) - pp.pprint( - client.detach_volume( - args[0], - args[1], - ) - ) + pp.pprint(client.detach_volume(args[0], args[1],)) -elif cmd == "delete_volume": +elif cmd == 'delete_volume': if len(args) != 1: - print("delete_volume requires 1 args") + print('delete_volume requires 1 args') sys.exit(1) - pp.pprint( - client.delete_volume( - args[0], - ) - ) + pp.pprint(client.delete_volume(args[0],)) -elif cmd == "attach_volume_to_server": +elif cmd == 'attach_volume_to_server': if len(args) != 2: - print("attach_volume_to_server requires 2 args") + print('attach_volume_to_server requires 2 args') sys.exit(1) - pp.pprint( - client.attach_volume_to_server( - args[0], - args[1], - ) - ) + pp.pprint(client.attach_volume_to_server(args[0], args[1],)) -elif cmd == "resume_server": +elif cmd == 'resume_server': if len(args) != 1: - print("resume_server requires 1 args") + print('resume_server requires 1 args') sys.exit(1) - pp.pprint( - client.resume_server( - args[0], - ) - ) + pp.pprint(client.resume_server(args[0],)) -elif cmd == "create_volume": +elif cmd == 'create_volume': if len(args) != 3: - print("create_volume requires 3 args") + print('create_volume requires 3 args') sys.exit(1) - pp.pprint( - client.create_volume( - args[0], - eval(args[1]), - eval(args[2]), - ) - ) + pp.pprint(client.create_volume(args[0], eval(args[1]), eval(args[2]),)) -elif cmd == "create_volume_by_source_volume": +elif cmd == 'create_volume_by_source_volume': if len(args) != 3: - print("create_volume_by_source_volume requires 3 args") + print('create_volume_by_source_volume requires 3 args') sys.exit(1) - pp.pprint( - client.create_volume_by_source_volume( - args[0], - eval(args[1]), - args[2], - ) - ) + pp.pprint(client.create_volume_by_source_volume(args[0], eval(args[1]), args[2],)) -elif cmd == "create_volume_by_volume_snap": +elif cmd == 'create_volume_by_volume_snap': if len(args) != 3: - print("create_volume_by_volume_snap requires 3 args") + print('create_volume_by_volume_snap requires 3 args') sys.exit(1) - pp.pprint( - client.create_volume_by_volume_snap( - args[0], - eval(args[1]), - args[2], - ) - ) + pp.pprint(client.create_volume_by_volume_snap(args[0], eval(args[1]), args[2],)) -elif cmd == "create_volume_snapshot": +elif cmd == 'create_volume_snapshot': if len(args) != 3: - print("create_volume_snapshot requires 3 args") + print('create_volume_snapshot requires 3 args') sys.exit(1) - pp.pprint( - client.create_volume_snapshot( - args[0], - args[1], - args[2], - ) - ) + pp.pprint(client.create_volume_snapshot(args[0], args[1], args[2],)) -elif cmd == "get_volume_snapshot": +elif cmd == 'get_volume_snapshot': if len(args) != 1: - print("get_volume_snapshot requires 1 args") + print('get_volume_snapshot requires 1 args') sys.exit(1) - pp.pprint( - client.get_volume_snapshot( - args[0], - ) - ) + pp.pprint(client.get_volume_snapshot(args[0],)) -elif cmd == "delete_volume_snapshot": +elif cmd == 'delete_volume_snapshot': if len(args) != 1: - print("delete_volume_snapshot requires 1 args") + print('delete_volume_snapshot requires 1 args') sys.exit(1) - pp.pprint( - client.delete_volume_snapshot( - args[0], - ) - ) + pp.pprint(client.delete_volume_snapshot(args[0],)) -elif cmd == "reboot_hard_server": +elif cmd == 'reboot_hard_server': if len(args) != 1: - print("reboot_hard_server requires 1 args") + print('reboot_hard_server requires 1 args') sys.exit(1) - pp.pprint( - client.reboot_hard_server( - args[0], - ) - ) + pp.pprint(client.reboot_hard_server(args[0],)) -elif cmd == "reboot_soft_server": +elif cmd == 'reboot_soft_server': if len(args) != 1: - print("reboot_soft_server requires 1 args") + print('reboot_soft_server requires 1 args') sys.exit(1) - pp.pprint( - client.reboot_soft_server( - args[0], - ) - ) + pp.pprint(client.reboot_soft_server(args[0],)) else: - print("Unrecognized method %s" % cmd) + print('Unrecognized method %s' % cmd) sys.exit(1) transport.close() diff --git a/simple_vm_client/VirtualMachineService.py b/simple_vm_client/VirtualMachineService.py index 461f7e0a..091e9742 100644 --- a/simple_vm_client/VirtualMachineService.py +++ b/simple_vm_client/VirtualMachineService.py @@ -1,19 +1,21 @@ # -# Autogenerated by Thrift Compiler (0.16.0) +# Autogenerated by Thrift Compiler (0.19.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # # options string: py # -import logging -import sys - -from thrift.Thrift import TApplicationException, TMessageType, TProcessor, TType -from thrift.transport import TTransport +from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException +from thrift.protocol.TProtocol import TProtocolException from thrift.TRecursive import fix_spec -from ttypes import * + +import sys +import logging +from .ttypes import * +from thrift.Thrift import TProcessor +from thrift.transport import TTransport all_structs = [] @@ -22,13 +24,13 @@ class Iface(object): This VirtualMachiine service deploys methods for creating,deleting,stopping etc. VirtualMachines in Openstack. """ - def is_version(self, version): """ Parameters: - version """ + pass def get_client_version(self): """ @@ -36,12 +38,14 @@ def get_client_version(self): Returns Version of the client """ + pass def get_gateway_ip(self): """ Gets the gateway ip. """ + pass def get_calculation_values(self): pass @@ -56,6 +60,7 @@ def import_keypair(self, keyname, public_key): - public_key: The public key """ + pass def get_vm_ports(self, openstack_id): """ @@ -66,6 +71,7 @@ def get_vm_ports(self, openstack_id): - openstack_id: Id of server """ + pass def add_udp_security_group(self, server_id): """ @@ -75,6 +81,7 @@ def add_udp_security_group(self, server_id): - server_id: OpenStack id of the server """ + pass def add_metadata_to_server(self, openstack_id, metadata): """ @@ -86,6 +93,7 @@ def add_metadata_to_server(self, openstack_id, metadata): - metadata """ + pass def get_flavors(self): """ @@ -93,6 +101,7 @@ def get_flavors(self): Returns: List of flavor instances. """ + pass def get_images(self): """ @@ -100,6 +109,7 @@ def get_images(self): Returns: List of Image instances. """ + pass def get_public_images(self): """ @@ -107,6 +117,7 @@ def get_public_images(self): Returns: List of public Image instances. """ + pass def get_private_images(self): """ @@ -114,6 +125,7 @@ def get_private_images(self): Returns: List of private Image instances. """ + pass def get_image(self, openstack_id, ignore_not_active): """ @@ -125,6 +137,7 @@ def get_image(self, openstack_id, ignore_not_active): - ignore_not_active """ + pass def get_volume(self, volume_id): """ @@ -132,6 +145,7 @@ def get_volume(self, volume_id): - volume_id """ + pass def get_volumes_by_ids(self, volume_ids): """ @@ -139,6 +153,7 @@ def get_volumes_by_ids(self, volume_ids): - volume_ids """ + pass def resize_volume(self, volume_id, size): """ @@ -147,10 +162,9 @@ def resize_volume(self, volume_id, size): - size """ + pass - def open_port_range_for_vm_in_project( - self, range_start, range_stop, openstack_id, ethertype, protocol - ): + def open_port_range_for_vm_in_project(self, range_start, range_stop, openstack_id, ethertype, protocol): """ Creates/Updates a security group for a vm with a specific port range for a project @@ -162,6 +176,7 @@ def open_port_range_for_vm_in_project( - protocol """ + pass def delete_security_group_rule(self, openstack_id): """ @@ -169,6 +184,7 @@ def delete_security_group_rule(self, openstack_id): - openstack_id """ + pass def delete_server(self, openstack_id): """ @@ -179,20 +195,9 @@ def delete_server(self, openstack_id): - openstack_id: Id of the server. """ + pass - def start_server( - self, - flavor_name, - image_name, - public_key, - servername, - metadata, - volume_ids_path_new, - volume_ids_path_attach, - additional_keys, - research_environment, - additional_security_group_ids, - ): + def start_server(self, flavor_name, image_name, public_key, servername, metadata, volume_ids_path_new, volume_ids_path_attach, additional_keys, research_environment, additional_security_group_ids): """ Parameters: - flavor_name: Name of the Flavor to use. @@ -207,6 +212,7 @@ def start_server( - additional_security_group_ids """ + pass def is_bibigrid_available(self): pass @@ -218,18 +224,9 @@ def detach_ip_from_server(self, server_id, floating_ip): - floating_ip """ + pass - def start_server_with_custom_key( - self, - flavor_name, - image_name, - servername, - metadata, - research_environment, - volume_ids_path_new, - volume_ids_path_attach, - additional_security_group_ids, - ): + def start_server_with_custom_key(self, flavor_name, image_name, servername, metadata, research_environment, volume_ids_path_new, volume_ids_path_attach, additional_security_group_ids): """ Start a new server with custom key for ansible. @@ -244,6 +241,7 @@ def start_server_with_custom_key( - additional_security_group_ids """ + pass def exist_server(self, name): """ @@ -253,17 +251,9 @@ def exist_server(self, name): - name """ + pass - def create_and_deploy_playbook( - self, - public_key, - openstack_id, - conda_packages, - research_environment_template, - apt_packages, - create_only_backend, - base_url, - ): + def create_and_deploy_playbook(self, public_key, openstack_id, conda_packages, research_environment_template, apt_packages, create_only_backend, base_url): """ Create and deploy an ansible playbook @@ -277,6 +267,7 @@ def create_and_deploy_playbook( - base_url """ + pass def get_playbook_logs(self, openstack_id): """ @@ -286,12 +277,14 @@ def get_playbook_logs(self, openstack_id): - openstack_id """ + pass def has_forc(self): """ Get boolean if client has backend url configured """ + pass def get_forc_url(self): pass @@ -307,12 +300,14 @@ def create_backend(self, owner, user_path, template, upstream_url): - upstream_url """ + pass def get_backends(self): """ Get all backends """ + pass def get_backends_by_owner(self, owner): """ @@ -322,6 +317,7 @@ def get_backends_by_owner(self, owner): - owner """ + pass def get_backends_by_template(self, template): """ @@ -331,6 +327,7 @@ def get_backends_by_template(self, template): - template """ + pass def get_backend_by_id(self, id): """ @@ -340,6 +337,7 @@ def get_backend_by_id(self, id): - id """ + pass def delete_backend(self, id): """ @@ -349,6 +347,7 @@ def delete_backend(self, id): - id """ + pass def add_user_to_backend(self, backend_id, user_id): """ @@ -359,6 +358,7 @@ def add_user_to_backend(self, backend_id, user_id): - user_id """ + pass def get_users_from_backend(self, backend_id): """ @@ -368,6 +368,7 @@ def get_users_from_backend(self, backend_id): - backend_id """ + pass def delete_user_from_backend(self, backend_id, user_id): """ @@ -378,6 +379,7 @@ def delete_user_from_backend(self, backend_id, user_id): - user_id """ + pass def get_allowed_templates(self): pass @@ -388,6 +390,7 @@ def get_servers(self): Returns: List of server instances. """ + pass def get_servers_by_ids(self, server_ids): """ @@ -398,6 +401,7 @@ def get_servers_by_ids(self, server_ids): - server_ids """ + pass def get_servers_by_bibigrid_id(self, bibigrid_id): """ @@ -408,10 +412,9 @@ def get_servers_by_bibigrid_id(self, bibigrid_id): - bibigrid_id """ + pass - def scale_up_cluster( - self, cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx - ): + def scale_up_cluster(self, cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx): """ Parameters: - cluster_id @@ -423,19 +426,9 @@ def scale_up_cluster( - batch_idx """ + pass - def add_cluster_machine( - self, - cluster_id, - cluster_user, - cluster_group_id, - image_name, - flavor_name, - name, - key_name, - batch_idx, - worker_idx, - ): + def add_cluster_machine(self, cluster_id, cluster_user, cluster_group_id, image_name, flavor_name, name, key_name, batch_idx, worker_idx): """ Parameters: - cluster_id @@ -449,6 +442,7 @@ def add_cluster_machine( - worker_idx """ + pass def get_cluster_info(self, cluster_id): """ @@ -456,6 +450,7 @@ def get_cluster_info(self, cluster_id): - cluster_id """ + pass def get_cluster_status(self, cluster_id): """ @@ -463,6 +458,7 @@ def get_cluster_status(self, cluster_id): - cluster_id """ + pass def get_server(self, openstack_id): """ @@ -473,6 +469,7 @@ def get_server(self, openstack_id): - openstack_id: Id of the server. """ + pass def stop_server(self, openstack_id): """ @@ -483,6 +480,7 @@ def stop_server(self, openstack_id): - openstack_id: Id of the server. """ + pass def create_snapshot(self, openstack_id, name, username, base_tags, description): """ @@ -498,6 +496,7 @@ def create_snapshot(self, openstack_id, name, username, base_tags, description): - description: Description of the new snapshot """ + pass def get_limits(self): """ @@ -507,6 +506,7 @@ def get_limits(self): 'totalInstancesUsed': totalInstancesUsed} """ + pass def start_cluster(self, public_key, master_instance, worker_instances, user): """ @@ -517,6 +517,7 @@ def start_cluster(self, public_key, master_instance, worker_instances, user): - user """ + pass def terminate_cluster(self, cluster_id): """ @@ -524,6 +525,7 @@ def terminate_cluster(self, cluster_id): - cluster_id """ + pass def delete_image(self, image_id): """ @@ -534,6 +536,7 @@ def delete_image(self, image_id): - image_id: Id of image """ + pass def detach_volume(self, volume_id, server_id): """ @@ -544,6 +547,7 @@ def detach_volume(self, volume_id, server_id): - server_id: Id of the server where the volume is attached """ + pass def delete_volume(self, volume_id): """ @@ -553,6 +557,7 @@ def delete_volume(self, volume_id): - volume_id """ + pass def attach_volume_to_server(self, openstack_id, volume_id): """ @@ -564,6 +569,7 @@ def attach_volume_to_server(self, openstack_id, volume_id): - volume_id: Id of volume """ + pass def resume_server(self, openstack_id): """ @@ -573,6 +579,7 @@ def resume_server(self, openstack_id): - openstack_id: Id of the server """ + pass def create_volume(self, volume_name, volume_storage, metadata): """ @@ -584,6 +591,7 @@ def create_volume(self, volume_name, volume_storage, metadata): - metadata: Metadata for the new volume """ + pass def create_volume_by_source_volume(self, volume_name, metadata, source_volume_id): """ @@ -595,6 +603,7 @@ def create_volume_by_source_volume(self, volume_name, metadata, source_volume_id - source_volume_id: ID of source volume """ + pass def create_volume_by_volume_snap(self, volume_name, metadata, volume_snap_id): """ @@ -606,6 +615,7 @@ def create_volume_by_volume_snap(self, volume_name, metadata, volume_snap_id): - volume_snap_id: ID of volume snapshot """ + pass def create_volume_snapshot(self, volume_id, name, description): """ @@ -618,6 +628,7 @@ def create_volume_snapshot(self, volume_id, name, description): - description: Description for the volume snapshot """ + pass def get_volume_snapshot(self, name_or_id): """ @@ -628,6 +639,7 @@ def get_volume_snapshot(self, name_or_id): - name_or_id: Name or ID of volume snapshot """ + pass def delete_volume_snapshot(self, snapshot_id): """ @@ -637,6 +649,7 @@ def delete_volume_snapshot(self, snapshot_id): - snapshot_id """ + pass def reboot_hard_server(self, openstack_id): """ @@ -646,6 +659,7 @@ def reboot_hard_server(self, openstack_id): - openstack_id: Id of the server """ + pass def reboot_soft_server(self, openstack_id): """ @@ -655,6 +669,7 @@ def reboot_soft_server(self, openstack_id): - openstack_id: Id of the server """ + pass class Client(Iface): @@ -662,7 +677,6 @@ class Client(Iface): This VirtualMachiine service deploys methods for creating,deleting,stopping etc. VirtualMachines in Openstack. """ - def __init__(self, iprot, oprot=None): self._iprot = self._oprot = iprot if oprot is not None: @@ -679,7 +693,7 @@ def is_version(self, version): return self.recv_is_version() def send_is_version(self, version): - self._oprot.writeMessageBegin("is_version", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('is_version', TMessageType.CALL, self._seqid) args = is_version_args() args.version = version args.write(self._oprot) @@ -699,9 +713,7 @@ def recv_is_version(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "is_version failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "is_version failed: unknown result") def get_client_version(self): """ @@ -713,9 +725,7 @@ def get_client_version(self): return self.recv_get_client_version() def send_get_client_version(self): - self._oprot.writeMessageBegin( - "get_client_version", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_client_version', TMessageType.CALL, self._seqid) args = get_client_version_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -734,10 +744,7 @@ def recv_get_client_version(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_client_version failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_client_version failed: unknown result") def get_gateway_ip(self): """ @@ -748,7 +755,7 @@ def get_gateway_ip(self): return self.recv_get_gateway_ip() def send_get_gateway_ip(self): - self._oprot.writeMessageBegin("get_gateway_ip", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_gateway_ip', TMessageType.CALL, self._seqid) args = get_gateway_ip_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -767,19 +774,14 @@ def recv_get_gateway_ip(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_gateway_ip failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_gateway_ip failed: unknown result") def get_calculation_values(self): self.send_get_calculation_values() return self.recv_get_calculation_values() def send_get_calculation_values(self): - self._oprot.writeMessageBegin( - "get_calculation_values", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_calculation_values', TMessageType.CALL, self._seqid) args = get_calculation_values_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -798,10 +800,7 @@ def recv_get_calculation_values(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_calculation_values failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_calculation_values failed: unknown result") def import_keypair(self, keyname, public_key): """ @@ -817,7 +816,7 @@ def import_keypair(self, keyname, public_key): return self.recv_import_keypair() def send_import_keypair(self, keyname, public_key): - self._oprot.writeMessageBegin("import_keypair", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('import_keypair', TMessageType.CALL, self._seqid) args = import_keypair_args() args.keyname = keyname args.public_key = public_key @@ -838,10 +837,7 @@ def recv_import_keypair(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "import_keypair failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "import_keypair failed: unknown result") def get_vm_ports(self, openstack_id): """ @@ -856,7 +852,7 @@ def get_vm_ports(self, openstack_id): return self.recv_get_vm_ports() def send_get_vm_ports(self, openstack_id): - self._oprot.writeMessageBegin("get_vm_ports", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_vm_ports', TMessageType.CALL, self._seqid) args = get_vm_ports_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -878,9 +874,7 @@ def recv_get_vm_ports(self): return result.success if result.s is not None: raise result.s - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_vm_ports failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_vm_ports failed: unknown result") def add_udp_security_group(self, server_id): """ @@ -894,9 +888,7 @@ def add_udp_security_group(self, server_id): self.recv_add_udp_security_group() def send_add_udp_security_group(self, server_id): - self._oprot.writeMessageBegin( - "add_udp_security_group", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('add_udp_security_group', TMessageType.CALL, self._seqid) args = add_udp_security_group_args() args.server_id = server_id args.write(self._oprot) @@ -934,9 +926,7 @@ def add_metadata_to_server(self, openstack_id, metadata): return self.recv_add_metadata_to_server() def send_add_metadata_to_server(self, openstack_id, metadata): - self._oprot.writeMessageBegin( - "add_metadata_to_server", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('add_metadata_to_server', TMessageType.CALL, self._seqid) args = add_metadata_to_server_args() args.openstack_id = openstack_id args.metadata = metadata @@ -961,10 +951,7 @@ def recv_add_metadata_to_server(self): raise result.r if result.s is not None: raise result.s - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "add_metadata_to_server failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "add_metadata_to_server failed: unknown result") def get_flavors(self): """ @@ -976,7 +963,7 @@ def get_flavors(self): return self.recv_get_flavors() def send_get_flavors(self): - self._oprot.writeMessageBegin("get_flavors", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_flavors', TMessageType.CALL, self._seqid) args = get_flavors_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -995,9 +982,7 @@ def recv_get_flavors(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_flavors failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_flavors failed: unknown result") def get_images(self): """ @@ -1009,7 +994,7 @@ def get_images(self): return self.recv_get_images() def send_get_images(self): - self._oprot.writeMessageBegin("get_images", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_images', TMessageType.CALL, self._seqid) args = get_images_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1028,9 +1013,7 @@ def recv_get_images(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_images failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_images failed: unknown result") def get_public_images(self): """ @@ -1042,9 +1025,7 @@ def get_public_images(self): return self.recv_get_public_images() def send_get_public_images(self): - self._oprot.writeMessageBegin( - "get_public_images", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_public_images', TMessageType.CALL, self._seqid) args = get_public_images_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1063,10 +1044,7 @@ def recv_get_public_images(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_public_images failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_public_images failed: unknown result") def get_private_images(self): """ @@ -1078,9 +1056,7 @@ def get_private_images(self): return self.recv_get_private_images() def send_get_private_images(self): - self._oprot.writeMessageBegin( - "get_private_images", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_private_images', TMessageType.CALL, self._seqid) args = get_private_images_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1099,10 +1075,7 @@ def recv_get_private_images(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_private_images failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_private_images failed: unknown result") def get_image(self, openstack_id, ignore_not_active): """ @@ -1118,7 +1091,7 @@ def get_image(self, openstack_id, ignore_not_active): return self.recv_get_image() def send_get_image(self, openstack_id, ignore_not_active): - self._oprot.writeMessageBegin("get_image", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_image', TMessageType.CALL, self._seqid) args = get_image_args() args.openstack_id = openstack_id args.ignore_not_active = ignore_not_active @@ -1141,9 +1114,7 @@ def recv_get_image(self): return result.success if result.i is not None: raise result.i - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_image failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_image failed: unknown result") def get_volume(self, volume_id): """ @@ -1155,7 +1126,7 @@ def get_volume(self, volume_id): return self.recv_get_volume() def send_get_volume(self, volume_id): - self._oprot.writeMessageBegin("get_volume", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_volume', TMessageType.CALL, self._seqid) args = get_volume_args() args.volume_id = volume_id args.write(self._oprot) @@ -1177,9 +1148,7 @@ def recv_get_volume(self): return result.success if result.v is not None: raise result.v - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_volume failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_volume failed: unknown result") def get_volumes_by_ids(self, volume_ids): """ @@ -1191,9 +1160,7 @@ def get_volumes_by_ids(self, volume_ids): return self.recv_get_volumes_by_ids() def send_get_volumes_by_ids(self, volume_ids): - self._oprot.writeMessageBegin( - "get_volumes_by_ids", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_volumes_by_ids', TMessageType.CALL, self._seqid) args = get_volumes_by_ids_args() args.volume_ids = volume_ids args.write(self._oprot) @@ -1213,10 +1180,7 @@ def recv_get_volumes_by_ids(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_volumes_by_ids failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_volumes_by_ids failed: unknown result") def resize_volume(self, volume_id, size): """ @@ -1229,7 +1193,7 @@ def resize_volume(self, volume_id, size): self.recv_resize_volume() def send_resize_volume(self, volume_id, size): - self._oprot.writeMessageBegin("resize_volume", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('resize_volume', TMessageType.CALL, self._seqid) args = resize_volume_args() args.volume_id = volume_id args.size = size @@ -1252,9 +1216,7 @@ def recv_resize_volume(self): raise result.v return - def open_port_range_for_vm_in_project( - self, range_start, range_stop, openstack_id, ethertype, protocol - ): + def open_port_range_for_vm_in_project(self, range_start, range_stop, openstack_id, ethertype, protocol): """ Creates/Updates a security group for a vm with a specific port range for a project @@ -1266,17 +1228,11 @@ def open_port_range_for_vm_in_project( - protocol """ - self.send_open_port_range_for_vm_in_project( - range_start, range_stop, openstack_id, ethertype, protocol - ) + self.send_open_port_range_for_vm_in_project(range_start, range_stop, openstack_id, ethertype, protocol) return self.recv_open_port_range_for_vm_in_project() - def send_open_port_range_for_vm_in_project( - self, range_start, range_stop, openstack_id, ethertype, protocol - ): - self._oprot.writeMessageBegin( - "open_port_range_for_vm_in_project", TMessageType.CALL, self._seqid - ) + def send_open_port_range_for_vm_in_project(self, range_start, range_stop, openstack_id, ethertype, protocol): + self._oprot.writeMessageBegin('open_port_range_for_vm_in_project', TMessageType.CALL, self._seqid) args = open_port_range_for_vm_in_project_args() args.range_start = range_start args.range_stop = range_stop @@ -1306,10 +1262,7 @@ def recv_open_port_range_for_vm_in_project(self): raise result.v if result.o is not None: raise result.o - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "open_port_range_for_vm_in_project failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "open_port_range_for_vm_in_project failed: unknown result") def delete_security_group_rule(self, openstack_id): """ @@ -1321,9 +1274,7 @@ def delete_security_group_rule(self, openstack_id): self.recv_delete_security_group_rule() def send_delete_security_group_rule(self, openstack_id): - self._oprot.writeMessageBegin( - "delete_security_group_rule", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('delete_security_group_rule', TMessageType.CALL, self._seqid) args = delete_security_group_rule_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -1343,6 +1294,8 @@ def recv_delete_security_group_rule(self): iprot.readMessageEnd() if result.e is not None: raise result.e + if result.f is not None: + raise result.f return def delete_server(self, openstack_id): @@ -1358,7 +1311,7 @@ def delete_server(self, openstack_id): self.recv_delete_server() def send_delete_server(self, openstack_id): - self._oprot.writeMessageBegin("delete_server", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('delete_server', TMessageType.CALL, self._seqid) args = delete_server_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -1382,19 +1335,7 @@ def recv_delete_server(self): raise result.c return - def start_server( - self, - flavor_name, - image_name, - public_key, - servername, - metadata, - volume_ids_path_new, - volume_ids_path_attach, - additional_keys, - research_environment, - additional_security_group_ids, - ): + def start_server(self, flavor_name, image_name, public_key, servername, metadata, volume_ids_path_new, volume_ids_path_attach, additional_keys, research_environment, additional_security_group_ids): """ Parameters: - flavor_name: Name of the Flavor to use. @@ -1409,34 +1350,11 @@ def start_server( - additional_security_group_ids """ - self.send_start_server( - flavor_name, - image_name, - public_key, - servername, - metadata, - volume_ids_path_new, - volume_ids_path_attach, - additional_keys, - research_environment, - additional_security_group_ids, - ) + self.send_start_server(flavor_name, image_name, public_key, servername, metadata, volume_ids_path_new, volume_ids_path_attach, additional_keys, research_environment, additional_security_group_ids) return self.recv_start_server() - def send_start_server( - self, - flavor_name, - image_name, - public_key, - servername, - metadata, - volume_ids_path_new, - volume_ids_path_attach, - additional_keys, - research_environment, - additional_security_group_ids, - ): - self._oprot.writeMessageBegin("start_server", TMessageType.CALL, self._seqid) + def send_start_server(self, flavor_name, image_name, public_key, servername, metadata, volume_ids_path_new, volume_ids_path_attach, additional_keys, research_environment, additional_security_group_ids): + self._oprot.writeMessageBegin('start_server', TMessageType.CALL, self._seqid) args = start_server_args() args.flavor_name = flavor_name args.image_name = image_name @@ -1475,18 +1393,14 @@ def recv_start_server(self): raise result.f if result.o is not None: raise result.o - raise TApplicationException( - TApplicationException.MISSING_RESULT, "start_server failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "start_server failed: unknown result") def is_bibigrid_available(self): self.send_is_bibigrid_available() return self.recv_is_bibigrid_available() def send_is_bibigrid_available(self): - self._oprot.writeMessageBegin( - "is_bibigrid_available", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('is_bibigrid_available', TMessageType.CALL, self._seqid) args = is_bibigrid_available_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1505,10 +1419,7 @@ def recv_is_bibigrid_available(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "is_bibigrid_available failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "is_bibigrid_available failed: unknown result") def detach_ip_from_server(self, server_id, floating_ip): """ @@ -1521,9 +1432,7 @@ def detach_ip_from_server(self, server_id, floating_ip): self.recv_detach_ip_from_server() def send_detach_ip_from_server(self, server_id, floating_ip): - self._oprot.writeMessageBegin( - "detach_ip_from_server", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('detach_ip_from_server', TMessageType.CALL, self._seqid) args = detach_ip_from_server_args() args.server_id = server_id args.floating_ip = floating_ip @@ -1546,17 +1455,7 @@ def recv_detach_ip_from_server(self): raise result.s return - def start_server_with_custom_key( - self, - flavor_name, - image_name, - servername, - metadata, - research_environment, - volume_ids_path_new, - volume_ids_path_attach, - additional_security_group_ids, - ): + def start_server_with_custom_key(self, flavor_name, image_name, servername, metadata, research_environment, volume_ids_path_new, volume_ids_path_attach, additional_security_group_ids): """ Start a new server with custom key for ansible. @@ -1571,32 +1470,11 @@ def start_server_with_custom_key( - additional_security_group_ids """ - self.send_start_server_with_custom_key( - flavor_name, - image_name, - servername, - metadata, - research_environment, - volume_ids_path_new, - volume_ids_path_attach, - additional_security_group_ids, - ) + self.send_start_server_with_custom_key(flavor_name, image_name, servername, metadata, research_environment, volume_ids_path_new, volume_ids_path_attach, additional_security_group_ids) return self.recv_start_server_with_custom_key() - def send_start_server_with_custom_key( - self, - flavor_name, - image_name, - servername, - metadata, - research_environment, - volume_ids_path_new, - volume_ids_path_attach, - additional_security_group_ids, - ): - self._oprot.writeMessageBegin( - "start_server_with_custom_key", TMessageType.CALL, self._seqid - ) + def send_start_server_with_custom_key(self, flavor_name, image_name, servername, metadata, research_environment, volume_ids_path_new, volume_ids_path_attach, additional_security_group_ids): + self._oprot.writeMessageBegin('start_server_with_custom_key', TMessageType.CALL, self._seqid) args = start_server_with_custom_key_args() args.flavor_name = flavor_name args.image_name = image_name @@ -1633,10 +1511,7 @@ def recv_start_server_with_custom_key(self): raise result.f if result.d is not None: raise result.d - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "start_server_with_custom_key failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "start_server_with_custom_key failed: unknown result") def exist_server(self, name): """ @@ -1650,7 +1525,7 @@ def exist_server(self, name): return self.recv_exist_server() def send_exist_server(self, name): - self._oprot.writeMessageBegin("exist_server", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('exist_server', TMessageType.CALL, self._seqid) args = exist_server_args() args.name = name args.write(self._oprot) @@ -1670,20 +1545,9 @@ def recv_exist_server(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "exist_server failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "exist_server failed: unknown result") - def create_and_deploy_playbook( - self, - public_key, - openstack_id, - conda_packages, - research_environment_template, - apt_packages, - create_only_backend, - base_url, - ): + def create_and_deploy_playbook(self, public_key, openstack_id, conda_packages, research_environment_template, apt_packages, create_only_backend, base_url): """ Create and deploy an ansible playbook @@ -1697,30 +1561,11 @@ def create_and_deploy_playbook( - base_url """ - self.send_create_and_deploy_playbook( - public_key, - openstack_id, - conda_packages, - research_environment_template, - apt_packages, - create_only_backend, - base_url, - ) + self.send_create_and_deploy_playbook(public_key, openstack_id, conda_packages, research_environment_template, apt_packages, create_only_backend, base_url) return self.recv_create_and_deploy_playbook() - def send_create_and_deploy_playbook( - self, - public_key, - openstack_id, - conda_packages, - research_environment_template, - apt_packages, - create_only_backend, - base_url, - ): - self._oprot.writeMessageBegin( - "create_and_deploy_playbook", TMessageType.CALL, self._seqid - ) + def send_create_and_deploy_playbook(self, public_key, openstack_id, conda_packages, research_environment_template, apt_packages, create_only_backend, base_url): + self._oprot.writeMessageBegin('create_and_deploy_playbook', TMessageType.CALL, self._seqid) args = create_and_deploy_playbook_args() args.public_key = public_key args.openstack_id = openstack_id @@ -1748,10 +1593,7 @@ def recv_create_and_deploy_playbook(self): return result.success if result.s is not None: raise result.s - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "create_and_deploy_playbook failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_and_deploy_playbook failed: unknown result") def get_playbook_logs(self, openstack_id): """ @@ -1765,9 +1607,7 @@ def get_playbook_logs(self, openstack_id): return self.recv_get_playbook_logs() def send_get_playbook_logs(self, openstack_id): - self._oprot.writeMessageBegin( - "get_playbook_logs", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_playbook_logs', TMessageType.CALL, self._seqid) args = get_playbook_logs_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -1789,10 +1629,7 @@ def recv_get_playbook_logs(self): return result.success if result.p is not None: raise result.p - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_playbook_logs failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_playbook_logs failed: unknown result") def has_forc(self): """ @@ -1803,7 +1640,7 @@ def has_forc(self): return self.recv_has_forc() def send_has_forc(self): - self._oprot.writeMessageBegin("has_forc", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('has_forc', TMessageType.CALL, self._seqid) args = has_forc_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1822,16 +1659,14 @@ def recv_has_forc(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "has_forc failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "has_forc failed: unknown result") def get_forc_url(self): self.send_get_forc_url() return self.recv_get_forc_url() def send_get_forc_url(self): - self._oprot.writeMessageBegin("get_forc_url", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_forc_url', TMessageType.CALL, self._seqid) args = get_forc_url_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1850,9 +1685,7 @@ def recv_get_forc_url(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_forc_url failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_forc_url failed: unknown result") def create_backend(self, owner, user_path, template, upstream_url): """ @@ -1869,7 +1702,7 @@ def create_backend(self, owner, user_path, template, upstream_url): return self.recv_create_backend() def send_create_backend(self, owner, user_path, template, upstream_url): - self._oprot.writeMessageBegin("create_backend", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('create_backend', TMessageType.CALL, self._seqid) args = create_backend_args() args.owner = owner args.user_path = user_path @@ -1896,10 +1729,7 @@ def recv_create_backend(self): raise result.e if result.d is not None: raise result.d - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "create_backend failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_backend failed: unknown result") def get_backends(self): """ @@ -1910,7 +1740,7 @@ def get_backends(self): return self.recv_get_backends() def send_get_backends(self): - self._oprot.writeMessageBegin("get_backends", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_backends', TMessageType.CALL, self._seqid) args = get_backends_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -1931,9 +1761,7 @@ def recv_get_backends(self): return result.success if result.d is not None: raise result.d - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_backends failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_backends failed: unknown result") def get_backends_by_owner(self, owner): """ @@ -1947,9 +1775,7 @@ def get_backends_by_owner(self, owner): return self.recv_get_backends_by_owner() def send_get_backends_by_owner(self, owner): - self._oprot.writeMessageBegin( - "get_backends_by_owner", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_backends_by_owner', TMessageType.CALL, self._seqid) args = get_backends_by_owner_args() args.owner = owner args.write(self._oprot) @@ -1971,10 +1797,7 @@ def recv_get_backends_by_owner(self): return result.success if result.d is not None: raise result.d - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_backends_by_owner failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_backends_by_owner failed: unknown result") def get_backends_by_template(self, template): """ @@ -1988,9 +1811,7 @@ def get_backends_by_template(self, template): return self.recv_get_backends_by_template() def send_get_backends_by_template(self, template): - self._oprot.writeMessageBegin( - "get_backends_by_template", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_backends_by_template', TMessageType.CALL, self._seqid) args = get_backends_by_template_args() args.template = template args.write(self._oprot) @@ -2012,10 +1833,7 @@ def recv_get_backends_by_template(self): return result.success if result.d is not None: raise result.d - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_backends_by_template failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_backends_by_template failed: unknown result") def get_backend_by_id(self, id): """ @@ -2029,9 +1847,7 @@ def get_backend_by_id(self, id): return self.recv_get_backend_by_id() def send_get_backend_by_id(self, id): - self._oprot.writeMessageBegin( - "get_backend_by_id", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_backend_by_id', TMessageType.CALL, self._seqid) args = get_backend_by_id_args() args.id = id args.write(self._oprot) @@ -2055,10 +1871,7 @@ def recv_get_backend_by_id(self): raise result.b if result.d is not None: raise result.d - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_backend_by_id failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_backend_by_id failed: unknown result") def delete_backend(self, id): """ @@ -2072,7 +1885,7 @@ def delete_backend(self, id): self.recv_delete_backend() def send_delete_backend(self, id): - self._oprot.writeMessageBegin("delete_backend", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('delete_backend', TMessageType.CALL, self._seqid) args = delete_backend_args() args.id = id args.write(self._oprot) @@ -2107,9 +1920,7 @@ def add_user_to_backend(self, backend_id, user_id): return self.recv_add_user_to_backend() def send_add_user_to_backend(self, backend_id, user_id): - self._oprot.writeMessageBegin( - "add_user_to_backend", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('add_user_to_backend', TMessageType.CALL, self._seqid) args = add_user_to_backend_args() args.backend_id = backend_id args.user_id = user_id @@ -2132,10 +1943,7 @@ def recv_add_user_to_backend(self): return result.success if result.b is not None: raise result.b - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "add_user_to_backend failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "add_user_to_backend failed: unknown result") def get_users_from_backend(self, backend_id): """ @@ -2149,9 +1957,7 @@ def get_users_from_backend(self, backend_id): return self.recv_get_users_from_backend() def send_get_users_from_backend(self, backend_id): - self._oprot.writeMessageBegin( - "get_users_from_backend", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_users_from_backend', TMessageType.CALL, self._seqid) args = get_users_from_backend_args() args.backend_id = backend_id args.write(self._oprot) @@ -2173,10 +1979,7 @@ def recv_get_users_from_backend(self): return result.success if result.b is not None: raise result.b - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_users_from_backend failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_users_from_backend failed: unknown result") def delete_user_from_backend(self, backend_id, user_id): """ @@ -2191,9 +1994,7 @@ def delete_user_from_backend(self, backend_id, user_id): return self.recv_delete_user_from_backend() def send_delete_user_from_backend(self, backend_id, user_id): - self._oprot.writeMessageBegin( - "delete_user_from_backend", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('delete_user_from_backend', TMessageType.CALL, self._seqid) args = delete_user_from_backend_args() args.backend_id = backend_id args.user_id = user_id @@ -2216,19 +2017,14 @@ def recv_delete_user_from_backend(self): return result.success if result.b is not None: raise result.b - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "delete_user_from_backend failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "delete_user_from_backend failed: unknown result") def get_allowed_templates(self): self.send_get_allowed_templates() return self.recv_get_allowed_templates() def send_get_allowed_templates(self): - self._oprot.writeMessageBegin( - "get_allowed_templates", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_allowed_templates', TMessageType.CALL, self._seqid) args = get_allowed_templates_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -2247,10 +2043,7 @@ def recv_get_allowed_templates(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_allowed_templates failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_allowed_templates failed: unknown result") def get_servers(self): """ @@ -2262,7 +2055,7 @@ def get_servers(self): return self.recv_get_servers() def send_get_servers(self): - self._oprot.writeMessageBegin("get_servers", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_servers', TMessageType.CALL, self._seqid) args = get_servers_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -2281,9 +2074,7 @@ def recv_get_servers(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_servers failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_servers failed: unknown result") def get_servers_by_ids(self, server_ids): """ @@ -2298,9 +2089,7 @@ def get_servers_by_ids(self, server_ids): return self.recv_get_servers_by_ids() def send_get_servers_by_ids(self, server_ids): - self._oprot.writeMessageBegin( - "get_servers_by_ids", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_servers_by_ids', TMessageType.CALL, self._seqid) args = get_servers_by_ids_args() args.server_ids = server_ids args.write(self._oprot) @@ -2320,10 +2109,7 @@ def recv_get_servers_by_ids(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_servers_by_ids failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_servers_by_ids failed: unknown result") def get_servers_by_bibigrid_id(self, bibigrid_id): """ @@ -2338,9 +2124,7 @@ def get_servers_by_bibigrid_id(self, bibigrid_id): return self.recv_get_servers_by_bibigrid_id() def send_get_servers_by_bibigrid_id(self, bibigrid_id): - self._oprot.writeMessageBegin( - "get_servers_by_bibigrid_id", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_servers_by_bibigrid_id', TMessageType.CALL, self._seqid) args = get_servers_by_bibigrid_id_args() args.bibigrid_id = bibigrid_id args.write(self._oprot) @@ -2360,14 +2144,9 @@ def recv_get_servers_by_bibigrid_id(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_servers_by_bibigrid_id failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_servers_by_bibigrid_id failed: unknown result") - def scale_up_cluster( - self, cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx - ): + def scale_up_cluster(self, cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx): """ Parameters: - cluster_id @@ -2379,17 +2158,11 @@ def scale_up_cluster( - batch_idx """ - self.send_scale_up_cluster( - cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx - ) + self.send_scale_up_cluster(cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx) return self.recv_scale_up_cluster() - def send_scale_up_cluster( - self, cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx - ): - self._oprot.writeMessageBegin( - "scale_up_cluster", TMessageType.CALL, self._seqid - ) + def send_scale_up_cluster(self, cluster_id, image_name, flavor_name, count, names, start_idx, batch_idx): + self._oprot.writeMessageBegin('scale_up_cluster', TMessageType.CALL, self._seqid) args = scale_up_cluster_args() args.cluster_id = cluster_id args.image_name = image_name @@ -2415,23 +2188,9 @@ def recv_scale_up_cluster(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "scale_up_cluster failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "scale_up_cluster failed: unknown result") - def add_cluster_machine( - self, - cluster_id, - cluster_user, - cluster_group_id, - image_name, - flavor_name, - name, - key_name, - batch_idx, - worker_idx, - ): + def add_cluster_machine(self, cluster_id, cluster_user, cluster_group_id, image_name, flavor_name, name, key_name, batch_idx, worker_idx): """ Parameters: - cluster_id @@ -2445,34 +2204,11 @@ def add_cluster_machine( - worker_idx """ - self.send_add_cluster_machine( - cluster_id, - cluster_user, - cluster_group_id, - image_name, - flavor_name, - name, - key_name, - batch_idx, - worker_idx, - ) + self.send_add_cluster_machine(cluster_id, cluster_user, cluster_group_id, image_name, flavor_name, name, key_name, batch_idx, worker_idx) return self.recv_add_cluster_machine() - def send_add_cluster_machine( - self, - cluster_id, - cluster_user, - cluster_group_id, - image_name, - flavor_name, - name, - key_name, - batch_idx, - worker_idx, - ): - self._oprot.writeMessageBegin( - "add_cluster_machine", TMessageType.CALL, self._seqid - ) + def send_add_cluster_machine(self, cluster_id, cluster_user, cluster_group_id, image_name, flavor_name, name, key_name, batch_idx, worker_idx): + self._oprot.writeMessageBegin('add_cluster_machine', TMessageType.CALL, self._seqid) args = add_cluster_machine_args() args.cluster_id = cluster_id args.cluster_user = cluster_user @@ -2500,10 +2236,7 @@ def recv_add_cluster_machine(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "add_cluster_machine failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "add_cluster_machine failed: unknown result") def get_cluster_info(self, cluster_id): """ @@ -2515,9 +2248,7 @@ def get_cluster_info(self, cluster_id): return self.recv_get_cluster_info() def send_get_cluster_info(self, cluster_id): - self._oprot.writeMessageBegin( - "get_cluster_info", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_cluster_info', TMessageType.CALL, self._seqid) args = get_cluster_info_args() args.cluster_id = cluster_id args.write(self._oprot) @@ -2539,10 +2270,7 @@ def recv_get_cluster_info(self): return result.success if result.c is not None: raise result.c - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_cluster_info failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_cluster_info failed: unknown result") def get_cluster_status(self, cluster_id): """ @@ -2554,9 +2282,7 @@ def get_cluster_status(self, cluster_id): return self.recv_get_cluster_status() def send_get_cluster_status(self, cluster_id): - self._oprot.writeMessageBegin( - "get_cluster_status", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_cluster_status', TMessageType.CALL, self._seqid) args = get_cluster_status_args() args.cluster_id = cluster_id args.write(self._oprot) @@ -2578,10 +2304,7 @@ def recv_get_cluster_status(self): return result.success if result.c is not None: raise result.c - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_cluster_status failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_cluster_status failed: unknown result") def get_server(self, openstack_id): """ @@ -2596,7 +2319,7 @@ def get_server(self, openstack_id): return self.recv_get_server() def send_get_server(self, openstack_id): - self._oprot.writeMessageBegin("get_server", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_server', TMessageType.CALL, self._seqid) args = get_server_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -2618,9 +2341,7 @@ def recv_get_server(self): return result.success if result.e is not None: raise result.e - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_server failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_server failed: unknown result") def stop_server(self, openstack_id): """ @@ -2635,7 +2356,7 @@ def stop_server(self, openstack_id): self.recv_stop_server() def send_stop_server(self, openstack_id): - self._oprot.writeMessageBegin("stop_server", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('stop_server', TMessageType.CALL, self._seqid) args = stop_server_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -2676,10 +2397,8 @@ def create_snapshot(self, openstack_id, name, username, base_tags, description): self.send_create_snapshot(openstack_id, name, username, base_tags, description) return self.recv_create_snapshot() - def send_create_snapshot( - self, openstack_id, name, username, base_tags, description - ): - self._oprot.writeMessageBegin("create_snapshot", TMessageType.CALL, self._seqid) + def send_create_snapshot(self, openstack_id, name, username, base_tags, description): + self._oprot.writeMessageBegin('create_snapshot', TMessageType.CALL, self._seqid) args = create_snapshot_args() args.openstack_id = openstack_id args.name = name @@ -2707,10 +2426,7 @@ def recv_create_snapshot(self): raise result.e if result.c is not None: raise result.c - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "create_snapshot failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_snapshot failed: unknown result") def get_limits(self): """ @@ -2724,7 +2440,7 @@ def get_limits(self): return self.recv_get_limits() def send_get_limits(self): - self._oprot.writeMessageBegin("get_limits", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('get_limits', TMessageType.CALL, self._seqid) args = get_limits_args() args.write(self._oprot) self._oprot.writeMessageEnd() @@ -2743,9 +2459,7 @@ def recv_get_limits(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "get_limits failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_limits failed: unknown result") def start_cluster(self, public_key, master_instance, worker_instances, user): """ @@ -2760,7 +2474,7 @@ def start_cluster(self, public_key, master_instance, worker_instances, user): return self.recv_start_cluster() def send_start_cluster(self, public_key, master_instance, worker_instances, user): - self._oprot.writeMessageBegin("start_cluster", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('start_cluster', TMessageType.CALL, self._seqid) args = start_cluster_args() args.public_key = public_key args.master_instance = master_instance @@ -2783,9 +2497,7 @@ def recv_start_cluster(self): iprot.readMessageEnd() if result.success is not None: return result.success - raise TApplicationException( - TApplicationException.MISSING_RESULT, "start_cluster failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "start_cluster failed: unknown result") def terminate_cluster(self, cluster_id): """ @@ -2797,9 +2509,7 @@ def terminate_cluster(self, cluster_id): return self.recv_terminate_cluster() def send_terminate_cluster(self, cluster_id): - self._oprot.writeMessageBegin( - "terminate_cluster", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('terminate_cluster', TMessageType.CALL, self._seqid) args = terminate_cluster_args() args.cluster_id = cluster_id args.write(self._oprot) @@ -2821,10 +2531,7 @@ def recv_terminate_cluster(self): return result.success if result.c is not None: raise result.c - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "terminate_cluster failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "terminate_cluster failed: unknown result") def delete_image(self, image_id): """ @@ -2839,7 +2546,7 @@ def delete_image(self, image_id): self.recv_delete_image() def send_delete_image(self, image_id): - self._oprot.writeMessageBegin("delete_image", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('delete_image', TMessageType.CALL, self._seqid) args = delete_image_args() args.image_id = image_id args.write(self._oprot) @@ -2874,7 +2581,7 @@ def detach_volume(self, volume_id, server_id): self.recv_detach_volume() def send_detach_volume(self, volume_id, server_id): - self._oprot.writeMessageBegin("detach_volume", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('detach_volume', TMessageType.CALL, self._seqid) args = detach_volume_args() args.volume_id = volume_id args.server_id = server_id @@ -2913,7 +2620,7 @@ def delete_volume(self, volume_id): self.recv_delete_volume() def send_delete_volume(self, volume_id): - self._oprot.writeMessageBegin("delete_volume", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('delete_volume', TMessageType.CALL, self._seqid) args = delete_volume_args() args.volume_id = volume_id args.write(self._oprot) @@ -2951,9 +2658,7 @@ def attach_volume_to_server(self, openstack_id, volume_id): return self.recv_attach_volume_to_server() def send_attach_volume_to_server(self, openstack_id, volume_id): - self._oprot.writeMessageBegin( - "attach_volume_to_server", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('attach_volume_to_server', TMessageType.CALL, self._seqid) args = attach_volume_to_server_args() args.openstack_id = openstack_id args.volume_id = volume_id @@ -2978,10 +2683,7 @@ def recv_attach_volume_to_server(self): raise result.e if result.c is not None: raise result.c - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "attach_volume_to_server failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "attach_volume_to_server failed: unknown result") def resume_server(self, openstack_id): """ @@ -2995,7 +2697,7 @@ def resume_server(self, openstack_id): self.recv_resume_server() def send_resume_server(self, openstack_id): - self._oprot.writeMessageBegin("resume_server", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('resume_server', TMessageType.CALL, self._seqid) args = resume_server_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -3033,7 +2735,7 @@ def create_volume(self, volume_name, volume_storage, metadata): return self.recv_create_volume() def send_create_volume(self, volume_name, volume_storage, metadata): - self._oprot.writeMessageBegin("create_volume", TMessageType.CALL, self._seqid) + self._oprot.writeMessageBegin('create_volume', TMessageType.CALL, self._seqid) args = create_volume_args() args.volume_name = volume_name args.volume_storage = volume_storage @@ -3059,9 +2761,7 @@ def recv_create_volume(self): raise result.r if result.n is not None: raise result.n - raise TApplicationException( - TApplicationException.MISSING_RESULT, "create_volume failed: unknown result" - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_volume failed: unknown result") def create_volume_by_source_volume(self, volume_name, metadata, source_volume_id): """ @@ -3073,17 +2773,11 @@ def create_volume_by_source_volume(self, volume_name, metadata, source_volume_id - source_volume_id: ID of source volume """ - self.send_create_volume_by_source_volume( - volume_name, metadata, source_volume_id - ) + self.send_create_volume_by_source_volume(volume_name, metadata, source_volume_id) return self.recv_create_volume_by_source_volume() - def send_create_volume_by_source_volume( - self, volume_name, metadata, source_volume_id - ): - self._oprot.writeMessageBegin( - "create_volume_by_source_volume", TMessageType.CALL, self._seqid - ) + def send_create_volume_by_source_volume(self, volume_name, metadata, source_volume_id): + self._oprot.writeMessageBegin('create_volume_by_source_volume', TMessageType.CALL, self._seqid) args = create_volume_by_source_volume_args() args.volume_name = volume_name args.metadata = metadata @@ -3109,10 +2803,7 @@ def recv_create_volume_by_source_volume(self): raise result.r if result.n is not None: raise result.n - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "create_volume_by_source_volume failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_volume_by_source_volume failed: unknown result") def create_volume_by_volume_snap(self, volume_name, metadata, volume_snap_id): """ @@ -3128,9 +2819,7 @@ def create_volume_by_volume_snap(self, volume_name, metadata, volume_snap_id): return self.recv_create_volume_by_volume_snap() def send_create_volume_by_volume_snap(self, volume_name, metadata, volume_snap_id): - self._oprot.writeMessageBegin( - "create_volume_by_volume_snap", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('create_volume_by_volume_snap', TMessageType.CALL, self._seqid) args = create_volume_by_volume_snap_args() args.volume_name = volume_name args.metadata = metadata @@ -3156,10 +2845,7 @@ def recv_create_volume_by_volume_snap(self): raise result.r if result.n is not None: raise result.n - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "create_volume_by_volume_snap failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_volume_by_volume_snap failed: unknown result") def create_volume_snapshot(self, volume_id, name, description): """ @@ -3176,9 +2862,7 @@ def create_volume_snapshot(self, volume_id, name, description): return self.recv_create_volume_snapshot() def send_create_volume_snapshot(self, volume_id, name, description): - self._oprot.writeMessageBegin( - "create_volume_snapshot", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('create_volume_snapshot', TMessageType.CALL, self._seqid) args = create_volume_snapshot_args() args.volume_id = volume_id args.name = name @@ -3204,10 +2888,7 @@ def recv_create_volume_snapshot(self): raise result.e if result.r is not None: raise result.r - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "create_volume_snapshot failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "create_volume_snapshot failed: unknown result") def get_volume_snapshot(self, name_or_id): """ @@ -3222,9 +2903,7 @@ def get_volume_snapshot(self, name_or_id): return self.recv_get_volume_snapshot() def send_get_volume_snapshot(self, name_or_id): - self._oprot.writeMessageBegin( - "get_volume_snapshot", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('get_volume_snapshot', TMessageType.CALL, self._seqid) args = get_volume_snapshot_args() args.name_or_id = name_or_id args.write(self._oprot) @@ -3246,10 +2925,7 @@ def recv_get_volume_snapshot(self): return result.success if result.r is not None: raise result.r - raise TApplicationException( - TApplicationException.MISSING_RESULT, - "get_volume_snapshot failed: unknown result", - ) + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_volume_snapshot failed: unknown result") def delete_volume_snapshot(self, snapshot_id): """ @@ -3263,9 +2939,7 @@ def delete_volume_snapshot(self, snapshot_id): self.recv_delete_volume_snapshot() def send_delete_volume_snapshot(self, snapshot_id): - self._oprot.writeMessageBegin( - "delete_volume_snapshot", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('delete_volume_snapshot', TMessageType.CALL, self._seqid) args = delete_volume_snapshot_args() args.snapshot_id = snapshot_id args.write(self._oprot) @@ -3301,9 +2975,7 @@ def reboot_hard_server(self, openstack_id): self.recv_reboot_hard_server() def send_reboot_hard_server(self, openstack_id): - self._oprot.writeMessageBegin( - "reboot_hard_server", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('reboot_hard_server', TMessageType.CALL, self._seqid) args = reboot_hard_server_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -3339,9 +3011,7 @@ def reboot_soft_server(self, openstack_id): self.recv_reboot_soft_server() def send_reboot_soft_server(self, openstack_id): - self._oprot.writeMessageBegin( - "reboot_soft_server", TMessageType.CALL, self._seqid - ) + self._oprot.writeMessageBegin('reboot_soft_server', TMessageType.CALL, self._seqid) args = reboot_soft_server_args() args.openstack_id = openstack_id args.write(self._oprot) @@ -3373,17 +3043,11 @@ def __init__(self, handler): self._processMap["is_version"] = Processor.process_is_version self._processMap["get_client_version"] = Processor.process_get_client_version self._processMap["get_gateway_ip"] = Processor.process_get_gateway_ip - self._processMap[ - "get_calculation_values" - ] = Processor.process_get_calculation_values + self._processMap["get_calculation_values"] = Processor.process_get_calculation_values self._processMap["import_keypair"] = Processor.process_import_keypair self._processMap["get_vm_ports"] = Processor.process_get_vm_ports - self._processMap[ - "add_udp_security_group" - ] = Processor.process_add_udp_security_group - self._processMap[ - "add_metadata_to_server" - ] = Processor.process_add_metadata_to_server + self._processMap["add_udp_security_group"] = Processor.process_add_udp_security_group + self._processMap["add_metadata_to_server"] = Processor.process_add_metadata_to_server self._processMap["get_flavors"] = Processor.process_get_flavors self._processMap["get_images"] = Processor.process_get_images self._processMap["get_public_images"] = Processor.process_get_public_images @@ -3392,55 +3056,31 @@ def __init__(self, handler): self._processMap["get_volume"] = Processor.process_get_volume self._processMap["get_volumes_by_ids"] = Processor.process_get_volumes_by_ids self._processMap["resize_volume"] = Processor.process_resize_volume - self._processMap[ - "open_port_range_for_vm_in_project" - ] = Processor.process_open_port_range_for_vm_in_project - self._processMap[ - "delete_security_group_rule" - ] = Processor.process_delete_security_group_rule + self._processMap["open_port_range_for_vm_in_project"] = Processor.process_open_port_range_for_vm_in_project + self._processMap["delete_security_group_rule"] = Processor.process_delete_security_group_rule self._processMap["delete_server"] = Processor.process_delete_server self._processMap["start_server"] = Processor.process_start_server - self._processMap[ - "is_bibigrid_available" - ] = Processor.process_is_bibigrid_available - self._processMap[ - "detach_ip_from_server" - ] = Processor.process_detach_ip_from_server - self._processMap[ - "start_server_with_custom_key" - ] = Processor.process_start_server_with_custom_key + self._processMap["is_bibigrid_available"] = Processor.process_is_bibigrid_available + self._processMap["detach_ip_from_server"] = Processor.process_detach_ip_from_server + self._processMap["start_server_with_custom_key"] = Processor.process_start_server_with_custom_key self._processMap["exist_server"] = Processor.process_exist_server - self._processMap[ - "create_and_deploy_playbook" - ] = Processor.process_create_and_deploy_playbook + self._processMap["create_and_deploy_playbook"] = Processor.process_create_and_deploy_playbook self._processMap["get_playbook_logs"] = Processor.process_get_playbook_logs self._processMap["has_forc"] = Processor.process_has_forc self._processMap["get_forc_url"] = Processor.process_get_forc_url self._processMap["create_backend"] = Processor.process_create_backend self._processMap["get_backends"] = Processor.process_get_backends - self._processMap[ - "get_backends_by_owner" - ] = Processor.process_get_backends_by_owner - self._processMap[ - "get_backends_by_template" - ] = Processor.process_get_backends_by_template + self._processMap["get_backends_by_owner"] = Processor.process_get_backends_by_owner + self._processMap["get_backends_by_template"] = Processor.process_get_backends_by_template self._processMap["get_backend_by_id"] = Processor.process_get_backend_by_id self._processMap["delete_backend"] = Processor.process_delete_backend self._processMap["add_user_to_backend"] = Processor.process_add_user_to_backend - self._processMap[ - "get_users_from_backend" - ] = Processor.process_get_users_from_backend - self._processMap[ - "delete_user_from_backend" - ] = Processor.process_delete_user_from_backend - self._processMap[ - "get_allowed_templates" - ] = Processor.process_get_allowed_templates + self._processMap["get_users_from_backend"] = Processor.process_get_users_from_backend + self._processMap["delete_user_from_backend"] = Processor.process_delete_user_from_backend + self._processMap["get_allowed_templates"] = Processor.process_get_allowed_templates self._processMap["get_servers"] = Processor.process_get_servers self._processMap["get_servers_by_ids"] = Processor.process_get_servers_by_ids - self._processMap[ - "get_servers_by_bibigrid_id" - ] = Processor.process_get_servers_by_bibigrid_id + self._processMap["get_servers_by_bibigrid_id"] = Processor.process_get_servers_by_bibigrid_id self._processMap["scale_up_cluster"] = Processor.process_scale_up_cluster self._processMap["add_cluster_machine"] = Processor.process_add_cluster_machine self._processMap["get_cluster_info"] = Processor.process_get_cluster_info @@ -3454,24 +3094,14 @@ def __init__(self, handler): self._processMap["delete_image"] = Processor.process_delete_image self._processMap["detach_volume"] = Processor.process_detach_volume self._processMap["delete_volume"] = Processor.process_delete_volume - self._processMap[ - "attach_volume_to_server" - ] = Processor.process_attach_volume_to_server + self._processMap["attach_volume_to_server"] = Processor.process_attach_volume_to_server self._processMap["resume_server"] = Processor.process_resume_server self._processMap["create_volume"] = Processor.process_create_volume - self._processMap[ - "create_volume_by_source_volume" - ] = Processor.process_create_volume_by_source_volume - self._processMap[ - "create_volume_by_volume_snap" - ] = Processor.process_create_volume_by_volume_snap - self._processMap[ - "create_volume_snapshot" - ] = Processor.process_create_volume_snapshot + self._processMap["create_volume_by_source_volume"] = Processor.process_create_volume_by_source_volume + self._processMap["create_volume_by_volume_snap"] = Processor.process_create_volume_by_volume_snap + self._processMap["create_volume_snapshot"] = Processor.process_create_volume_snapshot self._processMap["get_volume_snapshot"] = Processor.process_get_volume_snapshot - self._processMap[ - "delete_volume_snapshot" - ] = Processor.process_delete_volume_snapshot + self._processMap["delete_volume_snapshot"] = Processor.process_delete_volume_snapshot self._processMap["reboot_hard_server"] = Processor.process_reboot_hard_server self._processMap["reboot_soft_server"] = Processor.process_reboot_soft_server self._on_message_begin = None @@ -3486,9 +3116,7 @@ def process(self, iprot, oprot): if name not in self._processMap: iprot.skip(TType.STRUCT) iprot.readMessageEnd() - x = TApplicationException( - TApplicationException.UNKNOWN_METHOD, "Unknown function %s" % (name) - ) + x = TApplicationException(TApplicationException.UNKNOWN_METHOD, 'Unknown function %s' % (name)) oprot.writeMessageBegin(name, TMessageType.EXCEPTION, seqid) x.write(oprot) oprot.writeMessageEnd() @@ -3509,15 +3137,13 @@ def process_is_version(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("is_version", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3534,15 +3160,13 @@ def process_get_client_version(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_client_version", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3559,15 +3183,13 @@ def process_get_gateway_ip(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_gateway_ip", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3584,15 +3206,13 @@ def process_get_calculation_values(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_calculation_values", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3609,15 +3229,13 @@ def process_import_keypair(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("import_keypair", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3637,15 +3255,13 @@ def process_get_vm_ports(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.s = s except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_vm_ports", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3668,15 +3284,13 @@ def process_add_udp_security_group(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.s = s except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("add_udp_security_group", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3688,9 +3302,7 @@ def process_add_metadata_to_server(self, seqid, iprot, oprot): iprot.readMessageEnd() result = add_metadata_to_server_result() try: - result.success = self._handler.add_metadata_to_server( - args.openstack_id, args.metadata - ) + result.success = self._handler.add_metadata_to_server(args.openstack_id, args.metadata) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -3701,15 +3313,13 @@ def process_add_metadata_to_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.s = s except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("add_metadata_to_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3726,15 +3336,13 @@ def process_get_flavors(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_flavors", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3751,15 +3359,13 @@ def process_get_images(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_images", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3776,15 +3382,13 @@ def process_get_public_images(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_public_images", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3801,15 +3405,13 @@ def process_get_private_images(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_private_images", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3821,9 +3423,7 @@ def process_get_image(self, seqid, iprot, oprot): iprot.readMessageEnd() result = get_image_result() try: - result.success = self._handler.get_image( - args.openstack_id, args.ignore_not_active - ) + result.success = self._handler.get_image(args.openstack_id, args.ignore_not_active) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -3831,15 +3431,13 @@ def process_get_image(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.i = i except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_image", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3859,15 +3457,13 @@ def process_get_volume(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.v = v except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_volume", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3884,15 +3480,13 @@ def process_get_volumes_by_ids(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_volumes_by_ids", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3912,15 +3506,13 @@ def process_resize_volume(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.v = v except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("resize_volume", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3932,13 +3524,7 @@ def process_open_port_range_for_vm_in_project(self, seqid, iprot, oprot): iprot.readMessageEnd() result = open_port_range_for_vm_in_project_result() try: - result.success = self._handler.open_port_range_for_vm_in_project( - args.range_start, - args.range_stop, - args.openstack_id, - args.ethertype, - args.protocol, - ) + result.success = self._handler.open_port_range_for_vm_in_project(args.range_start, args.range_stop, args.openstack_id, args.ethertype, args.protocol) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -3952,15 +3538,13 @@ def process_open_port_range_for_vm_in_project(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.o = o except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("open_port_range_for_vm_in_project", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -3979,16 +3563,17 @@ def process_delete_security_group_rule(self, seqid, iprot, oprot): except SecurityGroupRuleNotFoundException as e: msg_type = TMessageType.REPLY result.e = e + except DefaultException as f: + msg_type = TMessageType.REPLY + result.f = f except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_security_group_rule", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4011,15 +3596,13 @@ def process_delete_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4031,18 +3614,7 @@ def process_start_server(self, seqid, iprot, oprot): iprot.readMessageEnd() result = start_server_result() try: - result.success = self._handler.start_server( - args.flavor_name, - args.image_name, - args.public_key, - args.servername, - args.metadata, - args.volume_ids_path_new, - args.volume_ids_path_attach, - args.additional_keys, - args.research_environment, - args.additional_security_group_ids, - ) + result.success = self._handler.start_server(args.flavor_name, args.image_name, args.public_key, args.servername, args.metadata, args.volume_ids_path_new, args.volume_ids_path_attach, args.additional_keys, args.research_environment, args.additional_security_group_ids) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4062,15 +3634,13 @@ def process_start_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.o = o except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("start_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4087,15 +3657,13 @@ def process_is_bibigrid_available(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("is_bibigrid_available", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4115,15 +3683,13 @@ def process_detach_ip_from_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.s = s except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("detach_ip_from_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4135,16 +3701,7 @@ def process_start_server_with_custom_key(self, seqid, iprot, oprot): iprot.readMessageEnd() result = start_server_with_custom_key_result() try: - result.success = self._handler.start_server_with_custom_key( - args.flavor_name, - args.image_name, - args.servername, - args.metadata, - args.research_environment, - args.volume_ids_path_new, - args.volume_ids_path_attach, - args.additional_security_group_ids, - ) + result.success = self._handler.start_server_with_custom_key(args.flavor_name, args.image_name, args.servername, args.metadata, args.research_environment, args.volume_ids_path_new, args.volume_ids_path_attach, args.additional_security_group_ids) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4164,15 +3721,13 @@ def process_start_server_with_custom_key(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.d = d except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("start_server_with_custom_key", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4189,15 +3744,13 @@ def process_exist_server(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("exist_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4209,15 +3762,7 @@ def process_create_and_deploy_playbook(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_and_deploy_playbook_result() try: - result.success = self._handler.create_and_deploy_playbook( - args.public_key, - args.openstack_id, - args.conda_packages, - args.research_environment_template, - args.apt_packages, - args.create_only_backend, - args.base_url, - ) + result.success = self._handler.create_and_deploy_playbook(args.public_key, args.openstack_id, args.conda_packages, args.research_environment_template, args.apt_packages, args.create_only_backend, args.base_url) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4225,15 +3770,13 @@ def process_create_and_deploy_playbook(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.s = s except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_and_deploy_playbook", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4253,15 +3796,13 @@ def process_get_playbook_logs(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.p = p except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_playbook_logs", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4278,15 +3819,13 @@ def process_has_forc(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("has_forc", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4303,15 +3842,13 @@ def process_get_forc_url(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_forc_url", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4323,9 +3860,7 @@ def process_create_backend(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_backend_result() try: - result.success = self._handler.create_backend( - args.owner, args.user_path, args.template, args.upstream_url - ) + result.success = self._handler.create_backend(args.owner, args.user_path, args.template, args.upstream_url) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4336,15 +3871,13 @@ def process_create_backend(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.d = d except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_backend", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4364,15 +3897,13 @@ def process_get_backends(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.d = d except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_backends", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4392,15 +3923,13 @@ def process_get_backends_by_owner(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.d = d except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_backends_by_owner", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4420,15 +3949,13 @@ def process_get_backends_by_template(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.d = d except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_backends_by_template", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4451,15 +3978,13 @@ def process_get_backend_by_id(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.d = d except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_backend_by_id", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4479,15 +4004,13 @@ def process_delete_backend(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.b = b except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_backend", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4499,9 +4022,7 @@ def process_add_user_to_backend(self, seqid, iprot, oprot): iprot.readMessageEnd() result = add_user_to_backend_result() try: - result.success = self._handler.add_user_to_backend( - args.backend_id, args.user_id - ) + result.success = self._handler.add_user_to_backend(args.backend_id, args.user_id) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4509,15 +4030,13 @@ def process_add_user_to_backend(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.b = b except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("add_user_to_backend", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4537,15 +4056,13 @@ def process_get_users_from_backend(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.b = b except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_users_from_backend", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4557,9 +4074,7 @@ def process_delete_user_from_backend(self, seqid, iprot, oprot): iprot.readMessageEnd() result = delete_user_from_backend_result() try: - result.success = self._handler.delete_user_from_backend( - args.backend_id, args.user_id - ) + result.success = self._handler.delete_user_from_backend(args.backend_id, args.user_id) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4567,15 +4082,13 @@ def process_delete_user_from_backend(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.b = b except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_user_from_backend", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4592,15 +4105,13 @@ def process_get_allowed_templates(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_allowed_templates", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4617,15 +4128,13 @@ def process_get_servers(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_servers", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4642,15 +4151,13 @@ def process_get_servers_by_ids(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_servers_by_ids", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4667,15 +4174,13 @@ def process_get_servers_by_bibigrid_id(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_servers_by_bibigrid_id", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4687,28 +4192,18 @@ def process_scale_up_cluster(self, seqid, iprot, oprot): iprot.readMessageEnd() result = scale_up_cluster_result() try: - result.success = self._handler.scale_up_cluster( - args.cluster_id, - args.image_name, - args.flavor_name, - args.count, - args.names, - args.start_idx, - args.batch_idx, - ) + result.success = self._handler.scale_up_cluster(args.cluster_id, args.image_name, args.flavor_name, args.count, args.names, args.start_idx, args.batch_idx) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("scale_up_cluster", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4720,30 +4215,18 @@ def process_add_cluster_machine(self, seqid, iprot, oprot): iprot.readMessageEnd() result = add_cluster_machine_result() try: - result.success = self._handler.add_cluster_machine( - args.cluster_id, - args.cluster_user, - args.cluster_group_id, - args.image_name, - args.flavor_name, - args.name, - args.key_name, - args.batch_idx, - args.worker_idx, - ) + result.success = self._handler.add_cluster_machine(args.cluster_id, args.cluster_user, args.cluster_group_id, args.image_name, args.flavor_name, args.name, args.key_name, args.batch_idx, args.worker_idx) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("add_cluster_machine", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4763,15 +4246,13 @@ def process_get_cluster_info(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_cluster_info", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4791,15 +4272,13 @@ def process_get_cluster_status(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_cluster_status", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4819,15 +4298,13 @@ def process_get_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.e = e except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4850,15 +4327,13 @@ def process_stop_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("stop_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4870,13 +4345,7 @@ def process_create_snapshot(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_snapshot_result() try: - result.success = self._handler.create_snapshot( - args.openstack_id, - args.name, - args.username, - args.base_tags, - args.description, - ) + result.success = self._handler.create_snapshot(args.openstack_id, args.name, args.username, args.base_tags, args.description) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -4887,15 +4356,13 @@ def process_create_snapshot(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_snapshot", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4912,15 +4379,13 @@ def process_get_limits(self, seqid, iprot, oprot): except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_limits", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4932,22 +4397,18 @@ def process_start_cluster(self, seqid, iprot, oprot): iprot.readMessageEnd() result = start_cluster_result() try: - result.success = self._handler.start_cluster( - args.public_key, args.master_instance, args.worker_instances, args.user - ) + result.success = self._handler.start_cluster(args.public_key, args.master_instance, args.worker_instances, args.user) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("start_cluster", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4967,15 +4428,13 @@ def process_terminate_cluster(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("terminate_cluster", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -4995,15 +4454,13 @@ def process_delete_image(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.e = e except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_image", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5029,15 +4486,13 @@ def process_detach_volume(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.v = v except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("detach_volume", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5060,15 +4515,13 @@ def process_delete_volume(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.v = v except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_volume", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5080,9 +4533,7 @@ def process_attach_volume_to_server(self, seqid, iprot, oprot): iprot.readMessageEnd() result = attach_volume_to_server_result() try: - result.success = self._handler.attach_volume_to_server( - args.openstack_id, args.volume_id - ) + result.success = self._handler.attach_volume_to_server(args.openstack_id, args.volume_id) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -5093,15 +4544,13 @@ def process_attach_volume_to_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("attach_volume_to_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5124,15 +4573,13 @@ def process_resume_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("resume_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5144,9 +4591,7 @@ def process_create_volume(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_volume_result() try: - result.success = self._handler.create_volume( - args.volume_name, args.volume_storage, args.metadata - ) + result.success = self._handler.create_volume(args.volume_name, args.volume_storage, args.metadata) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -5157,15 +4602,13 @@ def process_create_volume(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.n = n except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_volume", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5177,9 +4620,7 @@ def process_create_volume_by_source_volume(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_volume_by_source_volume_result() try: - result.success = self._handler.create_volume_by_source_volume( - args.volume_name, args.metadata, args.source_volume_id - ) + result.success = self._handler.create_volume_by_source_volume(args.volume_name, args.metadata, args.source_volume_id) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -5190,15 +4631,13 @@ def process_create_volume_by_source_volume(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.n = n except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_volume_by_source_volume", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5210,9 +4649,7 @@ def process_create_volume_by_volume_snap(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_volume_by_volume_snap_result() try: - result.success = self._handler.create_volume_by_volume_snap( - args.volume_name, args.metadata, args.volume_snap_id - ) + result.success = self._handler.create_volume_by_volume_snap(args.volume_name, args.metadata, args.volume_snap_id) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -5223,15 +4660,13 @@ def process_create_volume_by_volume_snap(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.n = n except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_volume_by_volume_snap", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5243,9 +4678,7 @@ def process_create_volume_snapshot(self, seqid, iprot, oprot): iprot.readMessageEnd() result = create_volume_snapshot_result() try: - result.success = self._handler.create_volume_snapshot( - args.volume_id, args.name, args.description - ) + result.success = self._handler.create_volume_snapshot(args.volume_id, args.name, args.description) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -5256,15 +4689,13 @@ def process_create_volume_snapshot(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.r = r except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("create_volume_snapshot", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5284,15 +4715,13 @@ def process_get_volume_snapshot(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.r = r except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("get_volume_snapshot", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5315,15 +4744,13 @@ def process_delete_volume_snapshot(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.e = e except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("delete_volume_snapshot", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5346,15 +4773,13 @@ def process_reboot_hard_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("reboot_hard_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() @@ -5377,21 +4802,18 @@ def process_reboot_soft_server(self, seqid, iprot, oprot): msg_type = TMessageType.REPLY result.c = c except TApplicationException as ex: - logging.exception("TApplication exception in handler") + logging.exception('TApplication exception in handler') msg_type = TMessageType.EXCEPTION result = ex except Exception: - logging.exception("Unexpected exception in handler") + logging.exception('Unexpected exception in handler') msg_type = TMessageType.EXCEPTION - result = TApplicationException( - TApplicationException.INTERNAL_ERROR, "Internal error" - ) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') oprot.writeMessageBegin("reboot_soft_server", msg_type, seqid) result.write(oprot) oprot.writeMessageEnd() oprot.trans.flush() - # HELPER FUNCTIONS AND STRUCTURES @@ -5402,18 +4824,12 @@ class is_version_args(object): """ - def __init__( - self, - version=None, - ): + + def __init__(self, version=None,): self.version = version def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5433,13 +4849,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("is_version_args") + oprot.writeStructBegin('is_version_args') if self.version is not None: - oprot.writeFieldBegin("version", TType.DOUBLE, 1) + oprot.writeFieldBegin('version', TType.DOUBLE, 1) oprot.writeDouble(self.version) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -5449,26 +4863,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(is_version_args) is_version_args.thrift_spec = ( None, # 0 - ( - 1, - TType.DOUBLE, - "version", - None, - None, - ), # 1 + (1, TType.DOUBLE, 'version', None, None, ), # 1 ) @@ -5479,18 +4886,12 @@ class is_version_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5510,13 +4911,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("is_version_result") + oprot.writeStructBegin('is_version_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.BOOL, 0) + oprot.writeFieldBegin('success', TType.BOOL, 0) oprot.writeBool(self.success) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -5526,35 +4925,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(is_version_result) is_version_result.thrift_spec = ( - ( - 0, - TType.BOOL, - "success", - None, - None, - ), # 0 + (0, TType.BOOL, 'success', None, None, ), # 0 ) class get_client_version_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5569,11 +4959,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_client_version_args") + oprot.writeStructBegin('get_client_version_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -5581,18 +4969,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_client_version_args) -get_client_version_args.thrift_spec = () +get_client_version_args.thrift_spec = ( +) class get_client_version_result(object): @@ -5602,18 +4990,12 @@ class get_client_version_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5623,11 +5005,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -5637,18 +5015,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_client_version_result") + oprot.writeStructBegin('get_client_version_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -5657,35 +5029,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_client_version_result) get_client_version_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 ) class get_gateway_ip_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5700,11 +5063,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_gateway_ip_args") + oprot.writeStructBegin('get_gateway_ip_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -5712,18 +5073,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_gateway_ip_args) -get_gateway_ip_args.thrift_spec = () +get_gateway_ip_args.thrift_spec = ( +) class get_gateway_ip_result(object): @@ -5733,18 +5094,12 @@ class get_gateway_ip_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5757,16 +5112,8 @@ def read(self, iprot): self.success = {} (_ktype33, _vtype34, _size32) = iprot.readMapBegin() for _i36 in range(_size32): - _key37 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val38 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key37 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val38 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key37] = _val38 iprot.readMapEnd() else: @@ -5778,21 +5125,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_gateway_ip_result") + oprot.writeStructBegin('get_gateway_ip_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter39, viter40 in self.success.items(): - oprot.writeString( - kiter39.encode("utf-8") if sys.version_info[0] == 2 else kiter39 - ) - oprot.writeString( - viter40.encode("utf-8") if sys.version_info[0] == 2 else viter40 - ) + oprot.writeString(kiter39.encode('utf-8') if sys.version_info[0] == 2 else kiter39) + oprot.writeString(viter40.encode('utf-8') if sys.version_info[0] == 2 else viter40) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -5802,35 +5143,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_gateway_ip_result) get_gateway_ip_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 ) class get_calculation_values_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5845,11 +5177,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_calculation_values_args") + oprot.writeStructBegin('get_calculation_values_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -5857,18 +5187,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_calculation_values_args) -get_calculation_values_args.thrift_spec = () +get_calculation_values_args.thrift_spec = ( +) class get_calculation_values_result(object): @@ -5878,18 +5208,12 @@ class get_calculation_values_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -5902,16 +5226,8 @@ def read(self, iprot): self.success = {} (_ktype42, _vtype43, _size41) = iprot.readMapBegin() for _i45 in range(_size41): - _key46 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val47 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key46 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val47 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key46] = _val47 iprot.readMapEnd() else: @@ -5923,21 +5239,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_calculation_values_result") + oprot.writeStructBegin('get_calculation_values_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter48, viter49 in self.success.items(): - oprot.writeString( - kiter48.encode("utf-8") if sys.version_info[0] == 2 else kiter48 - ) - oprot.writeString( - viter49.encode("utf-8") if sys.version_info[0] == 2 else viter49 - ) + oprot.writeString(kiter48.encode('utf-8') if sys.version_info[0] == 2 else kiter48) + oprot.writeString(viter49.encode('utf-8') if sys.version_info[0] == 2 else viter49) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -5947,25 +5257,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_calculation_values_result) get_calculation_values_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 ) @@ -5977,20 +5280,13 @@ class import_keypair_args(object): """ - def __init__( - self, - keyname=None, - public_key=None, - ): + + def __init__(self, keyname=None, public_key=None,): self.keyname = keyname self.public_key = public_key def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6000,20 +5296,12 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.keyname = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.keyname = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.public_key = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.public_key = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -6023,26 +5311,16 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("import_keypair_args") + oprot.writeStructBegin('import_keypair_args') if self.keyname is not None: - oprot.writeFieldBegin("keyname", TType.STRING, 1) - oprot.writeString( - self.keyname.encode("utf-8") - if sys.version_info[0] == 2 - else self.keyname - ) + oprot.writeFieldBegin('keyname', TType.STRING, 1) + oprot.writeString(self.keyname.encode('utf-8') if sys.version_info[0] == 2 else self.keyname) oprot.writeFieldEnd() if self.public_key is not None: - oprot.writeFieldBegin("public_key", TType.STRING, 2) - oprot.writeString( - self.public_key.encode("utf-8") - if sys.version_info[0] == 2 - else self.public_key - ) + oprot.writeFieldBegin('public_key', TType.STRING, 2) + oprot.writeString(self.public_key.encode('utf-8') if sys.version_info[0] == 2 else self.public_key) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -6051,33 +5329,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(import_keypair_args) import_keypair_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "keyname", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "public_key", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'keyname', 'UTF8', None, ), # 1 + (2, TType.STRING, 'public_key', 'UTF8', None, ), # 2 ) @@ -6088,18 +5353,12 @@ class import_keypair_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6109,11 +5368,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -6123,18 +5378,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("import_keypair_result") + oprot.writeStructBegin('import_keypair_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -6143,25 +5392,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(import_keypair_result) import_keypair_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 ) @@ -6172,18 +5414,12 @@ class get_vm_ports_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6193,11 +5429,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -6207,18 +5439,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_vm_ports_args") + oprot.writeStructBegin('get_vm_ports_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -6227,26 +5453,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_vm_ports_args) get_vm_ports_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -6258,20 +5477,13 @@ class get_vm_ports_result(object): """ - def __init__( - self, - success=None, - s=None, - ): + + def __init__(self, success=None, s=None,): self.success = success self.s = s def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6284,16 +5496,8 @@ def read(self, iprot): self.success = {} (_ktype51, _vtype52, _size50) = iprot.readMapBegin() for _i54 in range(_size50): - _key55 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val56 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key55 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val56 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key55] = _val56 iprot.readMapEnd() else: @@ -6310,25 +5514,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_vm_ports_result") + oprot.writeStructBegin('get_vm_ports_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter57, viter58 in self.success.items(): - oprot.writeString( - kiter57.encode("utf-8") if sys.version_info[0] == 2 else kiter57 - ) - oprot.writeString( - viter58.encode("utf-8") if sys.version_info[0] == 2 else viter58 - ) + oprot.writeString(kiter57.encode('utf-8') if sys.version_info[0] == 2 else kiter57) + oprot.writeString(viter58.encode('utf-8') if sys.version_info[0] == 2 else viter58) oprot.writeMapEnd() oprot.writeFieldEnd() if self.s is not None: - oprot.writeFieldBegin("s", TType.STRUCT, 1) + oprot.writeFieldBegin('s', TType.STRUCT, 1) self.s.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -6338,32 +5536,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_vm_ports_result) get_vm_ports_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "s", - [ServerNotFoundException, None], - None, - ), # 1 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 's', [ServerNotFoundException, None], None, ), # 1 ) @@ -6374,18 +5559,12 @@ class add_udp_security_group_args(object): """ - def __init__( - self, - server_id=None, - ): + + def __init__(self, server_id=None,): self.server_id = server_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6395,11 +5574,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.server_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.server_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -6409,18 +5584,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_udp_security_group_args") + oprot.writeStructBegin('add_udp_security_group_args') if self.server_id is not None: - oprot.writeFieldBegin("server_id", TType.STRING, 1) - oprot.writeString( - self.server_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.server_id - ) + oprot.writeFieldBegin('server_id', TType.STRING, 1) + oprot.writeString(self.server_id.encode('utf-8') if sys.version_info[0] == 2 else self.server_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -6429,26 +5598,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_udp_security_group_args) add_udp_security_group_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "server_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'server_id', 'UTF8', None, ), # 1 ) @@ -6460,20 +5622,13 @@ class add_udp_security_group_result(object): """ - def __init__( - self, - r=None, - s=None, - ): + + def __init__(self, r=None, s=None,): self.r = r self.s = s def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6498,17 +5653,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_udp_security_group_result") + oprot.writeStructBegin('add_udp_security_group_result') if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 1) + oprot.writeFieldBegin('r', TType.STRUCT, 1) self.r.write(oprot) oprot.writeFieldEnd() if self.s is not None: - oprot.writeFieldBegin("s", TType.STRUCT, 2) + oprot.writeFieldBegin('s', TType.STRUCT, 2) self.s.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -6518,33 +5671,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_udp_security_group_result) add_udp_security_group_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "r", - [DefaultException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "s", - [ServerNotFoundException, None], - None, - ), # 2 + (1, TType.STRUCT, 'r', [DefaultException, None], None, ), # 1 + (2, TType.STRUCT, 's', [ServerNotFoundException, None], None, ), # 2 ) @@ -6556,20 +5696,13 @@ class add_metadata_to_server_args(object): """ - def __init__( - self, - openstack_id=None, - metadata=None, - ): + + def __init__(self, openstack_id=None, metadata=None,): self.openstack_id = openstack_id self.metadata = metadata def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6579,11 +5712,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -6591,16 +5720,8 @@ def read(self, iprot): self.metadata = {} (_ktype60, _vtype61, _size59) = iprot.readMapBegin() for _i63 in range(_size59): - _key64 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val65 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key64 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val65 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key64] = _val65 iprot.readMapEnd() else: @@ -6612,29 +5733,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_metadata_to_server_args") + oprot.writeStructBegin('add_metadata_to_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 2) + oprot.writeFieldBegin('metadata', TType.MAP, 2) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter66, viter67 in self.metadata.items(): - oprot.writeString( - kiter66.encode("utf-8") if sys.version_info[0] == 2 else kiter66 - ) - oprot.writeString( - viter67.encode("utf-8") if sys.version_info[0] == 2 else viter67 - ) + oprot.writeString(kiter66.encode('utf-8') if sys.version_info[0] == 2 else kiter66) + oprot.writeString(viter67.encode('utf-8') if sys.version_info[0] == 2 else viter67) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -6644,33 +5755,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_metadata_to_server_args) add_metadata_to_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 2 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 + (2, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 2 ) @@ -6683,22 +5781,14 @@ class add_metadata_to_server_result(object): """ - def __init__( - self, - success=None, - r=None, - s=None, - ): + + def __init__(self, success=None, r=None, s=None,): self.success = success self.r = r self.s = s def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6711,16 +5801,8 @@ def read(self, iprot): self.success = {} (_ktype69, _vtype70, _size68) = iprot.readMapBegin() for _i72 in range(_size68): - _key73 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val74 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key73 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val74 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key73] = _val74 iprot.readMapEnd() else: @@ -6742,29 +5824,23 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_metadata_to_server_result") + oprot.writeStructBegin('add_metadata_to_server_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter75, viter76 in self.success.items(): - oprot.writeString( - kiter75.encode("utf-8") if sys.version_info[0] == 2 else kiter75 - ) - oprot.writeString( - viter76.encode("utf-8") if sys.version_info[0] == 2 else viter76 - ) + oprot.writeString(kiter75.encode('utf-8') if sys.version_info[0] == 2 else kiter75) + oprot.writeString(viter76.encode('utf-8') if sys.version_info[0] == 2 else viter76) oprot.writeMapEnd() oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 1) + oprot.writeFieldBegin('r', TType.STRUCT, 1) self.r.write(oprot) oprot.writeFieldEnd() if self.s is not None: - oprot.writeFieldBegin("s", TType.STRUCT, 2) + oprot.writeFieldBegin('s', TType.STRUCT, 2) self.s.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -6774,49 +5850,28 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_metadata_to_server_result) add_metadata_to_server_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "r", - [DefaultException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "s", - [ServerNotFoundException, None], - None, - ), # 2 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'r', [DefaultException, None], None, ), # 1 + (2, TType.STRUCT, 's', [ServerNotFoundException, None], None, ), # 2 ) class get_flavors_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6831,11 +5886,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_flavors_args") + oprot.writeStructBegin('get_flavors_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -6843,18 +5896,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_flavors_args) -get_flavors_args.thrift_spec = () +get_flavors_args.thrift_spec = ( +) class get_flavors_result(object): @@ -6864,18 +5917,12 @@ class get_flavors_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6901,13 +5948,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_flavors_result") + oprot.writeStructBegin('get_flavors_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter83 in self.success: iter83.write(oprot) @@ -6920,35 +5965,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_flavors_result) get_flavors_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Flavor, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [Flavor, None], False), None, ), # 0 ) class get_images_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -6963,11 +5999,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_images_args") + oprot.writeStructBegin('get_images_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -6975,18 +6009,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_images_args) -get_images_args.thrift_spec = () +get_images_args.thrift_spec = ( +) class get_images_result(object): @@ -6996,18 +6030,12 @@ class get_images_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7033,13 +6061,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_images_result") + oprot.writeStructBegin('get_images_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter90 in self.success: iter90.write(oprot) @@ -7052,35 +6078,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_images_result) get_images_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Image, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [Image, None], False), None, ), # 0 ) class get_public_images_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7095,11 +6112,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_public_images_args") + oprot.writeStructBegin('get_public_images_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -7107,18 +6122,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_public_images_args) -get_public_images_args.thrift_spec = () +get_public_images_args.thrift_spec = ( +) class get_public_images_result(object): @@ -7128,18 +6143,12 @@ class get_public_images_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7165,13 +6174,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_public_images_result") + oprot.writeStructBegin('get_public_images_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter97 in self.success: iter97.write(oprot) @@ -7184,35 +6191,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_public_images_result) get_public_images_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Image, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [Image, None], False), None, ), # 0 ) class get_private_images_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7227,11 +6225,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_private_images_args") + oprot.writeStructBegin('get_private_images_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -7239,18 +6235,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_private_images_args) -get_private_images_args.thrift_spec = () +get_private_images_args.thrift_spec = ( +) class get_private_images_result(object): @@ -7260,18 +6256,12 @@ class get_private_images_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7297,13 +6287,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_private_images_result") + oprot.writeStructBegin('get_private_images_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter104 in self.success: iter104.write(oprot) @@ -7316,25 +6304,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_private_images_result) get_private_images_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Image, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [Image, None], False), None, ), # 0 ) @@ -7346,20 +6327,13 @@ class get_image_args(object): """ - def __init__( - self, - openstack_id=None, - ignore_not_active=None, - ): + + def __init__(self, openstack_id=None, ignore_not_active=None,): self.openstack_id = openstack_id self.ignore_not_active = ignore_not_active def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7369,11 +6343,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -7388,21 +6358,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_image_args") + oprot.writeStructBegin('get_image_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.ignore_not_active is not None: - oprot.writeFieldBegin("ignore_not_active", TType.BOOL, 2) + oprot.writeFieldBegin('ignore_not_active', TType.BOOL, 2) oprot.writeBool(self.ignore_not_active) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -7412,33 +6376,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_image_args) get_image_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.BOOL, - "ignore_not_active", - None, - None, - ), # 2 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 + (2, TType.BOOL, 'ignore_not_active', None, None, ), # 2 ) @@ -7450,20 +6401,13 @@ class get_image_result(object): """ - def __init__( - self, - success=None, - i=None, - ): + + def __init__(self, success=None, i=None,): self.success = success self.i = i def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7489,17 +6433,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_image_result") + oprot.writeStructBegin('get_image_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.i is not None: - oprot.writeFieldBegin("i", TType.STRUCT, 1) + oprot.writeFieldBegin('i', TType.STRUCT, 1) self.i.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -7509,32 +6451,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_image_result) get_image_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Image, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "i", - [ImageNotFoundException, None], - None, - ), # 1 + (0, TType.STRUCT, 'success', [Image, None], None, ), # 0 + (1, TType.STRUCT, 'i', [ImageNotFoundException, None], None, ), # 1 ) @@ -7545,18 +6474,12 @@ class get_volume_args(object): """ - def __init__( - self, - volume_id=None, - ): + + def __init__(self, volume_id=None,): self.volume_id = volume_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7566,11 +6489,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -7580,18 +6499,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_volume_args") + oprot.writeStructBegin('get_volume_args') if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 1) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 1) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -7600,26 +6513,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_volume_args) get_volume_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'volume_id', 'UTF8', None, ), # 1 ) @@ -7631,20 +6537,13 @@ class get_volume_result(object): """ - def __init__( - self, - success=None, - v=None, - ): + + def __init__(self, success=None, v=None,): self.success = success self.v = v def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7670,17 +6569,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_volume_result") + oprot.writeStructBegin('get_volume_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.v is not None: - oprot.writeFieldBegin("v", TType.STRUCT, 1) + oprot.writeFieldBegin('v', TType.STRUCT, 1) self.v.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -7690,32 +6587,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_volume_result) get_volume_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Volume, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "v", - [VolumeNotFoundException, None], - None, - ), # 1 + (0, TType.STRUCT, 'success', [Volume, None], None, ), # 0 + (1, TType.STRUCT, 'v', [VolumeNotFoundException, None], None, ), # 1 ) @@ -7726,18 +6610,12 @@ class get_volumes_by_ids_args(object): """ - def __init__( - self, - volume_ids=None, - ): + + def __init__(self, volume_ids=None,): self.volume_ids = volume_ids def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7750,11 +6628,7 @@ def read(self, iprot): self.volume_ids = [] (_etype108, _size105) = iprot.readListBegin() for _i109 in range(_size105): - _elem110 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem110 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.volume_ids.append(_elem110) iprot.readListEnd() else: @@ -7766,18 +6640,14 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_volumes_by_ids_args") + oprot.writeStructBegin('get_volumes_by_ids_args') if self.volume_ids is not None: - oprot.writeFieldBegin("volume_ids", TType.LIST, 1) + oprot.writeFieldBegin('volume_ids', TType.LIST, 1) oprot.writeListBegin(TType.STRING, len(self.volume_ids)) for iter111 in self.volume_ids: - oprot.writeString( - iter111.encode("utf-8") if sys.version_info[0] == 2 else iter111 - ) + oprot.writeString(iter111.encode('utf-8') if sys.version_info[0] == 2 else iter111) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -7787,26 +6657,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_volumes_by_ids_args) get_volumes_by_ids_args.thrift_spec = ( None, # 0 - ( - 1, - TType.LIST, - "volume_ids", - (TType.STRING, "UTF8", False), - None, - ), # 1 + (1, TType.LIST, 'volume_ids', (TType.STRING, 'UTF8', False), None, ), # 1 ) @@ -7817,18 +6680,12 @@ class get_volumes_by_ids_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7854,13 +6711,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_volumes_by_ids_result") + oprot.writeStructBegin('get_volumes_by_ids_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter118 in self.success: iter118.write(oprot) @@ -7873,25 +6728,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_volumes_by_ids_result) get_volumes_by_ids_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Volume, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [Volume, None], False), None, ), # 0 ) @@ -7903,20 +6751,13 @@ class resize_volume_args(object): """ - def __init__( - self, - volume_id=None, - size=None, - ): + + def __init__(self, volume_id=None, size=None,): self.volume_id = volume_id self.size = size def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -7926,11 +6767,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -7945,21 +6782,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("resize_volume_args") + oprot.writeStructBegin('resize_volume_args') if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 1) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 1) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() if self.size is not None: - oprot.writeFieldBegin("size", TType.I32, 2) + oprot.writeFieldBegin('size', TType.I32, 2) oprot.writeI32(self.size) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -7969,33 +6800,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(resize_volume_args) resize_volume_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.I32, - "size", - None, - None, - ), # 2 + (1, TType.STRING, 'volume_id', 'UTF8', None, ), # 1 + (2, TType.I32, 'size', None, None, ), # 2 ) @@ -8006,18 +6824,12 @@ class resize_volume_result(object): """ - def __init__( - self, - v=None, - ): + + def __init__(self, v=None,): self.v = v def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8037,13 +6849,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("resize_volume_result") + oprot.writeStructBegin('resize_volume_result') if self.v is not None: - oprot.writeFieldBegin("v", TType.STRUCT, 1) + oprot.writeFieldBegin('v', TType.STRUCT, 1) self.v.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -8053,26 +6863,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(resize_volume_result) resize_volume_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "v", - [VolumeNotFoundException, None], - None, - ), # 1 + (1, TType.STRUCT, 'v', [VolumeNotFoundException, None], None, ), # 1 ) @@ -8087,14 +6890,8 @@ class open_port_range_for_vm_in_project_args(object): """ - def __init__( - self, - range_start=None, - range_stop=None, - openstack_id=None, - ethertype="IPv4", - protocol="TCP", - ): + + def __init__(self, range_start=None, range_stop=None, openstack_id=None, ethertype="IPv4", protocol="TCP",): self.range_start = range_start self.range_stop = range_stop self.openstack_id = openstack_id @@ -8102,11 +6899,7 @@ def __init__( self.protocol = protocol def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8126,29 +6919,17 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.ethertype = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.ethertype = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.protocol = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.protocol = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -8158,42 +6939,28 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("open_port_range_for_vm_in_project_args") + oprot.writeStructBegin('open_port_range_for_vm_in_project_args') if self.range_start is not None: - oprot.writeFieldBegin("range_start", TType.I32, 1) + oprot.writeFieldBegin('range_start', TType.I32, 1) oprot.writeI32(self.range_start) oprot.writeFieldEnd() if self.range_stop is not None: - oprot.writeFieldBegin("range_stop", TType.I32, 2) + oprot.writeFieldBegin('range_stop', TType.I32, 2) oprot.writeI32(self.range_stop) oprot.writeFieldEnd() if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 3) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 3) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.ethertype is not None: - oprot.writeFieldBegin("ethertype", TType.STRING, 4) - oprot.writeString( - self.ethertype.encode("utf-8") - if sys.version_info[0] == 2 - else self.ethertype - ) + oprot.writeFieldBegin('ethertype', TType.STRING, 4) + oprot.writeString(self.ethertype.encode('utf-8') if sys.version_info[0] == 2 else self.ethertype) oprot.writeFieldEnd() if self.protocol is not None: - oprot.writeFieldBegin("protocol", TType.STRING, 5) - oprot.writeString( - self.protocol.encode("utf-8") - if sys.version_info[0] == 2 - else self.protocol - ) + oprot.writeFieldBegin('protocol', TType.STRING, 5) + oprot.writeString(self.protocol.encode('utf-8') if sys.version_info[0] == 2 else self.protocol) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -8202,54 +6969,23 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(open_port_range_for_vm_in_project_args) open_port_range_for_vm_in_project_args.thrift_spec = ( None, # 0 - ( - 1, - TType.I32, - "range_start", - None, - None, - ), # 1 - ( - 2, - TType.I32, - "range_stop", - None, - None, - ), # 2 - ( - 3, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "ethertype", - "UTF8", - "IPv4", - ), # 4 - ( - 5, - TType.STRING, - "protocol", - "UTF8", - "TCP", - ), # 5 + (1, TType.I32, 'range_start', None, None, ), # 1 + (2, TType.I32, 'range_stop', None, None, ), # 2 + (3, TType.STRING, 'openstack_id', 'UTF8', None, ), # 3 + (4, TType.STRING, 'ethertype', 'UTF8', "IPv4", ), # 4 + (5, TType.STRING, 'protocol', 'UTF8', "TCP", ), # 5 ) @@ -8263,24 +6999,15 @@ class open_port_range_for_vm_in_project_result(object): """ - def __init__( - self, - success=None, - e=None, - v=None, - o=None, - ): + + def __init__(self, success=None, e=None, v=None, o=None,): self.success = success self.e = e self.v = v self.o = o def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8290,11 +7017,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 1: @@ -8319,29 +7042,23 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("open_port_range_for_vm_in_project_result") + oprot.writeStructBegin('open_port_range_for_vm_in_project_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.v is not None: - oprot.writeFieldBegin("v", TType.STRUCT, 2) + oprot.writeFieldBegin('v', TType.STRUCT, 2) self.v.write(oprot) oprot.writeFieldEnd() if self.o is not None: - oprot.writeFieldBegin("o", TType.STRUCT, 3) + oprot.writeFieldBegin('o', TType.STRUCT, 3) self.o.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -8351,46 +7068,21 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(open_port_range_for_vm_in_project_result) open_port_range_for_vm_in_project_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "v", - [DefaultException, None], - None, - ), # 2 - ( - 3, - TType.STRUCT, - "o", - [OpenStackConflictException, None], - None, - ), # 3 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'v', [DefaultException, None], None, ), # 2 + (3, TType.STRUCT, 'o', [OpenStackConflictException, None], None, ), # 3 ) @@ -8401,18 +7093,12 @@ class delete_security_group_rule_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8422,11 +7108,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -8436,18 +7118,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_security_group_rule_args") + oprot.writeStructBegin('delete_security_group_rule_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -8456,26 +7132,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_security_group_rule_args) delete_security_group_rule_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -8483,21 +7152,20 @@ class delete_security_group_rule_result(object): """ Attributes: - e + - f """ def __init__( self, e=None, + f=None, ): self.e = e + self.f = f def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8510,6 +7178,11 @@ def read(self, iprot): self.e = SecurityGroupRuleNotFoundException.read(iprot) else: iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.f = DefaultException.read(iprot) + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -8517,15 +7190,17 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_security_group_rule_result") + oprot.writeStructBegin('delete_security_group_rule_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() + if self.f is not None: + oprot.writeFieldBegin("f", TType.STRUCT, 2) + self.f.write(oprot) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -8533,16 +7208,15 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_security_group_rule_result) delete_security_group_rule_result.thrift_spec = ( None, # 0 @@ -8553,6 +7227,13 @@ def __ne__(self, other): [SecurityGroupRuleNotFoundException, None], None, ), # 1 + ( + 2, + TType.STRUCT, + "f", + [DefaultException, None], + None, + ), # 2 ) @@ -8563,18 +7244,12 @@ class delete_server_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8584,11 +7259,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -8598,18 +7269,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_server_args") + oprot.writeStructBegin('delete_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -8618,26 +7283,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_server_args) delete_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -8649,20 +7307,13 @@ class delete_server_result(object): """ - def __init__( - self, - e=None, - c=None, - ): + + def __init__(self, e=None, c=None,): self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8687,17 +7338,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_server_result") + oprot.writeStructBegin('delete_server_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -8707,33 +7356,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_server_result) delete_server_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) @@ -8753,19 +7389,8 @@ class start_server_args(object): """ - def __init__( - self, - flavor_name=None, - image_name=None, - public_key=None, - servername=None, - metadata=None, - volume_ids_path_new=None, - volume_ids_path_attach=None, - additional_keys=None, - research_environment=None, - additional_security_group_ids=None, - ): + + def __init__(self, flavor_name=None, image_name=None, public_key=None, servername=None, metadata=None, volume_ids_path_new=None, volume_ids_path_attach=None, additional_keys=None, research_environment=None, additional_security_group_ids=None,): self.flavor_name = flavor_name self.image_name = image_name self.public_key = public_key @@ -8778,11 +7403,7 @@ def __init__( self.additional_security_group_ids = additional_security_group_ids def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -8792,38 +7413,22 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.flavor_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.flavor_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.image_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.image_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.public_key = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.public_key = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.servername = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.servername = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: @@ -8831,16 +7436,8 @@ def read(self, iprot): self.metadata = {} (_ktype120, _vtype121, _size119) = iprot.readMapBegin() for _i123 in range(_size119): - _key124 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val125 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key124 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val125 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key124] = _val125 iprot.readMapEnd() else: @@ -8853,16 +7450,8 @@ def read(self, iprot): _elem131 = {} (_ktype133, _vtype134, _size132) = iprot.readMapBegin() for _i136 in range(_size132): - _key137 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val138 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key137 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val138 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() _elem131[_key137] = _val138 iprot.readMapEnd() self.volume_ids_path_new.append(_elem131) @@ -8877,16 +7466,8 @@ def read(self, iprot): _elem144 = {} (_ktype146, _vtype147, _size145) = iprot.readMapBegin() for _i149 in range(_size145): - _key150 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val151 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key150 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val151 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() _elem144[_key150] = _val151 iprot.readMapEnd() self.volume_ids_path_attach.append(_elem144) @@ -8898,22 +7479,14 @@ def read(self, iprot): self.additional_keys = [] (_etype155, _size152) = iprot.readListBegin() for _i156 in range(_size152): - _elem157 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem157 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.additional_keys.append(_elem157) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 10: if ftype == TType.STRING: - self.research_environment = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.research_environment = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 11: @@ -8921,11 +7494,7 @@ def read(self, iprot): self.additional_security_group_ids = [] (_etype161, _size158) = iprot.readListBegin() for _i162 in range(_size158): - _elem163 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem163 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.additional_security_group_ids.append(_elem163) iprot.readListEnd() else: @@ -8937,117 +7506,71 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("start_server_args") + oprot.writeStructBegin('start_server_args') if self.flavor_name is not None: - oprot.writeFieldBegin("flavor_name", TType.STRING, 1) - oprot.writeString( - self.flavor_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.flavor_name - ) + oprot.writeFieldBegin('flavor_name', TType.STRING, 1) + oprot.writeString(self.flavor_name.encode('utf-8') if sys.version_info[0] == 2 else self.flavor_name) oprot.writeFieldEnd() if self.image_name is not None: - oprot.writeFieldBegin("image_name", TType.STRING, 2) - oprot.writeString( - self.image_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.image_name - ) + oprot.writeFieldBegin('image_name', TType.STRING, 2) + oprot.writeString(self.image_name.encode('utf-8') if sys.version_info[0] == 2 else self.image_name) oprot.writeFieldEnd() if self.public_key is not None: - oprot.writeFieldBegin("public_key", TType.STRING, 3) - oprot.writeString( - self.public_key.encode("utf-8") - if sys.version_info[0] == 2 - else self.public_key - ) + oprot.writeFieldBegin('public_key', TType.STRING, 3) + oprot.writeString(self.public_key.encode('utf-8') if sys.version_info[0] == 2 else self.public_key) oprot.writeFieldEnd() if self.servername is not None: - oprot.writeFieldBegin("servername", TType.STRING, 4) - oprot.writeString( - self.servername.encode("utf-8") - if sys.version_info[0] == 2 - else self.servername - ) + oprot.writeFieldBegin('servername', TType.STRING, 4) + oprot.writeString(self.servername.encode('utf-8') if sys.version_info[0] == 2 else self.servername) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 5) + oprot.writeFieldBegin('metadata', TType.MAP, 5) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter164, viter165 in self.metadata.items(): - oprot.writeString( - kiter164.encode("utf-8") if sys.version_info[0] == 2 else kiter164 - ) - oprot.writeString( - viter165.encode("utf-8") if sys.version_info[0] == 2 else viter165 - ) + oprot.writeString(kiter164.encode('utf-8') if sys.version_info[0] == 2 else kiter164) + oprot.writeString(viter165.encode('utf-8') if sys.version_info[0] == 2 else viter165) oprot.writeMapEnd() oprot.writeFieldEnd() if self.volume_ids_path_new is not None: - oprot.writeFieldBegin("volume_ids_path_new", TType.LIST, 7) + oprot.writeFieldBegin('volume_ids_path_new', TType.LIST, 7) oprot.writeListBegin(TType.MAP, len(self.volume_ids_path_new)) for iter166 in self.volume_ids_path_new: oprot.writeMapBegin(TType.STRING, TType.STRING, len(iter166)) for kiter167, viter168 in iter166.items(): - oprot.writeString( - kiter167.encode("utf-8") - if sys.version_info[0] == 2 - else kiter167 - ) - oprot.writeString( - viter168.encode("utf-8") - if sys.version_info[0] == 2 - else viter168 - ) + oprot.writeString(kiter167.encode('utf-8') if sys.version_info[0] == 2 else kiter167) + oprot.writeString(viter168.encode('utf-8') if sys.version_info[0] == 2 else viter168) oprot.writeMapEnd() oprot.writeListEnd() oprot.writeFieldEnd() if self.volume_ids_path_attach is not None: - oprot.writeFieldBegin("volume_ids_path_attach", TType.LIST, 8) + oprot.writeFieldBegin('volume_ids_path_attach', TType.LIST, 8) oprot.writeListBegin(TType.MAP, len(self.volume_ids_path_attach)) for iter169 in self.volume_ids_path_attach: oprot.writeMapBegin(TType.STRING, TType.STRING, len(iter169)) for kiter170, viter171 in iter169.items(): - oprot.writeString( - kiter170.encode("utf-8") - if sys.version_info[0] == 2 - else kiter170 - ) - oprot.writeString( - viter171.encode("utf-8") - if sys.version_info[0] == 2 - else viter171 - ) + oprot.writeString(kiter170.encode('utf-8') if sys.version_info[0] == 2 else kiter170) + oprot.writeString(viter171.encode('utf-8') if sys.version_info[0] == 2 else viter171) oprot.writeMapEnd() oprot.writeListEnd() oprot.writeFieldEnd() if self.additional_keys is not None: - oprot.writeFieldBegin("additional_keys", TType.LIST, 9) + oprot.writeFieldBegin('additional_keys', TType.LIST, 9) oprot.writeListBegin(TType.STRING, len(self.additional_keys)) for iter172 in self.additional_keys: - oprot.writeString( - iter172.encode("utf-8") if sys.version_info[0] == 2 else iter172 - ) + oprot.writeString(iter172.encode('utf-8') if sys.version_info[0] == 2 else iter172) oprot.writeListEnd() oprot.writeFieldEnd() if self.research_environment is not None: - oprot.writeFieldBegin("research_environment", TType.STRING, 10) - oprot.writeString( - self.research_environment.encode("utf-8") - if sys.version_info[0] == 2 - else self.research_environment - ) + oprot.writeFieldBegin('research_environment', TType.STRING, 10) + oprot.writeString(self.research_environment.encode('utf-8') if sys.version_info[0] == 2 else self.research_environment) oprot.writeFieldEnd() if self.additional_security_group_ids is not None: - oprot.writeFieldBegin("additional_security_group_ids", TType.LIST, 11) + oprot.writeFieldBegin('additional_security_group_ids', TType.LIST, 11) oprot.writeListBegin(TType.STRING, len(self.additional_security_group_ids)) for iter173 in self.additional_security_group_ids: - oprot.writeString( - iter173.encode("utf-8") if sys.version_info[0] == 2 else iter173 - ) + oprot.writeString(iter173.encode('utf-8') if sys.version_info[0] == 2 else iter173) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -9057,90 +7580,29 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(start_server_args) start_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "flavor_name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "image_name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "public_key", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "servername", - "UTF8", - None, - ), # 4 - ( - 5, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 5 + (1, TType.STRING, 'flavor_name', 'UTF8', None, ), # 1 + (2, TType.STRING, 'image_name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'public_key', 'UTF8', None, ), # 3 + (4, TType.STRING, 'servername', 'UTF8', None, ), # 4 + (5, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 5 None, # 6 - ( - 7, - TType.LIST, - "volume_ids_path_new", - (TType.MAP, (TType.STRING, "UTF8", TType.STRING, "UTF8", False), False), - None, - ), # 7 - ( - 8, - TType.LIST, - "volume_ids_path_attach", - (TType.MAP, (TType.STRING, "UTF8", TType.STRING, "UTF8", False), False), - None, - ), # 8 - ( - 9, - TType.LIST, - "additional_keys", - (TType.STRING, "UTF8", False), - None, - ), # 9 - ( - 10, - TType.STRING, - "research_environment", - "UTF8", - None, - ), # 10 - ( - 11, - TType.LIST, - "additional_security_group_ids", - (TType.STRING, "UTF8", False), - None, - ), # 11 + (7, TType.LIST, 'volume_ids_path_new', (TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 7 + (8, TType.LIST, 'volume_ids_path_attach', (TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 8 + (9, TType.LIST, 'additional_keys', (TType.STRING, 'UTF8', False), None, ), # 9 + (10, TType.STRING, 'research_environment', 'UTF8', None, ), # 10 + (11, TType.LIST, 'additional_security_group_ids', (TType.STRING, 'UTF8', False), None, ), # 11 ) @@ -9156,15 +7618,8 @@ class start_server_result(object): """ - def __init__( - self, - success=None, - e=None, - r=None, - i=None, - f=None, - o=None, - ): + + def __init__(self, success=None, e=None, r=None, i=None, f=None, o=None,): self.success = success self.e = e self.r = r @@ -9173,11 +7628,7 @@ def __init__( self.o = o def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -9187,11 +7638,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 1: @@ -9226,37 +7673,31 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("start_server_result") + oprot.writeStructBegin('start_server_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 2) + oprot.writeFieldBegin('r', TType.STRUCT, 2) self.r.write(oprot) oprot.writeFieldEnd() if self.i is not None: - oprot.writeFieldBegin("i", TType.STRUCT, 5) + oprot.writeFieldBegin('i', TType.STRUCT, 5) self.i.write(oprot) oprot.writeFieldEnd() if self.f is not None: - oprot.writeFieldBegin("f", TType.STRUCT, 6) + oprot.writeFieldBegin('f', TType.STRUCT, 6) self.f.write(oprot) oprot.writeFieldEnd() if self.o is not None: - oprot.writeFieldBegin("o", TType.STRUCT, 7) + oprot.writeFieldBegin('o', TType.STRUCT, 7) self.o.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -9266,72 +7707,33 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(start_server_result) start_server_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [NameAlreadyUsedException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "r", - [ResourceNotAvailableException, None], - None, - ), # 2 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (1, TType.STRUCT, 'e', [NameAlreadyUsedException, None], None, ), # 1 + (2, TType.STRUCT, 'r', [ResourceNotAvailableException, None], None, ), # 2 None, # 3 None, # 4 - ( - 5, - TType.STRUCT, - "i", - [ImageNotFoundException, None], - None, - ), # 5 - ( - 6, - TType.STRUCT, - "f", - [FlavorNotFoundException, None], - None, - ), # 6 - ( - 7, - TType.STRUCT, - "o", - [DefaultException, None], - None, - ), # 7 + (5, TType.STRUCT, 'i', [ImageNotFoundException, None], None, ), # 5 + (6, TType.STRUCT, 'f', [FlavorNotFoundException, None], None, ), # 6 + (7, TType.STRUCT, 'o', [DefaultException, None], None, ), # 7 ) class is_bibigrid_available_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -9346,11 +7748,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("is_bibigrid_available_args") + oprot.writeStructBegin('is_bibigrid_available_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -9358,18 +7758,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(is_bibigrid_available_args) -is_bibigrid_available_args.thrift_spec = () +is_bibigrid_available_args.thrift_spec = ( +) class is_bibigrid_available_result(object): @@ -9379,18 +7779,12 @@ class is_bibigrid_available_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -9410,13 +7804,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("is_bibigrid_available_result") + oprot.writeStructBegin('is_bibigrid_available_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.BOOL, 0) + oprot.writeFieldBegin('success', TType.BOOL, 0) oprot.writeBool(self.success) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -9426,25 +7818,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(is_bibigrid_available_result) is_bibigrid_available_result.thrift_spec = ( - ( - 0, - TType.BOOL, - "success", - None, - None, - ), # 0 + (0, TType.BOOL, 'success', None, None, ), # 0 ) @@ -9456,20 +7841,13 @@ class detach_ip_from_server_args(object): """ - def __init__( - self, - server_id=None, - floating_ip=None, - ): + + def __init__(self, server_id=None, floating_ip=None,): self.server_id = server_id self.floating_ip = floating_ip def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -9479,20 +7857,12 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.server_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.server_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.floating_ip = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.floating_ip = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -9502,26 +7872,16 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("detach_ip_from_server_args") + oprot.writeStructBegin('detach_ip_from_server_args') if self.server_id is not None: - oprot.writeFieldBegin("server_id", TType.STRING, 1) - oprot.writeString( - self.server_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.server_id - ) + oprot.writeFieldBegin('server_id', TType.STRING, 1) + oprot.writeString(self.server_id.encode('utf-8') if sys.version_info[0] == 2 else self.server_id) oprot.writeFieldEnd() if self.floating_ip is not None: - oprot.writeFieldBegin("floating_ip", TType.STRING, 2) - oprot.writeString( - self.floating_ip.encode("utf-8") - if sys.version_info[0] == 2 - else self.floating_ip - ) + oprot.writeFieldBegin('floating_ip', TType.STRING, 2) + oprot.writeString(self.floating_ip.encode('utf-8') if sys.version_info[0] == 2 else self.floating_ip) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -9530,33 +7890,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(detach_ip_from_server_args) detach_ip_from_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "server_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "floating_ip", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'server_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'floating_ip', 'UTF8', None, ), # 2 ) @@ -9567,18 +7914,12 @@ class detach_ip_from_server_result(object): """ - def __init__( - self, - s=None, - ): + + def __init__(self, s=None,): self.s = s def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -9598,13 +7939,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("detach_ip_from_server_result") + oprot.writeStructBegin('detach_ip_from_server_result') if self.s is not None: - oprot.writeFieldBegin("s", TType.STRUCT, 1) + oprot.writeFieldBegin('s', TType.STRUCT, 1) self.s.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -9614,26 +7953,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(detach_ip_from_server_result) detach_ip_from_server_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "s", - [ServerNotFoundException, None], - None, - ), # 1 + (1, TType.STRUCT, 's', [ServerNotFoundException, None], None, ), # 1 ) @@ -9651,17 +7983,8 @@ class start_server_with_custom_key_args(object): """ - def __init__( - self, - flavor_name=None, - image_name=None, - servername=None, - metadata=None, - research_environment=None, - volume_ids_path_new=None, - volume_ids_path_attach=None, - additional_security_group_ids=None, - ): + + def __init__(self, flavor_name=None, image_name=None, servername=None, metadata=None, research_environment=None, volume_ids_path_new=None, volume_ids_path_attach=None, additional_security_group_ids=None,): self.flavor_name = flavor_name self.image_name = image_name self.servername = servername @@ -9672,11 +7995,7 @@ def __init__( self.additional_security_group_ids = additional_security_group_ids def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -9686,29 +8005,17 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.flavor_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.flavor_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.image_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.image_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.servername = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.servername = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: @@ -9716,27 +8023,15 @@ def read(self, iprot): self.metadata = {} (_ktype175, _vtype176, _size174) = iprot.readMapBegin() for _i178 in range(_size174): - _key179 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val180 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key179 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val180 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key179] = _val180 iprot.readMapEnd() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.research_environment = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.research_environment = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 7: @@ -9747,16 +8042,8 @@ def read(self, iprot): _elem186 = {} (_ktype188, _vtype189, _size187) = iprot.readMapBegin() for _i191 in range(_size187): - _key192 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val193 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key192 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val193 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() _elem186[_key192] = _val193 iprot.readMapEnd() self.volume_ids_path_new.append(_elem186) @@ -9771,16 +8058,8 @@ def read(self, iprot): _elem199 = {} (_ktype201, _vtype202, _size200) = iprot.readMapBegin() for _i204 in range(_size200): - _key205 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val206 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key205 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val206 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() _elem199[_key205] = _val206 iprot.readMapEnd() self.volume_ids_path_attach.append(_elem199) @@ -9792,11 +8071,7 @@ def read(self, iprot): self.additional_security_group_ids = [] (_etype210, _size207) = iprot.readListBegin() for _i211 in range(_size207): - _elem212 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem212 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.additional_security_group_ids.append(_elem212) iprot.readListEnd() else: @@ -9808,100 +8083,60 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("start_server_with_custom_key_args") + oprot.writeStructBegin('start_server_with_custom_key_args') if self.flavor_name is not None: - oprot.writeFieldBegin("flavor_name", TType.STRING, 1) - oprot.writeString( - self.flavor_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.flavor_name - ) + oprot.writeFieldBegin('flavor_name', TType.STRING, 1) + oprot.writeString(self.flavor_name.encode('utf-8') if sys.version_info[0] == 2 else self.flavor_name) oprot.writeFieldEnd() if self.image_name is not None: - oprot.writeFieldBegin("image_name", TType.STRING, 2) - oprot.writeString( - self.image_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.image_name - ) + oprot.writeFieldBegin('image_name', TType.STRING, 2) + oprot.writeString(self.image_name.encode('utf-8') if sys.version_info[0] == 2 else self.image_name) oprot.writeFieldEnd() if self.servername is not None: - oprot.writeFieldBegin("servername", TType.STRING, 3) - oprot.writeString( - self.servername.encode("utf-8") - if sys.version_info[0] == 2 - else self.servername - ) + oprot.writeFieldBegin('servername', TType.STRING, 3) + oprot.writeString(self.servername.encode('utf-8') if sys.version_info[0] == 2 else self.servername) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 4) + oprot.writeFieldBegin('metadata', TType.MAP, 4) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter213, viter214 in self.metadata.items(): - oprot.writeString( - kiter213.encode("utf-8") if sys.version_info[0] == 2 else kiter213 - ) - oprot.writeString( - viter214.encode("utf-8") if sys.version_info[0] == 2 else viter214 - ) + oprot.writeString(kiter213.encode('utf-8') if sys.version_info[0] == 2 else kiter213) + oprot.writeString(viter214.encode('utf-8') if sys.version_info[0] == 2 else viter214) oprot.writeMapEnd() oprot.writeFieldEnd() if self.research_environment is not None: - oprot.writeFieldBegin("research_environment", TType.STRING, 5) - oprot.writeString( - self.research_environment.encode("utf-8") - if sys.version_info[0] == 2 - else self.research_environment - ) + oprot.writeFieldBegin('research_environment', TType.STRING, 5) + oprot.writeString(self.research_environment.encode('utf-8') if sys.version_info[0] == 2 else self.research_environment) oprot.writeFieldEnd() if self.volume_ids_path_new is not None: - oprot.writeFieldBegin("volume_ids_path_new", TType.LIST, 7) + oprot.writeFieldBegin('volume_ids_path_new', TType.LIST, 7) oprot.writeListBegin(TType.MAP, len(self.volume_ids_path_new)) for iter215 in self.volume_ids_path_new: oprot.writeMapBegin(TType.STRING, TType.STRING, len(iter215)) for kiter216, viter217 in iter215.items(): - oprot.writeString( - kiter216.encode("utf-8") - if sys.version_info[0] == 2 - else kiter216 - ) - oprot.writeString( - viter217.encode("utf-8") - if sys.version_info[0] == 2 - else viter217 - ) + oprot.writeString(kiter216.encode('utf-8') if sys.version_info[0] == 2 else kiter216) + oprot.writeString(viter217.encode('utf-8') if sys.version_info[0] == 2 else viter217) oprot.writeMapEnd() oprot.writeListEnd() oprot.writeFieldEnd() if self.volume_ids_path_attach is not None: - oprot.writeFieldBegin("volume_ids_path_attach", TType.LIST, 8) + oprot.writeFieldBegin('volume_ids_path_attach', TType.LIST, 8) oprot.writeListBegin(TType.MAP, len(self.volume_ids_path_attach)) for iter218 in self.volume_ids_path_attach: oprot.writeMapBegin(TType.STRING, TType.STRING, len(iter218)) for kiter219, viter220 in iter218.items(): - oprot.writeString( - kiter219.encode("utf-8") - if sys.version_info[0] == 2 - else kiter219 - ) - oprot.writeString( - viter220.encode("utf-8") - if sys.version_info[0] == 2 - else viter220 - ) + oprot.writeString(kiter219.encode('utf-8') if sys.version_info[0] == 2 else kiter219) + oprot.writeString(viter220.encode('utf-8') if sys.version_info[0] == 2 else viter220) oprot.writeMapEnd() oprot.writeListEnd() oprot.writeFieldEnd() if self.additional_security_group_ids is not None: - oprot.writeFieldBegin("additional_security_group_ids", TType.LIST, 9) + oprot.writeFieldBegin('additional_security_group_ids', TType.LIST, 9) oprot.writeListBegin(TType.STRING, len(self.additional_security_group_ids)) for iter221 in self.additional_security_group_ids: - oprot.writeString( - iter221.encode("utf-8") if sys.version_info[0] == 2 else iter221 - ) + oprot.writeString(iter221.encode('utf-8') if sys.version_info[0] == 2 else iter221) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -9911,76 +8146,27 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(start_server_with_custom_key_args) start_server_with_custom_key_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "flavor_name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "image_name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "servername", - "UTF8", - None, - ), # 3 - ( - 4, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 4 - ( - 5, - TType.STRING, - "research_environment", - "UTF8", - None, - ), # 5 + (1, TType.STRING, 'flavor_name', 'UTF8', None, ), # 1 + (2, TType.STRING, 'image_name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'servername', 'UTF8', None, ), # 3 + (4, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 4 + (5, TType.STRING, 'research_environment', 'UTF8', None, ), # 5 None, # 6 - ( - 7, - TType.LIST, - "volume_ids_path_new", - (TType.MAP, (TType.STRING, "UTF8", TType.STRING, "UTF8", False), False), - None, - ), # 7 - ( - 8, - TType.LIST, - "volume_ids_path_attach", - (TType.MAP, (TType.STRING, "UTF8", TType.STRING, "UTF8", False), False), - None, - ), # 8 - ( - 9, - TType.LIST, - "additional_security_group_ids", - (TType.STRING, "UTF8", False), - None, - ), # 9 + (7, TType.LIST, 'volume_ids_path_new', (TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 7 + (8, TType.LIST, 'volume_ids_path_attach', (TType.MAP, (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), False), None, ), # 8 + (9, TType.LIST, 'additional_security_group_ids', (TType.STRING, 'UTF8', False), None, ), # 9 ) @@ -9996,15 +8182,8 @@ class start_server_with_custom_key_result(object): """ - def __init__( - self, - success=None, - e=None, - r=None, - i=None, - f=None, - d=None, - ): + + def __init__(self, success=None, e=None, r=None, i=None, f=None, d=None,): self.success = success self.e = e self.r = r @@ -10013,11 +8192,7 @@ def __init__( self.d = d def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10027,11 +8202,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 1: @@ -10066,37 +8237,31 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("start_server_with_custom_key_result") + oprot.writeStructBegin('start_server_with_custom_key_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 2) + oprot.writeFieldBegin('r', TType.STRUCT, 2) self.r.write(oprot) oprot.writeFieldEnd() if self.i is not None: - oprot.writeFieldBegin("i", TType.STRUCT, 3) + oprot.writeFieldBegin('i', TType.STRUCT, 3) self.i.write(oprot) oprot.writeFieldEnd() if self.f is not None: - oprot.writeFieldBegin("f", TType.STRUCT, 4) + oprot.writeFieldBegin('f', TType.STRUCT, 4) self.f.write(oprot) oprot.writeFieldEnd() if self.d is not None: - oprot.writeFieldBegin("d", TType.STRUCT, 5) + oprot.writeFieldBegin('d', TType.STRUCT, 5) self.d.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -10106,60 +8271,23 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(start_server_with_custom_key_result) start_server_with_custom_key_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [NameAlreadyUsedException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "r", - [ResourceNotAvailableException, None], - None, - ), # 2 - ( - 3, - TType.STRUCT, - "i", - [ImageNotFoundException, None], - None, - ), # 3 - ( - 4, - TType.STRUCT, - "f", - [FlavorNotFoundException, None], - None, - ), # 4 - ( - 5, - TType.STRUCT, - "d", - [DefaultException, None], - None, - ), # 5 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (1, TType.STRUCT, 'e', [NameAlreadyUsedException, None], None, ), # 1 + (2, TType.STRUCT, 'r', [ResourceNotAvailableException, None], None, ), # 2 + (3, TType.STRUCT, 'i', [ImageNotFoundException, None], None, ), # 3 + (4, TType.STRUCT, 'f', [FlavorNotFoundException, None], None, ), # 4 + (5, TType.STRUCT, 'd', [DefaultException, None], None, ), # 5 ) @@ -10170,18 +8298,12 @@ class exist_server_args(object): """ - def __init__( - self, - name=None, - ): + + def __init__(self, name=None,): self.name = name def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10191,11 +8313,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -10205,16 +8323,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("exist_server_args") + oprot.writeStructBegin('exist_server_args') if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 1) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 1) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -10223,26 +8337,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(exist_server_args) exist_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "name", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'name', 'UTF8', None, ), # 1 ) @@ -10253,18 +8360,12 @@ class exist_server_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10284,13 +8385,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("exist_server_result") + oprot.writeStructBegin('exist_server_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.BOOL, 0) + oprot.writeFieldBegin('success', TType.BOOL, 0) oprot.writeBool(self.success) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -10300,25 +8399,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(exist_server_result) exist_server_result.thrift_spec = ( - ( - 0, - TType.BOOL, - "success", - None, - None, - ), # 0 + (0, TType.BOOL, 'success', None, None, ), # 0 ) @@ -10335,16 +8427,8 @@ class create_and_deploy_playbook_args(object): """ - def __init__( - self, - public_key=None, - openstack_id=None, - conda_packages=None, - research_environment_template=None, - apt_packages=None, - create_only_backend=None, - base_url=None, - ): + + def __init__(self, public_key=None, openstack_id=None, conda_packages=None, research_environment_template=None, apt_packages=None, create_only_backend=None, base_url=None,): self.public_key = public_key self.openstack_id = openstack_id self.conda_packages = conda_packages @@ -10354,11 +8438,7 @@ def __init__( self.base_url = base_url def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10368,20 +8448,12 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.public_key = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.public_key = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: @@ -10397,11 +8469,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.research_environment_template = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.research_environment_template = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: @@ -10409,11 +8477,7 @@ def read(self, iprot): self.apt_packages = [] (_etype231, _size228) = iprot.readListBegin() for _i232 in range(_size228): - _elem233 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem233 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.apt_packages.append(_elem233) iprot.readListEnd() else: @@ -10425,11 +8489,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 7: if ftype == TType.STRING: - self.base_url = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.base_url = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -10439,62 +8499,42 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_and_deploy_playbook_args") + oprot.writeStructBegin('create_and_deploy_playbook_args') if self.public_key is not None: - oprot.writeFieldBegin("public_key", TType.STRING, 1) - oprot.writeString( - self.public_key.encode("utf-8") - if sys.version_info[0] == 2 - else self.public_key - ) + oprot.writeFieldBegin('public_key', TType.STRING, 1) + oprot.writeString(self.public_key.encode('utf-8') if sys.version_info[0] == 2 else self.public_key) oprot.writeFieldEnd() if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 2) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 2) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.conda_packages is not None: - oprot.writeFieldBegin("conda_packages", TType.LIST, 3) + oprot.writeFieldBegin('conda_packages', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.conda_packages)) for iter234 in self.conda_packages: iter234.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.research_environment_template is not None: - oprot.writeFieldBegin("research_environment_template", TType.STRING, 4) - oprot.writeString( - self.research_environment_template.encode("utf-8") - if sys.version_info[0] == 2 - else self.research_environment_template - ) + oprot.writeFieldBegin('research_environment_template', TType.STRING, 4) + oprot.writeString(self.research_environment_template.encode('utf-8') if sys.version_info[0] == 2 else self.research_environment_template) oprot.writeFieldEnd() if self.apt_packages is not None: - oprot.writeFieldBegin("apt_packages", TType.LIST, 5) + oprot.writeFieldBegin('apt_packages', TType.LIST, 5) oprot.writeListBegin(TType.STRING, len(self.apt_packages)) for iter235 in self.apt_packages: - oprot.writeString( - iter235.encode("utf-8") if sys.version_info[0] == 2 else iter235 - ) + oprot.writeString(iter235.encode('utf-8') if sys.version_info[0] == 2 else iter235) oprot.writeListEnd() oprot.writeFieldEnd() if self.create_only_backend is not None: - oprot.writeFieldBegin("create_only_backend", TType.BOOL, 6) + oprot.writeFieldBegin('create_only_backend', TType.BOOL, 6) oprot.writeBool(self.create_only_backend) oprot.writeFieldEnd() if self.base_url is not None: - oprot.writeFieldBegin("base_url", TType.STRING, 7) - oprot.writeString( - self.base_url.encode("utf-8") - if sys.version_info[0] == 2 - else self.base_url - ) + oprot.writeFieldBegin('base_url', TType.STRING, 7) + oprot.writeString(self.base_url.encode('utf-8') if sys.version_info[0] == 2 else self.base_url) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -10503,68 +8543,25 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_and_deploy_playbook_args) create_and_deploy_playbook_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "public_key", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 2 - ( - 3, - TType.LIST, - "conda_packages", - (TType.STRUCT, [CondaPackage, None], False), - None, - ), # 3 - ( - 4, - TType.STRING, - "research_environment_template", - "UTF8", - None, - ), # 4 - ( - 5, - TType.LIST, - "apt_packages", - (TType.STRING, "UTF8", False), - None, - ), # 5 - ( - 6, - TType.BOOL, - "create_only_backend", - None, - None, - ), # 6 - ( - 7, - TType.STRING, - "base_url", - "UTF8", - None, - ), # 7 + (1, TType.STRING, 'public_key', 'UTF8', None, ), # 1 + (2, TType.STRING, 'openstack_id', 'UTF8', None, ), # 2 + (3, TType.LIST, 'conda_packages', (TType.STRUCT, [CondaPackage, None], False), None, ), # 3 + (4, TType.STRING, 'research_environment_template', 'UTF8', None, ), # 4 + (5, TType.LIST, 'apt_packages', (TType.STRING, 'UTF8', False), None, ), # 5 + (6, TType.BOOL, 'create_only_backend', None, None, ), # 6 + (7, TType.STRING, 'base_url', 'UTF8', None, ), # 7 ) @@ -10576,20 +8573,13 @@ class create_and_deploy_playbook_result(object): """ - def __init__( - self, - success=None, - s=None, - ): + + def __init__(self, success=None, s=None,): self.success = success self.s = s def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10614,17 +8604,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_and_deploy_playbook_result") + oprot.writeStructBegin('create_and_deploy_playbook_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.I32, 0) + oprot.writeFieldBegin('success', TType.I32, 0) oprot.writeI32(self.success) oprot.writeFieldEnd() if self.s is not None: - oprot.writeFieldBegin("s", TType.STRUCT, 1) + oprot.writeFieldBegin('s', TType.STRUCT, 1) self.s.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -10634,32 +8622,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_and_deploy_playbook_result) create_and_deploy_playbook_result.thrift_spec = ( - ( - 0, - TType.I32, - "success", - None, - None, - ), # 0 - ( - 1, - TType.STRUCT, - "s", - [ServerNotFoundException, None], - None, - ), # 1 + (0, TType.I32, 'success', None, None, ), # 0 + (1, TType.STRUCT, 's', [ServerNotFoundException, None], None, ), # 1 ) @@ -10670,18 +8645,12 @@ class get_playbook_logs_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10691,11 +8660,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -10705,18 +8670,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_playbook_logs_args") + oprot.writeStructBegin('get_playbook_logs_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -10725,26 +8684,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_playbook_logs_args) get_playbook_logs_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -10756,20 +8708,13 @@ class get_playbook_logs_result(object): """ - def __init__( - self, - success=None, - p=None, - ): + + def __init__(self, success=None, p=None,): self.success = success self.p = p def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10795,17 +8740,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_playbook_logs_result") + oprot.writeStructBegin('get_playbook_logs_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.p is not None: - oprot.writeFieldBegin("p", TType.STRUCT, 1) + oprot.writeFieldBegin('p', TType.STRUCT, 1) self.p.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -10815,42 +8758,27 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_playbook_logs_result) get_playbook_logs_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [PlaybookResult, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "p", - [PlaybookNotFoundException, None], - None, - ), # 1 + (0, TType.STRUCT, 'success', [PlaybookResult, None], None, ), # 0 + (1, TType.STRUCT, 'p', [PlaybookNotFoundException, None], None, ), # 1 ) class has_forc_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10865,11 +8793,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("has_forc_args") + oprot.writeStructBegin('has_forc_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -10877,18 +8803,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(has_forc_args) -has_forc_args.thrift_spec = () +has_forc_args.thrift_spec = ( +) class has_forc_result(object): @@ -10898,18 +8824,12 @@ class has_forc_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10929,13 +8849,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("has_forc_result") + oprot.writeStructBegin('has_forc_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.BOOL, 0) + oprot.writeFieldBegin('success', TType.BOOL, 0) oprot.writeBool(self.success) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -10945,35 +8863,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(has_forc_result) has_forc_result.thrift_spec = ( - ( - 0, - TType.BOOL, - "success", - None, - None, - ), # 0 + (0, TType.BOOL, 'success', None, None, ), # 0 ) class get_forc_url_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -10988,11 +8897,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_forc_url_args") + oprot.writeStructBegin('get_forc_url_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -11000,18 +8907,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_forc_url_args) -get_forc_url_args.thrift_spec = () +get_forc_url_args.thrift_spec = ( +) class get_forc_url_result(object): @@ -11021,18 +8928,12 @@ class get_forc_url_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11042,11 +8943,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -11056,18 +8953,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_forc_url_result") + oprot.writeStructBegin('get_forc_url_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11076,25 +8967,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_forc_url_result) get_forc_url_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 ) @@ -11108,24 +8992,15 @@ class create_backend_args(object): """ - def __init__( - self, - owner=None, - user_path=None, - template=None, - upstream_url=None, - ): + + def __init__(self, owner=None, user_path=None, template=None, upstream_url=None,): self.owner = owner self.user_path = user_path self.template = template self.upstream_url = upstream_url def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11135,38 +9010,22 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.owner = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.owner = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.user_path = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.user_path = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.template = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.template = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.upstream_url = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.upstream_url = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -11176,40 +9035,24 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_backend_args") + oprot.writeStructBegin('create_backend_args') if self.owner is not None: - oprot.writeFieldBegin("owner", TType.STRING, 1) - oprot.writeString( - self.owner.encode("utf-8") if sys.version_info[0] == 2 else self.owner - ) + oprot.writeFieldBegin('owner', TType.STRING, 1) + oprot.writeString(self.owner.encode('utf-8') if sys.version_info[0] == 2 else self.owner) oprot.writeFieldEnd() if self.user_path is not None: - oprot.writeFieldBegin("user_path", TType.STRING, 2) - oprot.writeString( - self.user_path.encode("utf-8") - if sys.version_info[0] == 2 - else self.user_path - ) + oprot.writeFieldBegin('user_path', TType.STRING, 2) + oprot.writeString(self.user_path.encode('utf-8') if sys.version_info[0] == 2 else self.user_path) oprot.writeFieldEnd() if self.template is not None: - oprot.writeFieldBegin("template", TType.STRING, 3) - oprot.writeString( - self.template.encode("utf-8") - if sys.version_info[0] == 2 - else self.template - ) + oprot.writeFieldBegin('template', TType.STRING, 3) + oprot.writeString(self.template.encode('utf-8') if sys.version_info[0] == 2 else self.template) oprot.writeFieldEnd() if self.upstream_url is not None: - oprot.writeFieldBegin("upstream_url", TType.STRING, 4) - oprot.writeString( - self.upstream_url.encode("utf-8") - if sys.version_info[0] == 2 - else self.upstream_url - ) + oprot.writeFieldBegin('upstream_url', TType.STRING, 4) + oprot.writeString(self.upstream_url.encode('utf-8') if sys.version_info[0] == 2 else self.upstream_url) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11218,47 +9061,22 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_backend_args) create_backend_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "owner", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "user_path", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "template", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "upstream_url", - "UTF8", - None, - ), # 4 + (1, TType.STRING, 'owner', 'UTF8', None, ), # 1 + (2, TType.STRING, 'user_path', 'UTF8', None, ), # 2 + (3, TType.STRING, 'template', 'UTF8', None, ), # 3 + (4, TType.STRING, 'upstream_url', 'UTF8', None, ), # 4 ) @@ -11271,22 +9089,14 @@ class create_backend_result(object): """ - def __init__( - self, - success=None, - e=None, - d=None, - ): + + def __init__(self, success=None, e=None, d=None,): self.success = success self.e = e self.d = d def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11317,21 +9127,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_backend_result") + oprot.writeStructBegin('create_backend_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.d is not None: - oprot.writeFieldBegin("d", TType.STRUCT, 2) + oprot.writeFieldBegin('d', TType.STRUCT, 2) self.d.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11341,49 +9149,28 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_backend_result) create_backend_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Backend, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [TemplateNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "d", - [DefaultException, None], - None, - ), # 2 + (0, TType.STRUCT, 'success', [Backend, None], None, ), # 0 + (1, TType.STRUCT, 'e', [TemplateNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'd', [DefaultException, None], None, ), # 2 ) class get_backends_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11398,11 +9185,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backends_args") + oprot.writeStructBegin('get_backends_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -11410,18 +9195,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backends_args) -get_backends_args.thrift_spec = () +get_backends_args.thrift_spec = ( +) class get_backends_result(object): @@ -11432,20 +9217,13 @@ class get_backends_result(object): """ - def __init__( - self, - success=None, - d=None, - ): + + def __init__(self, success=None, d=None,): self.success = success self.d = d def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11476,20 +9254,18 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backends_result") + oprot.writeStructBegin('get_backends_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter242 in self.success: iter242.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.d is not None: - oprot.writeFieldBegin("d", TType.STRUCT, 1) + oprot.writeFieldBegin('d', TType.STRUCT, 1) self.d.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11499,32 +9275,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backends_result) get_backends_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Backend, None], False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "d", - [DefaultException, None], - None, - ), # 1 + (0, TType.LIST, 'success', (TType.STRUCT, [Backend, None], False), None, ), # 0 + (1, TType.STRUCT, 'd', [DefaultException, None], None, ), # 1 ) @@ -11535,18 +9298,12 @@ class get_backends_by_owner_args(object): """ - def __init__( - self, - owner=None, - ): + + def __init__(self, owner=None,): self.owner = owner def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11556,11 +9313,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.owner = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.owner = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -11570,16 +9323,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backends_by_owner_args") + oprot.writeStructBegin('get_backends_by_owner_args') if self.owner is not None: - oprot.writeFieldBegin("owner", TType.STRING, 1) - oprot.writeString( - self.owner.encode("utf-8") if sys.version_info[0] == 2 else self.owner - ) + oprot.writeFieldBegin('owner', TType.STRING, 1) + oprot.writeString(self.owner.encode('utf-8') if sys.version_info[0] == 2 else self.owner) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11588,26 +9337,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backends_by_owner_args) get_backends_by_owner_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "owner", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'owner', 'UTF8', None, ), # 1 ) @@ -11619,20 +9361,13 @@ class get_backends_by_owner_result(object): """ - def __init__( - self, - success=None, - d=None, - ): + + def __init__(self, success=None, d=None,): self.success = success self.d = d def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11663,20 +9398,18 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backends_by_owner_result") + oprot.writeStructBegin('get_backends_by_owner_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter249 in self.success: iter249.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.d is not None: - oprot.writeFieldBegin("d", TType.STRUCT, 1) + oprot.writeFieldBegin('d', TType.STRUCT, 1) self.d.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11686,32 +9419,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backends_by_owner_result) get_backends_by_owner_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Backend, None], False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "d", - [DefaultException, None], - None, - ), # 1 + (0, TType.LIST, 'success', (TType.STRUCT, [Backend, None], False), None, ), # 0 + (1, TType.STRUCT, 'd', [DefaultException, None], None, ), # 1 ) @@ -11722,18 +9442,12 @@ class get_backends_by_template_args(object): """ - def __init__( - self, - template=None, - ): + + def __init__(self, template=None,): self.template = template def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11743,11 +9457,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.template = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.template = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -11757,18 +9467,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backends_by_template_args") + oprot.writeStructBegin('get_backends_by_template_args') if self.template is not None: - oprot.writeFieldBegin("template", TType.STRING, 1) - oprot.writeString( - self.template.encode("utf-8") - if sys.version_info[0] == 2 - else self.template - ) + oprot.writeFieldBegin('template', TType.STRING, 1) + oprot.writeString(self.template.encode('utf-8') if sys.version_info[0] == 2 else self.template) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11777,26 +9481,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backends_by_template_args) get_backends_by_template_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "template", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'template', 'UTF8', None, ), # 1 ) @@ -11808,20 +9505,13 @@ class get_backends_by_template_result(object): """ - def __init__( - self, - success=None, - d=None, - ): + + def __init__(self, success=None, d=None,): self.success = success self.d = d def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11852,20 +9542,18 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backends_by_template_result") + oprot.writeStructBegin('get_backends_by_template_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter256 in self.success: iter256.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.d is not None: - oprot.writeFieldBegin("d", TType.STRUCT, 1) + oprot.writeFieldBegin('d', TType.STRUCT, 1) self.d.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11875,32 +9563,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backends_by_template_result) get_backends_by_template_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [Backend, None], False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "d", - [DefaultException, None], - None, - ), # 1 + (0, TType.LIST, 'success', (TType.STRUCT, [Backend, None], False), None, ), # 0 + (1, TType.STRUCT, 'd', [DefaultException, None], None, ), # 1 ) @@ -11911,18 +9586,12 @@ class get_backend_by_id_args(object): """ - def __init__( - self, - id=None, - ): + + def __init__(self, id=None,): self.id = id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -11942,13 +9611,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backend_by_id_args") + oprot.writeStructBegin('get_backend_by_id_args') if self.id is not None: - oprot.writeFieldBegin("id", TType.I64, 1) + oprot.writeFieldBegin('id', TType.I64, 1) oprot.writeI64(self.id) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11958,26 +9625,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backend_by_id_args) get_backend_by_id_args.thrift_spec = ( None, # 0 - ( - 1, - TType.I64, - "id", - None, - None, - ), # 1 + (1, TType.I64, 'id', None, None, ), # 1 ) @@ -11990,22 +9650,14 @@ class get_backend_by_id_result(object): """ - def __init__( - self, - success=None, - b=None, - d=None, - ): + + def __init__(self, success=None, b=None, d=None,): self.success = success self.b = b self.d = d def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12036,21 +9688,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_backend_by_id_result") + oprot.writeStructBegin('get_backend_by_id_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.b is not None: - oprot.writeFieldBegin("b", TType.STRUCT, 1) + oprot.writeFieldBegin('b', TType.STRUCT, 1) self.b.write(oprot) oprot.writeFieldEnd() if self.d is not None: - oprot.writeFieldBegin("d", TType.STRUCT, 2) + oprot.writeFieldBegin('d', TType.STRUCT, 2) self.d.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12060,39 +9710,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_backend_by_id_result) get_backend_by_id_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Backend, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "b", - [BackendNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "d", - [DefaultException, None], - None, - ), # 2 + (0, TType.STRUCT, 'success', [Backend, None], None, ), # 0 + (1, TType.STRUCT, 'b', [BackendNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'd', [DefaultException, None], None, ), # 2 ) @@ -12103,18 +9734,12 @@ class delete_backend_args(object): """ - def __init__( - self, - id=None, - ): + + def __init__(self, id=None,): self.id = id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12134,13 +9759,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_backend_args") + oprot.writeStructBegin('delete_backend_args') if self.id is not None: - oprot.writeFieldBegin("id", TType.I64, 1) + oprot.writeFieldBegin('id', TType.I64, 1) oprot.writeI64(self.id) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12150,26 +9773,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_backend_args) delete_backend_args.thrift_spec = ( None, # 0 - ( - 1, - TType.I64, - "id", - None, - None, - ), # 1 + (1, TType.I64, 'id', None, None, ), # 1 ) @@ -12180,18 +9796,12 @@ class delete_backend_result(object): """ - def __init__( - self, - b=None, - ): + + def __init__(self, b=None,): self.b = b def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12211,13 +9821,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_backend_result") + oprot.writeStructBegin('delete_backend_result') if self.b is not None: - oprot.writeFieldBegin("b", TType.STRUCT, 1) + oprot.writeFieldBegin('b', TType.STRUCT, 1) self.b.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12227,26 +9835,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_backend_result) delete_backend_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "b", - [BackendNotFoundException, None], - None, - ), # 1 + (1, TType.STRUCT, 'b', [BackendNotFoundException, None], None, ), # 1 ) @@ -12258,20 +9859,13 @@ class add_user_to_backend_args(object): """ - def __init__( - self, - backend_id=None, - user_id=None, - ): + + def __init__(self, backend_id=None, user_id=None,): self.backend_id = backend_id self.user_id = user_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12286,11 +9880,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.user_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.user_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -12300,22 +9890,16 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_user_to_backend_args") + oprot.writeStructBegin('add_user_to_backend_args') if self.backend_id is not None: - oprot.writeFieldBegin("backend_id", TType.I64, 1) + oprot.writeFieldBegin('backend_id', TType.I64, 1) oprot.writeI64(self.backend_id) oprot.writeFieldEnd() if self.user_id is not None: - oprot.writeFieldBegin("user_id", TType.STRING, 2) - oprot.writeString( - self.user_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.user_id - ) + oprot.writeFieldBegin('user_id', TType.STRING, 2) + oprot.writeString(self.user_id.encode('utf-8') if sys.version_info[0] == 2 else self.user_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -12324,33 +9908,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_user_to_backend_args) add_user_to_backend_args.thrift_spec = ( None, # 0 - ( - 1, - TType.I64, - "backend_id", - None, - None, - ), # 1 - ( - 2, - TType.STRING, - "user_id", - "UTF8", - None, - ), # 2 + (1, TType.I64, 'backend_id', None, None, ), # 1 + (2, TType.STRING, 'user_id', 'UTF8', None, ), # 2 ) @@ -12362,20 +9933,13 @@ class add_user_to_backend_result(object): """ - def __init__( - self, - success=None, - b=None, - ): + + def __init__(self, success=None, b=None,): self.success = success self.b = b def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12388,16 +9952,8 @@ def read(self, iprot): self.success = {} (_ktype258, _vtype259, _size257) = iprot.readMapBegin() for _i261 in range(_size257): - _key262 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val263 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key262 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val263 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key262] = _val263 iprot.readMapEnd() else: @@ -12414,25 +9970,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_user_to_backend_result") + oprot.writeStructBegin('add_user_to_backend_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter264, viter265 in self.success.items(): - oprot.writeString( - kiter264.encode("utf-8") if sys.version_info[0] == 2 else kiter264 - ) - oprot.writeString( - viter265.encode("utf-8") if sys.version_info[0] == 2 else viter265 - ) + oprot.writeString(kiter264.encode('utf-8') if sys.version_info[0] == 2 else kiter264) + oprot.writeString(viter265.encode('utf-8') if sys.version_info[0] == 2 else viter265) oprot.writeMapEnd() oprot.writeFieldEnd() if self.b is not None: - oprot.writeFieldBegin("b", TType.STRUCT, 1) + oprot.writeFieldBegin('b', TType.STRUCT, 1) self.b.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12442,32 +9992,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_user_to_backend_result) add_user_to_backend_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "b", - [BackendNotFoundException, None], - None, - ), # 1 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'b', [BackendNotFoundException, None], None, ), # 1 ) @@ -12478,18 +10015,12 @@ class get_users_from_backend_args(object): """ - def __init__( - self, - backend_id=None, - ): + + def __init__(self, backend_id=None,): self.backend_id = backend_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12509,13 +10040,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_users_from_backend_args") + oprot.writeStructBegin('get_users_from_backend_args') if self.backend_id is not None: - oprot.writeFieldBegin("backend_id", TType.I64, 1) + oprot.writeFieldBegin('backend_id', TType.I64, 1) oprot.writeI64(self.backend_id) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12525,26 +10054,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_users_from_backend_args) get_users_from_backend_args.thrift_spec = ( None, # 0 - ( - 1, - TType.I64, - "backend_id", - None, - None, - ), # 1 + (1, TType.I64, 'backend_id', None, None, ), # 1 ) @@ -12556,20 +10078,13 @@ class get_users_from_backend_result(object): """ - def __init__( - self, - success=None, - b=None, - ): + + def __init__(self, success=None, b=None,): self.success = success self.b = b def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12582,11 +10097,7 @@ def read(self, iprot): self.success = [] (_etype269, _size266) = iprot.readListBegin() for _i270 in range(_size266): - _elem271 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem271 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success.append(_elem271) iprot.readListEnd() else: @@ -12603,22 +10114,18 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_users_from_backend_result") + oprot.writeStructBegin('get_users_from_backend_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRING, len(self.success)) for iter272 in self.success: - oprot.writeString( - iter272.encode("utf-8") if sys.version_info[0] == 2 else iter272 - ) + oprot.writeString(iter272.encode('utf-8') if sys.version_info[0] == 2 else iter272) oprot.writeListEnd() oprot.writeFieldEnd() if self.b is not None: - oprot.writeFieldBegin("b", TType.STRUCT, 1) + oprot.writeFieldBegin('b', TType.STRUCT, 1) self.b.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12628,32 +10135,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_users_from_backend_result) get_users_from_backend_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "b", - [BackendNotFoundException, None], - None, - ), # 1 + (0, TType.LIST, 'success', (TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'b', [BackendNotFoundException, None], None, ), # 1 ) @@ -12665,20 +10159,13 @@ class delete_user_from_backend_args(object): """ - def __init__( - self, - backend_id=None, - user_id=None, - ): + + def __init__(self, backend_id=None, user_id=None,): self.backend_id = backend_id self.user_id = user_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12693,11 +10180,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.user_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.user_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -12707,22 +10190,16 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_user_from_backend_args") + oprot.writeStructBegin('delete_user_from_backend_args') if self.backend_id is not None: - oprot.writeFieldBegin("backend_id", TType.I64, 1) + oprot.writeFieldBegin('backend_id', TType.I64, 1) oprot.writeI64(self.backend_id) oprot.writeFieldEnd() if self.user_id is not None: - oprot.writeFieldBegin("user_id", TType.STRING, 2) - oprot.writeString( - self.user_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.user_id - ) + oprot.writeFieldBegin('user_id', TType.STRING, 2) + oprot.writeString(self.user_id.encode('utf-8') if sys.version_info[0] == 2 else self.user_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -12731,33 +10208,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_user_from_backend_args) delete_user_from_backend_args.thrift_spec = ( None, # 0 - ( - 1, - TType.I64, - "backend_id", - None, - None, - ), # 1 - ( - 2, - TType.STRING, - "user_id", - "UTF8", - None, - ), # 2 + (1, TType.I64, 'backend_id', None, None, ), # 1 + (2, TType.STRING, 'user_id', 'UTF8', None, ), # 2 ) @@ -12769,20 +10233,13 @@ class delete_user_from_backend_result(object): """ - def __init__( - self, - success=None, - b=None, - ): + + def __init__(self, success=None, b=None,): self.success = success self.b = b def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12795,16 +10252,8 @@ def read(self, iprot): self.success = {} (_ktype274, _vtype275, _size273) = iprot.readMapBegin() for _i277 in range(_size273): - _key278 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val279 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key278 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val279 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key278] = _val279 iprot.readMapEnd() else: @@ -12821,25 +10270,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_user_from_backend_result") + oprot.writeStructBegin('delete_user_from_backend_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter280, viter281 in self.success.items(): - oprot.writeString( - kiter280.encode("utf-8") if sys.version_info[0] == 2 else kiter280 - ) - oprot.writeString( - viter281.encode("utf-8") if sys.version_info[0] == 2 else viter281 - ) + oprot.writeString(kiter280.encode('utf-8') if sys.version_info[0] == 2 else kiter280) + oprot.writeString(viter281.encode('utf-8') if sys.version_info[0] == 2 else viter281) oprot.writeMapEnd() oprot.writeFieldEnd() if self.b is not None: - oprot.writeFieldBegin("b", TType.STRUCT, 1) + oprot.writeFieldBegin('b', TType.STRUCT, 1) self.b.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12849,42 +10292,27 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_user_from_backend_result) delete_user_from_backend_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "b", - [BackendNotFoundException, None], - None, - ), # 1 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'b', [BackendNotFoundException, None], None, ), # 1 ) class get_allowed_templates_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12899,11 +10327,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_allowed_templates_args") + oprot.writeStructBegin('get_allowed_templates_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -12911,18 +10337,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_allowed_templates_args) -get_allowed_templates_args.thrift_spec = () +get_allowed_templates_args.thrift_spec = ( +) class get_allowed_templates_result(object): @@ -12932,18 +10358,12 @@ class get_allowed_templates_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -12969,13 +10389,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_allowed_templates_result") + oprot.writeStructBegin('get_allowed_templates_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter288 in self.success: iter288.write(oprot) @@ -12988,35 +10406,26 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_allowed_templates_result) get_allowed_templates_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [ResearchEnvironmentTemplate, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [ResearchEnvironmentTemplate, None], False), None, ), # 0 ) class get_servers_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13031,11 +10440,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_servers_args") + oprot.writeStructBegin('get_servers_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -13043,18 +10450,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_servers_args) -get_servers_args.thrift_spec = () +get_servers_args.thrift_spec = ( +) class get_servers_result(object): @@ -13064,18 +10471,12 @@ class get_servers_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13101,13 +10502,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_servers_result") + oprot.writeStructBegin('get_servers_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter295 in self.success: iter295.write(oprot) @@ -13120,25 +10519,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_servers_result) get_servers_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [VM, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [VM, None], False), None, ), # 0 ) @@ -13149,18 +10541,12 @@ class get_servers_by_ids_args(object): """ - def __init__( - self, - server_ids=None, - ): + + def __init__(self, server_ids=None,): self.server_ids = server_ids def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13173,11 +10559,7 @@ def read(self, iprot): self.server_ids = [] (_etype299, _size296) = iprot.readListBegin() for _i300 in range(_size296): - _elem301 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem301 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.server_ids.append(_elem301) iprot.readListEnd() else: @@ -13189,18 +10571,14 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_servers_by_ids_args") + oprot.writeStructBegin('get_servers_by_ids_args') if self.server_ids is not None: - oprot.writeFieldBegin("server_ids", TType.LIST, 1) + oprot.writeFieldBegin('server_ids', TType.LIST, 1) oprot.writeListBegin(TType.STRING, len(self.server_ids)) for iter302 in self.server_ids: - oprot.writeString( - iter302.encode("utf-8") if sys.version_info[0] == 2 else iter302 - ) + oprot.writeString(iter302.encode('utf-8') if sys.version_info[0] == 2 else iter302) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13210,26 +10588,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_servers_by_ids_args) get_servers_by_ids_args.thrift_spec = ( None, # 0 - ( - 1, - TType.LIST, - "server_ids", - (TType.STRING, "UTF8", False), - None, - ), # 1 + (1, TType.LIST, 'server_ids', (TType.STRING, 'UTF8', False), None, ), # 1 ) @@ -13240,18 +10611,12 @@ class get_servers_by_ids_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13277,13 +10642,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_servers_by_ids_result") + oprot.writeStructBegin('get_servers_by_ids_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter309 in self.success: iter309.write(oprot) @@ -13296,25 +10659,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_servers_by_ids_result) get_servers_by_ids_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [VM, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [VM, None], False), None, ), # 0 ) @@ -13325,18 +10681,12 @@ class get_servers_by_bibigrid_id_args(object): """ - def __init__( - self, - bibigrid_id=None, - ): + + def __init__(self, bibigrid_id=None,): self.bibigrid_id = bibigrid_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13346,11 +10696,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.bibigrid_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.bibigrid_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -13360,18 +10706,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_servers_by_bibigrid_id_args") + oprot.writeStructBegin('get_servers_by_bibigrid_id_args') if self.bibigrid_id is not None: - oprot.writeFieldBegin("bibigrid_id", TType.STRING, 1) - oprot.writeString( - self.bibigrid_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.bibigrid_id - ) + oprot.writeFieldBegin('bibigrid_id', TType.STRING, 1) + oprot.writeString(self.bibigrid_id.encode('utf-8') if sys.version_info[0] == 2 else self.bibigrid_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -13380,26 +10720,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_servers_by_bibigrid_id_args) get_servers_by_bibigrid_id_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "bibigrid_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'bibigrid_id', 'UTF8', None, ), # 1 ) @@ -13410,18 +10743,12 @@ class get_servers_by_bibigrid_id_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13447,13 +10774,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_servers_by_bibigrid_id_result") + oprot.writeStructBegin('get_servers_by_bibigrid_id_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.LIST, 0) + oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) for iter316 in self.success: iter316.write(oprot) @@ -13466,25 +10791,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_servers_by_bibigrid_id_result) get_servers_by_bibigrid_id_result.thrift_spec = ( - ( - 0, - TType.LIST, - "success", - (TType.STRUCT, [VM, None], False), - None, - ), # 0 + (0, TType.LIST, 'success', (TType.STRUCT, [VM, None], False), None, ), # 0 ) @@ -13501,16 +10819,8 @@ class scale_up_cluster_args(object): """ - def __init__( - self, - cluster_id=None, - image_name=None, - flavor_name=None, - count=None, - names=None, - start_idx=None, - batch_idx=None, - ): + + def __init__(self, cluster_id=None, image_name=None, flavor_name=None, count=None, names=None, start_idx=None, batch_idx=None,): self.cluster_id = cluster_id self.image_name = image_name self.flavor_name = flavor_name @@ -13520,11 +10830,7 @@ def __init__( self.batch_idx = batch_idx def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13534,29 +10840,17 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.cluster_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.image_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.image_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.flavor_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.flavor_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: @@ -13569,11 +10863,7 @@ def read(self, iprot): self.names = [] (_etype320, _size317) = iprot.readListBegin() for _i321 in range(_size317): - _elem322 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem322 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.names.append(_elem322) iprot.readListEnd() else: @@ -13595,54 +10885,38 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("scale_up_cluster_args") + oprot.writeStructBegin('scale_up_cluster_args') if self.cluster_id is not None: - oprot.writeFieldBegin("cluster_id", TType.STRING, 1) - oprot.writeString( - self.cluster_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_id - ) + oprot.writeFieldBegin('cluster_id', TType.STRING, 1) + oprot.writeString(self.cluster_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_id) oprot.writeFieldEnd() if self.image_name is not None: - oprot.writeFieldBegin("image_name", TType.STRING, 2) - oprot.writeString( - self.image_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.image_name - ) + oprot.writeFieldBegin('image_name', TType.STRING, 2) + oprot.writeString(self.image_name.encode('utf-8') if sys.version_info[0] == 2 else self.image_name) oprot.writeFieldEnd() if self.flavor_name is not None: - oprot.writeFieldBegin("flavor_name", TType.STRING, 3) - oprot.writeString( - self.flavor_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.flavor_name - ) + oprot.writeFieldBegin('flavor_name', TType.STRING, 3) + oprot.writeString(self.flavor_name.encode('utf-8') if sys.version_info[0] == 2 else self.flavor_name) oprot.writeFieldEnd() if self.count is not None: - oprot.writeFieldBegin("count", TType.I32, 4) + oprot.writeFieldBegin('count', TType.I32, 4) oprot.writeI32(self.count) oprot.writeFieldEnd() if self.names is not None: - oprot.writeFieldBegin("names", TType.LIST, 5) + oprot.writeFieldBegin('names', TType.LIST, 5) oprot.writeListBegin(TType.STRING, len(self.names)) for iter323 in self.names: - oprot.writeString( - iter323.encode("utf-8") if sys.version_info[0] == 2 else iter323 - ) + oprot.writeString(iter323.encode('utf-8') if sys.version_info[0] == 2 else iter323) oprot.writeListEnd() oprot.writeFieldEnd() if self.start_idx is not None: - oprot.writeFieldBegin("start_idx", TType.I32, 6) + oprot.writeFieldBegin('start_idx', TType.I32, 6) oprot.writeI32(self.start_idx) oprot.writeFieldEnd() if self.batch_idx is not None: - oprot.writeFieldBegin("batch_idx", TType.I32, 7) + oprot.writeFieldBegin('batch_idx', TType.I32, 7) oprot.writeI32(self.batch_idx) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13652,68 +10926,25 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(scale_up_cluster_args) scale_up_cluster_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "cluster_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "image_name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "flavor_name", - "UTF8", - None, - ), # 3 - ( - 4, - TType.I32, - "count", - None, - None, - ), # 4 - ( - 5, - TType.LIST, - "names", - (TType.STRING, "UTF8", False), - None, - ), # 5 - ( - 6, - TType.I32, - "start_idx", - None, - None, - ), # 6 - ( - 7, - TType.I32, - "batch_idx", - None, - None, - ), # 7 + (1, TType.STRING, 'cluster_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'image_name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'flavor_name', 'UTF8', None, ), # 3 + (4, TType.I32, 'count', None, None, ), # 4 + (5, TType.LIST, 'names', (TType.STRING, 'UTF8', False), None, ), # 5 + (6, TType.I32, 'start_idx', None, None, ), # 6 + (7, TType.I32, 'batch_idx', None, None, ), # 7 ) @@ -13724,18 +10955,12 @@ class scale_up_cluster_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13748,19 +10973,11 @@ def read(self, iprot): self.success = {} (_ktype325, _vtype326, _size324) = iprot.readMapBegin() for _i328 in range(_size324): - _key329 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key329 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() _val330 = [] (_etype334, _size331) = iprot.readListBegin() for _i335 in range(_size331): - _elem336 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem336 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() _val330.append(_elem336) iprot.readListEnd() self.success[_key329] = _val330 @@ -13774,23 +10991,17 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("scale_up_cluster_result") + oprot.writeStructBegin('scale_up_cluster_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.LIST, len(self.success)) for kiter337, viter338 in self.success.items(): - oprot.writeString( - kiter337.encode("utf-8") if sys.version_info[0] == 2 else kiter337 - ) + oprot.writeString(kiter337.encode('utf-8') if sys.version_info[0] == 2 else kiter337) oprot.writeListBegin(TType.STRING, len(viter338)) for iter339 in viter338: - oprot.writeString( - iter339.encode("utf-8") if sys.version_info[0] == 2 else iter339 - ) + oprot.writeString(iter339.encode('utf-8') if sys.version_info[0] == 2 else iter339) oprot.writeListEnd() oprot.writeMapEnd() oprot.writeFieldEnd() @@ -13801,25 +11012,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(scale_up_cluster_result) scale_up_cluster_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.LIST, (TType.STRING, "UTF8", False), False), - None, - ), # 0 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.LIST, (TType.STRING, 'UTF8', False), False), None, ), # 0 ) @@ -13838,18 +11042,8 @@ class add_cluster_machine_args(object): """ - def __init__( - self, - cluster_id=None, - cluster_user=None, - cluster_group_id=None, - image_name=None, - flavor_name=None, - name=None, - key_name=None, - batch_idx=None, - worker_idx=None, - ): + + def __init__(self, cluster_id=None, cluster_user=None, cluster_group_id=None, image_name=None, flavor_name=None, name=None, key_name=None, batch_idx=None, worker_idx=None,): self.cluster_id = cluster_id self.cluster_user = cluster_user self.cluster_group_id = cluster_group_id @@ -13861,11 +11055,7 @@ def __init__( self.worker_idx = worker_idx def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -13875,65 +11065,37 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.cluster_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.cluster_user = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_user = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.cluster_group_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_group_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.image_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.image_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.flavor_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.flavor_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 7: if ftype == TType.STRING: - self.key_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.key_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 8: @@ -13953,71 +11115,43 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_cluster_machine_args") + oprot.writeStructBegin('add_cluster_machine_args') if self.cluster_id is not None: - oprot.writeFieldBegin("cluster_id", TType.STRING, 1) - oprot.writeString( - self.cluster_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_id - ) + oprot.writeFieldBegin('cluster_id', TType.STRING, 1) + oprot.writeString(self.cluster_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_id) oprot.writeFieldEnd() if self.cluster_user is not None: - oprot.writeFieldBegin("cluster_user", TType.STRING, 2) - oprot.writeString( - self.cluster_user.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_user - ) + oprot.writeFieldBegin('cluster_user', TType.STRING, 2) + oprot.writeString(self.cluster_user.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_user) oprot.writeFieldEnd() if self.cluster_group_id is not None: - oprot.writeFieldBegin("cluster_group_id", TType.STRING, 3) - oprot.writeString( - self.cluster_group_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_group_id - ) + oprot.writeFieldBegin('cluster_group_id', TType.STRING, 3) + oprot.writeString(self.cluster_group_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_group_id) oprot.writeFieldEnd() if self.image_name is not None: - oprot.writeFieldBegin("image_name", TType.STRING, 4) - oprot.writeString( - self.image_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.image_name - ) + oprot.writeFieldBegin('image_name', TType.STRING, 4) + oprot.writeString(self.image_name.encode('utf-8') if sys.version_info[0] == 2 else self.image_name) oprot.writeFieldEnd() if self.flavor_name is not None: - oprot.writeFieldBegin("flavor_name", TType.STRING, 5) - oprot.writeString( - self.flavor_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.flavor_name - ) + oprot.writeFieldBegin('flavor_name', TType.STRING, 5) + oprot.writeString(self.flavor_name.encode('utf-8') if sys.version_info[0] == 2 else self.flavor_name) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 6) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 6) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.key_name is not None: - oprot.writeFieldBegin("key_name", TType.STRING, 7) - oprot.writeString( - self.key_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.key_name - ) + oprot.writeFieldBegin('key_name', TType.STRING, 7) + oprot.writeString(self.key_name.encode('utf-8') if sys.version_info[0] == 2 else self.key_name) oprot.writeFieldEnd() if self.batch_idx is not None: - oprot.writeFieldBegin("batch_idx", TType.I32, 8) + oprot.writeFieldBegin('batch_idx', TType.I32, 8) oprot.writeI32(self.batch_idx) oprot.writeFieldEnd() if self.worker_idx is not None: - oprot.writeFieldBegin("worker_idx", TType.I32, 9) + oprot.writeFieldBegin('worker_idx', TType.I32, 9) oprot.writeI32(self.worker_idx) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14027,82 +11161,27 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_cluster_machine_args) add_cluster_machine_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "cluster_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "cluster_user", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "cluster_group_id", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "image_name", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "flavor_name", - "UTF8", - None, - ), # 5 - ( - 6, - TType.STRING, - "name", - "UTF8", - None, - ), # 6 - ( - 7, - TType.STRING, - "key_name", - "UTF8", - None, - ), # 7 - ( - 8, - TType.I32, - "batch_idx", - None, - None, - ), # 8 - ( - 9, - TType.I32, - "worker_idx", - None, - None, - ), # 9 + (1, TType.STRING, 'cluster_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'cluster_user', 'UTF8', None, ), # 2 + (3, TType.STRING, 'cluster_group_id', 'UTF8', None, ), # 3 + (4, TType.STRING, 'image_name', 'UTF8', None, ), # 4 + (5, TType.STRING, 'flavor_name', 'UTF8', None, ), # 5 + (6, TType.STRING, 'name', 'UTF8', None, ), # 6 + (7, TType.STRING, 'key_name', 'UTF8', None, ), # 7 + (8, TType.I32, 'batch_idx', None, None, ), # 8 + (9, TType.I32, 'worker_idx', None, None, ), # 9 ) @@ -14113,18 +11192,12 @@ class add_cluster_machine_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14134,11 +11207,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -14148,18 +11217,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("add_cluster_machine_result") + oprot.writeStructBegin('add_cluster_machine_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -14168,25 +11231,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(add_cluster_machine_result) add_cluster_machine_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 ) @@ -14197,18 +11253,12 @@ class get_cluster_info_args(object): """ - def __init__( - self, - cluster_id=None, - ): + + def __init__(self, cluster_id=None,): self.cluster_id = cluster_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14218,11 +11268,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.cluster_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -14232,18 +11278,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_cluster_info_args") + oprot.writeStructBegin('get_cluster_info_args') if self.cluster_id is not None: - oprot.writeFieldBegin("cluster_id", TType.STRING, 1) - oprot.writeString( - self.cluster_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_id - ) + oprot.writeFieldBegin('cluster_id', TType.STRING, 1) + oprot.writeString(self.cluster_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -14252,26 +11292,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_cluster_info_args) get_cluster_info_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "cluster_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'cluster_id', 'UTF8', None, ), # 1 ) @@ -14283,20 +11316,13 @@ class get_cluster_info_result(object): """ - def __init__( - self, - success=None, - c=None, - ): + + def __init__(self, success=None, c=None,): self.success = success self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14322,17 +11348,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_cluster_info_result") + oprot.writeStructBegin('get_cluster_info_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 1) + oprot.writeFieldBegin('c', TType.STRUCT, 1) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14342,32 +11366,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_cluster_info_result) get_cluster_info_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [ClusterInfo, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "c", - [ClusterNotFoundException, None], - None, - ), # 1 + (0, TType.STRUCT, 'success', [ClusterInfo, None], None, ), # 0 + (1, TType.STRUCT, 'c', [ClusterNotFoundException, None], None, ), # 1 ) @@ -14378,18 +11389,12 @@ class get_cluster_status_args(object): """ - def __init__( - self, - cluster_id=None, - ): + + def __init__(self, cluster_id=None,): self.cluster_id = cluster_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14399,11 +11404,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.cluster_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -14413,18 +11414,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_cluster_status_args") + oprot.writeStructBegin('get_cluster_status_args') if self.cluster_id is not None: - oprot.writeFieldBegin("cluster_id", TType.STRING, 1) - oprot.writeString( - self.cluster_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_id - ) + oprot.writeFieldBegin('cluster_id', TType.STRING, 1) + oprot.writeString(self.cluster_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -14433,26 +11428,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_cluster_status_args) get_cluster_status_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "cluster_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'cluster_id', 'UTF8', None, ), # 1 ) @@ -14464,20 +11452,13 @@ class get_cluster_status_result(object): """ - def __init__( - self, - success=None, - c=None, - ): + + def __init__(self, success=None, c=None,): self.success = success self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14490,16 +11471,8 @@ def read(self, iprot): self.success = {} (_ktype341, _vtype342, _size340) = iprot.readMapBegin() for _i344 in range(_size340): - _key345 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val346 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key345 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val346 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key345] = _val346 iprot.readMapEnd() else: @@ -14516,25 +11489,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_cluster_status_result") + oprot.writeStructBegin('get_cluster_status_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter347, viter348 in self.success.items(): - oprot.writeString( - kiter347.encode("utf-8") if sys.version_info[0] == 2 else kiter347 - ) - oprot.writeString( - viter348.encode("utf-8") if sys.version_info[0] == 2 else viter348 - ) + oprot.writeString(kiter347.encode('utf-8') if sys.version_info[0] == 2 else kiter347) + oprot.writeString(viter348.encode('utf-8') if sys.version_info[0] == 2 else viter348) oprot.writeMapEnd() oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 1) + oprot.writeFieldBegin('c', TType.STRUCT, 1) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14544,32 +11511,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_cluster_status_result) get_cluster_status_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "c", - [ClusterNotFoundException, None], - None, - ), # 1 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'c', [ClusterNotFoundException, None], None, ), # 1 ) @@ -14580,18 +11534,12 @@ class get_server_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14601,11 +11549,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -14615,18 +11559,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_server_args") + oprot.writeStructBegin('get_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -14635,26 +11573,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_server_args) get_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -14666,20 +11597,13 @@ class get_server_result(object): """ - def __init__( - self, - success=None, - e=None, - ): + + def __init__(self, success=None, e=None,): self.success = success self.e = e def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14705,17 +11629,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_server_result") + oprot.writeStructBegin('get_server_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14725,32 +11647,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_server_result) get_server_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [VM, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 + (0, TType.STRUCT, 'success', [VM, None], None, ), # 0 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 ) @@ -14761,18 +11670,12 @@ class stop_server_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14782,11 +11685,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -14796,18 +11695,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("stop_server_args") + oprot.writeStructBegin('stop_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -14816,26 +11709,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(stop_server_args) stop_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -14847,20 +11733,13 @@ class stop_server_result(object): """ - def __init__( - self, - e=None, - c=None, - ): + + def __init__(self, e=None, c=None,): self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14885,17 +11764,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("stop_server_result") + oprot.writeStructBegin('stop_server_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14905,33 +11782,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(stop_server_result) stop_server_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) @@ -14946,14 +11810,8 @@ class create_snapshot_args(object): """ - def __init__( - self, - openstack_id=None, - name=None, - username=None, - base_tags=None, - description=None, - ): + + def __init__(self, openstack_id=None, name=None, username=None, base_tags=None, description=None,): self.openstack_id = openstack_id self.name = name self.username = username @@ -14961,11 +11819,7 @@ def __init__( self.description = description def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -14975,29 +11829,17 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.username = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.username = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: @@ -15005,22 +11847,14 @@ def read(self, iprot): self.base_tags = [] (_etype352, _size349) = iprot.readListBegin() for _i353 in range(_size349): - _elem354 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem354 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.base_tags.append(_elem354) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -15030,49 +11864,31 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_snapshot_args") + oprot.writeStructBegin('create_snapshot_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 2) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 2) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.username is not None: - oprot.writeFieldBegin("username", TType.STRING, 3) - oprot.writeString( - self.username.encode("utf-8") - if sys.version_info[0] == 2 - else self.username - ) + oprot.writeFieldBegin('username', TType.STRING, 3) + oprot.writeString(self.username.encode('utf-8') if sys.version_info[0] == 2 else self.username) oprot.writeFieldEnd() if self.base_tags is not None: - oprot.writeFieldBegin("base_tags", TType.LIST, 4) + oprot.writeFieldBegin('base_tags', TType.LIST, 4) oprot.writeListBegin(TType.STRING, len(self.base_tags)) for iter355 in self.base_tags: - oprot.writeString( - iter355.encode("utf-8") if sys.version_info[0] == 2 else iter355 - ) + oprot.writeString(iter355.encode('utf-8') if sys.version_info[0] == 2 else iter355) oprot.writeListEnd() oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 5) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 5) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -15081,54 +11897,23 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_snapshot_args) create_snapshot_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "username", - "UTF8", - None, - ), # 3 - ( - 4, - TType.LIST, - "base_tags", - (TType.STRING, "UTF8", False), - None, - ), # 4 - ( - 5, - TType.STRING, - "description", - "UTF8", - None, - ), # 5 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'username', 'UTF8', None, ), # 3 + (4, TType.LIST, 'base_tags', (TType.STRING, 'UTF8', False), None, ), # 4 + (5, TType.STRING, 'description', 'UTF8', None, ), # 5 ) @@ -15141,22 +11926,14 @@ class create_snapshot_result(object): """ - def __init__( - self, - success=None, - e=None, - c=None, - ): + + def __init__(self, success=None, e=None, c=None,): self.success = success self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15166,11 +11943,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 1: @@ -15190,25 +11963,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_snapshot_result") + oprot.writeStructBegin('create_snapshot_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15218,49 +11985,28 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_snapshot_result) create_snapshot_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) class get_limits_args(object): + + def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15275,11 +12021,9 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_limits_args") + oprot.writeStructBegin('get_limits_args') oprot.writeFieldStop() oprot.writeStructEnd() @@ -15287,18 +12031,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_limits_args) -get_limits_args.thrift_spec = () +get_limits_args.thrift_spec = ( +) class get_limits_result(object): @@ -15308,18 +12052,12 @@ class get_limits_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15332,16 +12070,8 @@ def read(self, iprot): self.success = {} (_ktype357, _vtype358, _size356) = iprot.readMapBegin() for _i360 in range(_size356): - _key361 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val362 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key361 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val362 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key361] = _val362 iprot.readMapEnd() else: @@ -15353,21 +12083,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_limits_result") + oprot.writeStructBegin('get_limits_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter363, viter364 in self.success.items(): - oprot.writeString( - kiter363.encode("utf-8") if sys.version_info[0] == 2 else kiter363 - ) - oprot.writeString( - viter364.encode("utf-8") if sys.version_info[0] == 2 else viter364 - ) + oprot.writeString(kiter363.encode('utf-8') if sys.version_info[0] == 2 else kiter363) + oprot.writeString(viter364.encode('utf-8') if sys.version_info[0] == 2 else viter364) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15377,25 +12101,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_limits_result) get_limits_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 ) @@ -15409,24 +12126,15 @@ class start_cluster_args(object): """ - def __init__( - self, - public_key=None, - master_instance=None, - worker_instances=None, - user=None, - ): + + def __init__(self, public_key=None, master_instance=None, worker_instances=None, user=None,): self.public_key = public_key self.master_instance = master_instance self.worker_instances = worker_instances self.user = user def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15436,11 +12144,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.public_key = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.public_key = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -15462,11 +12166,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.user = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.user = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -15476,35 +12176,27 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("start_cluster_args") + oprot.writeStructBegin('start_cluster_args') if self.public_key is not None: - oprot.writeFieldBegin("public_key", TType.STRING, 1) - oprot.writeString( - self.public_key.encode("utf-8") - if sys.version_info[0] == 2 - else self.public_key - ) + oprot.writeFieldBegin('public_key', TType.STRING, 1) + oprot.writeString(self.public_key.encode('utf-8') if sys.version_info[0] == 2 else self.public_key) oprot.writeFieldEnd() if self.master_instance is not None: - oprot.writeFieldBegin("master_instance", TType.STRUCT, 2) + oprot.writeFieldBegin('master_instance', TType.STRUCT, 2) self.master_instance.write(oprot) oprot.writeFieldEnd() if self.worker_instances is not None: - oprot.writeFieldBegin("worker_instances", TType.LIST, 3) + oprot.writeFieldBegin('worker_instances', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.worker_instances)) for iter371 in self.worker_instances: iter371.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.user is not None: - oprot.writeFieldBegin("user", TType.STRING, 4) - oprot.writeString( - self.user.encode("utf-8") if sys.version_info[0] == 2 else self.user - ) + oprot.writeFieldBegin('user', TType.STRING, 4) + oprot.writeString(self.user.encode('utf-8') if sys.version_info[0] == 2 else self.user) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -15513,47 +12205,22 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(start_cluster_args) start_cluster_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "public_key", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRUCT, - "master_instance", - [ClusterInstance, None], - None, - ), # 2 - ( - 3, - TType.LIST, - "worker_instances", - (TType.STRUCT, [ClusterInstance, None], False), - None, - ), # 3 - ( - 4, - TType.STRING, - "user", - "UTF8", - None, - ), # 4 + (1, TType.STRING, 'public_key', 'UTF8', None, ), # 1 + (2, TType.STRUCT, 'master_instance', [ClusterInstance, None], None, ), # 2 + (3, TType.LIST, 'worker_instances', (TType.STRUCT, [ClusterInstance, None], False), None, ), # 3 + (4, TType.STRING, 'user', 'UTF8', None, ), # 4 ) @@ -15564,18 +12231,12 @@ class start_cluster_result(object): """ - def __init__( - self, - success=None, - ): + + def __init__(self, success=None,): self.success = success def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15588,16 +12249,8 @@ def read(self, iprot): self.success = {} (_ktype373, _vtype374, _size372) = iprot.readMapBegin() for _i376 in range(_size372): - _key377 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val378 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key377 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val378 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key377] = _val378 iprot.readMapEnd() else: @@ -15609,21 +12262,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("start_cluster_result") + oprot.writeStructBegin('start_cluster_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter379, viter380 in self.success.items(): - oprot.writeString( - kiter379.encode("utf-8") if sys.version_info[0] == 2 else kiter379 - ) - oprot.writeString( - viter380.encode("utf-8") if sys.version_info[0] == 2 else viter380 - ) + oprot.writeString(kiter379.encode('utf-8') if sys.version_info[0] == 2 else kiter379) + oprot.writeString(viter380.encode('utf-8') if sys.version_info[0] == 2 else viter380) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15633,25 +12280,18 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(start_cluster_result) start_cluster_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 ) @@ -15662,18 +12302,12 @@ class terminate_cluster_args(object): """ - def __init__( - self, - cluster_id=None, - ): + + def __init__(self, cluster_id=None,): self.cluster_id = cluster_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15683,11 +12317,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.cluster_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -15697,18 +12327,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("terminate_cluster_args") + oprot.writeStructBegin('terminate_cluster_args') if self.cluster_id is not None: - oprot.writeFieldBegin("cluster_id", TType.STRING, 1) - oprot.writeString( - self.cluster_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_id - ) + oprot.writeFieldBegin('cluster_id', TType.STRING, 1) + oprot.writeString(self.cluster_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -15717,26 +12341,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(terminate_cluster_args) terminate_cluster_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "cluster_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'cluster_id', 'UTF8', None, ), # 1 ) @@ -15748,20 +12365,13 @@ class terminate_cluster_result(object): """ - def __init__( - self, - success=None, - c=None, - ): + + def __init__(self, success=None, c=None,): self.success = success self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15774,16 +12384,8 @@ def read(self, iprot): self.success = {} (_ktype382, _vtype383, _size381) = iprot.readMapBegin() for _i385 in range(_size381): - _key386 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val387 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key386 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val387 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key386] = _val387 iprot.readMapEnd() else: @@ -15800,25 +12402,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("terminate_cluster_result") + oprot.writeStructBegin('terminate_cluster_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter388, viter389 in self.success.items(): - oprot.writeString( - kiter388.encode("utf-8") if sys.version_info[0] == 2 else kiter388 - ) - oprot.writeString( - viter389.encode("utf-8") if sys.version_info[0] == 2 else viter389 - ) + oprot.writeString(kiter388.encode('utf-8') if sys.version_info[0] == 2 else kiter388) + oprot.writeString(viter389.encode('utf-8') if sys.version_info[0] == 2 else viter389) oprot.writeMapEnd() oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 1) + oprot.writeFieldBegin('c', TType.STRUCT, 1) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15828,32 +12424,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(terminate_cluster_result) terminate_cluster_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "c", - [ClusterNotFoundException, None], - None, - ), # 1 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'c', [ClusterNotFoundException, None], None, ), # 1 ) @@ -15864,18 +12447,12 @@ class delete_image_args(object): """ - def __init__( - self, - image_id=None, - ): + + def __init__(self, image_id=None,): self.image_id = image_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15885,11 +12462,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.image_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.image_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -15899,18 +12472,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_image_args") + oprot.writeStructBegin('delete_image_args') if self.image_id is not None: - oprot.writeFieldBegin("image_id", TType.STRING, 1) - oprot.writeString( - self.image_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.image_id - ) + oprot.writeFieldBegin('image_id', TType.STRING, 1) + oprot.writeString(self.image_id.encode('utf-8') if sys.version_info[0] == 2 else self.image_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -15919,26 +12486,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_image_args) delete_image_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "image_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'image_id', 'UTF8', None, ), # 1 ) @@ -15949,18 +12509,12 @@ class delete_image_result(object): """ - def __init__( - self, - e=None, - ): + + def __init__(self, e=None,): self.e = e def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -15980,13 +12534,11 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_image_result") + oprot.writeStructBegin('delete_image_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15996,26 +12548,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_image_result) delete_image_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ImageNotFoundException, None], - None, - ), # 1 + (1, TType.STRUCT, 'e', [ImageNotFoundException, None], None, ), # 1 ) @@ -16027,20 +12572,13 @@ class detach_volume_args(object): """ - def __init__( - self, - volume_id=None, - server_id=None, - ): + + def __init__(self, volume_id=None, server_id=None,): self.volume_id = volume_id self.server_id = server_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16050,20 +12588,12 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.server_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.server_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -16073,26 +12603,16 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("detach_volume_args") + oprot.writeStructBegin('detach_volume_args') if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 1) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 1) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() if self.server_id is not None: - oprot.writeFieldBegin("server_id", TType.STRING, 2) - oprot.writeString( - self.server_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.server_id - ) + oprot.writeFieldBegin('server_id', TType.STRING, 2) + oprot.writeString(self.server_id.encode('utf-8') if sys.version_info[0] == 2 else self.server_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -16101,33 +12621,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(detach_volume_args) detach_volume_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "server_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'volume_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'server_id', 'UTF8', None, ), # 2 ) @@ -16140,22 +12647,14 @@ class detach_volume_result(object): """ - def __init__( - self, - e=None, - c=None, - v=None, - ): + + def __init__(self, e=None, c=None, v=None,): self.e = e self.c = c self.v = v def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16185,21 +12684,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("detach_volume_result") + oprot.writeStructBegin('detach_volume_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() if self.v is not None: - oprot.writeFieldBegin("v", TType.STRUCT, 3) + oprot.writeFieldBegin('v', TType.STRUCT, 3) self.v.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16209,40 +12706,21 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(detach_volume_result) detach_volume_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 - ( - 3, - TType.STRUCT, - "v", - [VolumeNotFoundException, None], - None, - ), # 3 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 + (3, TType.STRUCT, 'v', [VolumeNotFoundException, None], None, ), # 3 ) @@ -16253,18 +12731,12 @@ class delete_volume_args(object): """ - def __init__( - self, - volume_id=None, - ): + + def __init__(self, volume_id=None,): self.volume_id = volume_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16274,11 +12746,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -16288,18 +12756,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_volume_args") + oprot.writeStructBegin('delete_volume_args') if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 1) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 1) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -16308,26 +12770,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_volume_args) delete_volume_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'volume_id', 'UTF8', None, ), # 1 ) @@ -16339,20 +12794,13 @@ class delete_volume_result(object): """ - def __init__( - self, - c=None, - v=None, - ): + + def __init__(self, c=None, v=None,): self.c = c self.v = v def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16377,17 +12825,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_volume_result") + oprot.writeStructBegin('delete_volume_result') if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 1) + oprot.writeFieldBegin('c', TType.STRUCT, 1) self.c.write(oprot) oprot.writeFieldEnd() if self.v is not None: - oprot.writeFieldBegin("v", TType.STRUCT, 2) + oprot.writeFieldBegin('v', TType.STRUCT, 2) self.v.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16397,33 +12843,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_volume_result) delete_volume_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "v", - [VolumeNotFoundException, None], - None, - ), # 2 + (1, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 1 + (2, TType.STRUCT, 'v', [VolumeNotFoundException, None], None, ), # 2 ) @@ -16435,20 +12868,13 @@ class attach_volume_to_server_args(object): """ - def __init__( - self, - openstack_id=None, - volume_id=None, - ): + + def __init__(self, openstack_id=None, volume_id=None,): self.openstack_id = openstack_id self.volume_id = volume_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16458,20 +12884,12 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -16481,26 +12899,16 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("attach_volume_to_server_args") + oprot.writeStructBegin('attach_volume_to_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 2) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 2) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -16509,33 +12917,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(attach_volume_to_server_args) attach_volume_to_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'volume_id', 'UTF8', None, ), # 2 ) @@ -16548,22 +12943,14 @@ class attach_volume_to_server_result(object): """ - def __init__( - self, - success=None, - e=None, - c=None, - ): + + def __init__(self, success=None, e=None, c=None,): self.success = success self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16576,16 +12963,8 @@ def read(self, iprot): self.success = {} (_ktype391, _vtype392, _size390) = iprot.readMapBegin() for _i394 in range(_size390): - _key395 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val396 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key395 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val396 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.success[_key395] = _val396 iprot.readMapEnd() else: @@ -16607,29 +12986,23 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("attach_volume_to_server_result") + oprot.writeStructBegin('attach_volume_to_server_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.MAP, 0) + oprot.writeFieldBegin('success', TType.MAP, 0) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success)) for kiter397, viter398 in self.success.items(): - oprot.writeString( - kiter397.encode("utf-8") if sys.version_info[0] == 2 else kiter397 - ) - oprot.writeString( - viter398.encode("utf-8") if sys.version_info[0] == 2 else viter398 - ) + oprot.writeString(kiter397.encode('utf-8') if sys.version_info[0] == 2 else kiter397) + oprot.writeString(viter398.encode('utf-8') if sys.version_info[0] == 2 else viter398) oprot.writeMapEnd() oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16639,39 +13012,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(attach_volume_to_server_result) attach_volume_to_server_result.thrift_spec = ( - ( - 0, - TType.MAP, - "success", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [VolumeNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (0, TType.MAP, 'success', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 0 + (1, TType.STRUCT, 'e', [VolumeNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) @@ -16682,18 +13036,12 @@ class resume_server_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16703,11 +13051,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -16717,18 +13061,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("resume_server_args") + oprot.writeStructBegin('resume_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -16737,26 +13075,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(resume_server_args) resume_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -16768,20 +13099,13 @@ class resume_server_result(object): """ - def __init__( - self, - e=None, - c=None, - ): + + def __init__(self, e=None, c=None,): self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16806,17 +13130,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("resume_server_result") + oprot.writeStructBegin('resume_server_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16826,33 +13148,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(resume_server_result) resume_server_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) @@ -16865,22 +13174,14 @@ class create_volume_args(object): """ - def __init__( - self, - volume_name=None, - volume_storage=None, - metadata=None, - ): + + def __init__(self, volume_name=None, volume_storage=None, metadata=None,): self.volume_name = volume_name self.volume_storage = volume_storage self.metadata = metadata def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -16890,11 +13191,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -16907,16 +13204,8 @@ def read(self, iprot): self.metadata = {} (_ktype400, _vtype401, _size399) = iprot.readMapBegin() for _i403 in range(_size399): - _key404 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val405 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key404 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val405 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key404] = _val405 iprot.readMapEnd() else: @@ -16928,33 +13217,23 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_args") + oprot.writeStructBegin('create_volume_args') if self.volume_name is not None: - oprot.writeFieldBegin("volume_name", TType.STRING, 1) - oprot.writeString( - self.volume_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_name - ) + oprot.writeFieldBegin('volume_name', TType.STRING, 1) + oprot.writeString(self.volume_name.encode('utf-8') if sys.version_info[0] == 2 else self.volume_name) oprot.writeFieldEnd() if self.volume_storage is not None: - oprot.writeFieldBegin("volume_storage", TType.I32, 2) + oprot.writeFieldBegin('volume_storage', TType.I32, 2) oprot.writeI32(self.volume_storage) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 3) + oprot.writeFieldBegin('metadata', TType.MAP, 3) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter406, viter407 in self.metadata.items(): - oprot.writeString( - kiter406.encode("utf-8") if sys.version_info[0] == 2 else kiter406 - ) - oprot.writeString( - viter407.encode("utf-8") if sys.version_info[0] == 2 else viter407 - ) + oprot.writeString(kiter406.encode('utf-8') if sys.version_info[0] == 2 else kiter406) + oprot.writeString(viter407.encode('utf-8') if sys.version_info[0] == 2 else viter407) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16964,40 +13243,21 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_args) create_volume_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.I32, - "volume_storage", - None, - None, - ), # 2 - ( - 3, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 3 + (1, TType.STRING, 'volume_name', 'UTF8', None, ), # 1 + (2, TType.I32, 'volume_storage', None, None, ), # 2 + (3, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 3 ) @@ -17010,22 +13270,14 @@ class create_volume_result(object): """ - def __init__( - self, - success=None, - r=None, - n=None, - ): + + def __init__(self, success=None, r=None, n=None,): self.success = success self.r = r self.n = n def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17056,21 +13308,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_result") + oprot.writeStructBegin('create_volume_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 1) + oprot.writeFieldBegin('r', TType.STRUCT, 1) self.r.write(oprot) oprot.writeFieldEnd() if self.n is not None: - oprot.writeFieldBegin("n", TType.STRUCT, 2) + oprot.writeFieldBegin('n', TType.STRUCT, 2) self.n.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17080,39 +13330,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_result) create_volume_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Volume, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "r", - [DefaultException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "n", - [ResourceNotAvailableException, None], - None, - ), # 2 + (0, TType.STRUCT, 'success', [Volume, None], None, ), # 0 + (1, TType.STRUCT, 'r', [DefaultException, None], None, ), # 1 + (2, TType.STRUCT, 'n', [ResourceNotAvailableException, None], None, ), # 2 ) @@ -17125,22 +13356,14 @@ class create_volume_by_source_volume_args(object): """ - def __init__( - self, - volume_name=None, - metadata=None, - source_volume_id=None, - ): + + def __init__(self, volume_name=None, metadata=None, source_volume_id=None,): self.volume_name = volume_name self.metadata = metadata self.source_volume_id = source_volume_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17150,11 +13373,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -17162,27 +13381,15 @@ def read(self, iprot): self.metadata = {} (_ktype409, _vtype410, _size408) = iprot.readMapBegin() for _i412 in range(_size408): - _key413 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val414 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key413 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val414 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key413] = _val414 iprot.readMapEnd() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.source_volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.source_volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -17192,38 +13399,24 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_by_source_volume_args") + oprot.writeStructBegin('create_volume_by_source_volume_args') if self.volume_name is not None: - oprot.writeFieldBegin("volume_name", TType.STRING, 1) - oprot.writeString( - self.volume_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_name - ) + oprot.writeFieldBegin('volume_name', TType.STRING, 1) + oprot.writeString(self.volume_name.encode('utf-8') if sys.version_info[0] == 2 else self.volume_name) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 2) + oprot.writeFieldBegin('metadata', TType.MAP, 2) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter415, viter416 in self.metadata.items(): - oprot.writeString( - kiter415.encode("utf-8") if sys.version_info[0] == 2 else kiter415 - ) - oprot.writeString( - viter416.encode("utf-8") if sys.version_info[0] == 2 else viter416 - ) + oprot.writeString(kiter415.encode('utf-8') if sys.version_info[0] == 2 else kiter415) + oprot.writeString(viter416.encode('utf-8') if sys.version_info[0] == 2 else viter416) oprot.writeMapEnd() oprot.writeFieldEnd() if self.source_volume_id is not None: - oprot.writeFieldBegin("source_volume_id", TType.STRING, 3) - oprot.writeString( - self.source_volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.source_volume_id - ) + oprot.writeFieldBegin('source_volume_id', TType.STRING, 3) + oprot.writeString(self.source_volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.source_volume_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -17232,40 +13425,21 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_by_source_volume_args) create_volume_by_source_volume_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 2 - ( - 3, - TType.STRING, - "source_volume_id", - "UTF8", - None, - ), # 3 + (1, TType.STRING, 'volume_name', 'UTF8', None, ), # 1 + (2, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 2 + (3, TType.STRING, 'source_volume_id', 'UTF8', None, ), # 3 ) @@ -17278,22 +13452,14 @@ class create_volume_by_source_volume_result(object): """ - def __init__( - self, - success=None, - r=None, - n=None, - ): + + def __init__(self, success=None, r=None, n=None,): self.success = success self.r = r self.n = n def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17324,21 +13490,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_by_source_volume_result") + oprot.writeStructBegin('create_volume_by_source_volume_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 1) + oprot.writeFieldBegin('r', TType.STRUCT, 1) self.r.write(oprot) oprot.writeFieldEnd() if self.n is not None: - oprot.writeFieldBegin("n", TType.STRUCT, 2) + oprot.writeFieldBegin('n', TType.STRUCT, 2) self.n.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17348,39 +13512,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_by_source_volume_result) create_volume_by_source_volume_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Volume, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "r", - [DefaultException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "n", - [ResourceNotAvailableException, None], - None, - ), # 2 + (0, TType.STRUCT, 'success', [Volume, None], None, ), # 0 + (1, TType.STRUCT, 'r', [DefaultException, None], None, ), # 1 + (2, TType.STRUCT, 'n', [ResourceNotAvailableException, None], None, ), # 2 ) @@ -17393,22 +13538,14 @@ class create_volume_by_volume_snap_args(object): """ - def __init__( - self, - volume_name=None, - metadata=None, - volume_snap_id=None, - ): + + def __init__(self, volume_name=None, metadata=None, volume_snap_id=None,): self.volume_name = volume_name self.metadata = metadata self.volume_snap_id = volume_snap_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17418,11 +13555,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -17430,27 +13563,15 @@ def read(self, iprot): self.metadata = {} (_ktype418, _vtype419, _size417) = iprot.readMapBegin() for _i421 in range(_size417): - _key422 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val423 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key422 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val423 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key422] = _val423 iprot.readMapEnd() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.volume_snap_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_snap_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -17460,38 +13581,24 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_by_volume_snap_args") + oprot.writeStructBegin('create_volume_by_volume_snap_args') if self.volume_name is not None: - oprot.writeFieldBegin("volume_name", TType.STRING, 1) - oprot.writeString( - self.volume_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_name - ) + oprot.writeFieldBegin('volume_name', TType.STRING, 1) + oprot.writeString(self.volume_name.encode('utf-8') if sys.version_info[0] == 2 else self.volume_name) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 2) + oprot.writeFieldBegin('metadata', TType.MAP, 2) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter424, viter425 in self.metadata.items(): - oprot.writeString( - kiter424.encode("utf-8") if sys.version_info[0] == 2 else kiter424 - ) - oprot.writeString( - viter425.encode("utf-8") if sys.version_info[0] == 2 else viter425 - ) + oprot.writeString(kiter424.encode('utf-8') if sys.version_info[0] == 2 else kiter424) + oprot.writeString(viter425.encode('utf-8') if sys.version_info[0] == 2 else viter425) oprot.writeMapEnd() oprot.writeFieldEnd() if self.volume_snap_id is not None: - oprot.writeFieldBegin("volume_snap_id", TType.STRING, 3) - oprot.writeString( - self.volume_snap_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_snap_id - ) + oprot.writeFieldBegin('volume_snap_id', TType.STRING, 3) + oprot.writeString(self.volume_snap_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_snap_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -17500,40 +13607,21 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_by_volume_snap_args) create_volume_by_volume_snap_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 2 - ( - 3, - TType.STRING, - "volume_snap_id", - "UTF8", - None, - ), # 3 + (1, TType.STRING, 'volume_name', 'UTF8', None, ), # 1 + (2, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 2 + (3, TType.STRING, 'volume_snap_id', 'UTF8', None, ), # 3 ) @@ -17546,22 +13634,14 @@ class create_volume_by_volume_snap_result(object): """ - def __init__( - self, - success=None, - r=None, - n=None, - ): + + def __init__(self, success=None, r=None, n=None,): self.success = success self.r = r self.n = n def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17592,21 +13672,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_by_volume_snap_result") + oprot.writeStructBegin('create_volume_by_volume_snap_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 1) + oprot.writeFieldBegin('r', TType.STRUCT, 1) self.r.write(oprot) oprot.writeFieldEnd() if self.n is not None: - oprot.writeFieldBegin("n", TType.STRUCT, 2) + oprot.writeFieldBegin('n', TType.STRUCT, 2) self.n.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17616,39 +13694,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_by_volume_snap_result) create_volume_by_volume_snap_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Volume, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "r", - [DefaultException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "n", - [ResourceNotAvailableException, None], - None, - ), # 2 + (0, TType.STRUCT, 'success', [Volume, None], None, ), # 0 + (1, TType.STRUCT, 'r', [DefaultException, None], None, ), # 1 + (2, TType.STRUCT, 'n', [ResourceNotAvailableException, None], None, ), # 2 ) @@ -17661,22 +13720,14 @@ class create_volume_snapshot_args(object): """ - def __init__( - self, - volume_id=None, - name=None, - description=None, - ): + + def __init__(self, volume_id=None, name=None, description=None,): self.volume_id = volume_id self.name = name self.description = description def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17686,29 +13737,17 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -17718,32 +13757,20 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_snapshot_args") + oprot.writeStructBegin('create_volume_snapshot_args') if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 1) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 1) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 2) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 2) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 3) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 3) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -17752,40 +13779,21 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_snapshot_args) create_volume_snapshot_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "description", - "UTF8", - None, - ), # 3 + (1, TType.STRING, 'volume_id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'description', 'UTF8', None, ), # 3 ) @@ -17798,22 +13806,14 @@ class create_volume_snapshot_result(object): """ - def __init__( - self, - success=None, - e=None, - r=None, - ): + + def __init__(self, success=None, e=None, r=None,): self.success = success self.e = e self.r = r def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17823,11 +13823,7 @@ def read(self, iprot): break if fid == 0: if ftype == TType.STRING: - self.success = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.success = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 1: @@ -17847,25 +13843,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("create_volume_snapshot_result") + oprot.writeStructBegin('create_volume_snapshot_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRING, 0) - oprot.writeString( - self.success.encode("utf-8") - if sys.version_info[0] == 2 - else self.success - ) + oprot.writeFieldBegin('success', TType.STRING, 0) + oprot.writeString(self.success.encode('utf-8') if sys.version_info[0] == 2 else self.success) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 2) + oprot.writeFieldBegin('r', TType.STRUCT, 2) self.r.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17875,39 +13865,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(create_volume_snapshot_result) create_volume_snapshot_result.thrift_spec = ( - ( - 0, - TType.STRING, - "success", - "UTF8", - None, - ), # 0 - ( - 1, - TType.STRUCT, - "e", - [VolumeNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "r", - [DefaultException, None], - None, - ), # 2 + (0, TType.STRING, 'success', 'UTF8', None, ), # 0 + (1, TType.STRUCT, 'e', [VolumeNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'r', [DefaultException, None], None, ), # 2 ) @@ -17918,18 +13889,12 @@ class get_volume_snapshot_args(object): """ - def __init__( - self, - name_or_id=None, - ): + + def __init__(self, name_or_id=None,): self.name_or_id = name_or_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -17939,11 +13904,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -17953,18 +13914,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_volume_snapshot_args") + oprot.writeStructBegin('get_volume_snapshot_args') if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 1) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 1) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -17973,26 +13928,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_volume_snapshot_args) get_volume_snapshot_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'name_or_id', 'UTF8', None, ), # 1 ) @@ -18004,20 +13952,13 @@ class get_volume_snapshot_result(object): """ - def __init__( - self, - success=None, - r=None, - ): + + def __init__(self, success=None, r=None,): self.success = success self.r = r def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18043,17 +13984,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("get_volume_snapshot_result") + oprot.writeStructBegin('get_volume_snapshot_result') if self.success is not None: - oprot.writeFieldBegin("success", TType.STRUCT, 0) + oprot.writeFieldBegin('success', TType.STRUCT, 0) self.success.write(oprot) oprot.writeFieldEnd() if self.r is not None: - oprot.writeFieldBegin("r", TType.STRUCT, 1) + oprot.writeFieldBegin('r', TType.STRUCT, 1) self.r.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18063,32 +14002,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(get_volume_snapshot_result) get_volume_snapshot_result.thrift_spec = ( - ( - 0, - TType.STRUCT, - "success", - [Snapshot, None], - None, - ), # 0 - ( - 1, - TType.STRUCT, - "r", - [ResourceNotFoundException, None], - None, - ), # 1 + (0, TType.STRUCT, 'success', [Snapshot, None], None, ), # 0 + (1, TType.STRUCT, 'r', [ResourceNotFoundException, None], None, ), # 1 ) @@ -18099,18 +14025,12 @@ class delete_volume_snapshot_args(object): """ - def __init__( - self, - snapshot_id=None, - ): + + def __init__(self, snapshot_id=None,): self.snapshot_id = snapshot_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18120,11 +14040,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.snapshot_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.snapshot_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -18134,18 +14050,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_volume_snapshot_args") + oprot.writeStructBegin('delete_volume_snapshot_args') if self.snapshot_id is not None: - oprot.writeFieldBegin("snapshot_id", TType.STRING, 1) - oprot.writeString( - self.snapshot_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.snapshot_id - ) + oprot.writeFieldBegin('snapshot_id', TType.STRING, 1) + oprot.writeString(self.snapshot_id.encode('utf-8') if sys.version_info[0] == 2 else self.snapshot_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -18154,26 +14064,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_volume_snapshot_args) delete_volume_snapshot_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "snapshot_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'snapshot_id', 'UTF8', None, ), # 1 ) @@ -18185,20 +14088,13 @@ class delete_volume_snapshot_result(object): """ - def __init__( - self, - c=None, - e=None, - ): + + def __init__(self, c=None, e=None,): self.c = c self.e = e def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18223,17 +14119,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("delete_volume_snapshot_result") + oprot.writeStructBegin('delete_volume_snapshot_result') if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 1) + oprot.writeFieldBegin('c', TType.STRUCT, 1) self.c.write(oprot) oprot.writeFieldEnd() if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 2) + oprot.writeFieldBegin('e', TType.STRUCT, 2) self.e.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18243,33 +14137,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(delete_volume_snapshot_result) delete_volume_snapshot_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "e", - [DefaultException, None], - None, - ), # 2 + (1, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 1 + (2, TType.STRUCT, 'e', [DefaultException, None], None, ), # 2 ) @@ -18280,18 +14161,12 @@ class reboot_hard_server_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18301,11 +14176,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -18315,18 +14186,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("reboot_hard_server_args") + oprot.writeStructBegin('reboot_hard_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -18335,26 +14200,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(reboot_hard_server_args) reboot_hard_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -18366,20 +14224,13 @@ class reboot_hard_server_result(object): """ - def __init__( - self, - e=None, - c=None, - ): + + def __init__(self, e=None, c=None,): self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18404,17 +14255,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("reboot_hard_server_result") + oprot.writeStructBegin('reboot_hard_server_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18424,33 +14273,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(reboot_hard_server_result) reboot_hard_server_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) @@ -18461,18 +14297,12 @@ class reboot_soft_server_args(object): """ - def __init__( - self, - openstack_id=None, - ): + + def __init__(self, openstack_id=None,): self.openstack_id = openstack_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18482,11 +14312,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -18496,18 +14322,12 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("reboot_soft_server_args") + oprot.writeStructBegin('reboot_soft_server_args') if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 1) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 1) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -18516,26 +14336,19 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(reboot_soft_server_args) reboot_soft_server_args.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'openstack_id', 'UTF8', None, ), # 1 ) @@ -18547,20 +14360,13 @@ class reboot_soft_server_result(object): """ - def __init__( - self, - e=None, - c=None, - ): + + def __init__(self, e=None, c=None,): self.e = e self.c = c def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -18585,17 +14391,15 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("reboot_soft_server_result") + oprot.writeStructBegin('reboot_soft_server_result') if self.e is not None: - oprot.writeFieldBegin("e", TType.STRUCT, 1) + oprot.writeFieldBegin('e', TType.STRUCT, 1) self.e.write(oprot) oprot.writeFieldEnd() if self.c is not None: - oprot.writeFieldBegin("c", TType.STRUCT, 2) + oprot.writeFieldBegin('c', TType.STRUCT, 2) self.c.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18605,33 +14409,20 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(reboot_soft_server_result) reboot_soft_server_result.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "e", - [ServerNotFoundException, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "c", - [OpenStackConflictException, None], - None, - ), # 2 + (1, TType.STRUCT, 'e', [ServerNotFoundException, None], None, ), # 1 + (2, TType.STRUCT, 'c', [OpenStackConflictException, None], None, ), # 2 ) fix_spec(all_structs) del all_structs diff --git a/simple_vm_client/__init__.py b/simple_vm_client/__init__.py index 86a570c6..ba9c185a 100644 --- a/simple_vm_client/__init__.py +++ b/simple_vm_client/__init__.py @@ -1 +1 @@ -__all__ = ['ttypes', 'constants', 'VirtualMachineService'] +__all__ = ["ttypes", "constants", "VirtualMachineService"] diff --git a/simple_vm_client/bibigrid_connector/bibigrid_connector.py b/simple_vm_client/bibigrid_connector/bibigrid_connector.py index 24417ed2..547ad33d 100644 --- a/simple_vm_client/bibigrid_connector/bibigrid_connector.py +++ b/simple_vm_client/bibigrid_connector/bibigrid_connector.py @@ -1,7 +1,8 @@ import requests import yaml -from ttypes import ClusterInfo, ClusterInstance -from util.logger import setup_custom_logger + +from simple_vm_client.ttypes import ClusterInfo, ClusterInstance +from simple_vm_client.util.logger import setup_custom_logger logger = setup_custom_logger(__name__) @@ -53,27 +54,32 @@ def load_config_yml(self, config_file: str) -> None: def get_cluster_status(self, cluster_id: str) -> dict[str, str]: logger.info(f"Get Cluster {cluster_id} status") + headers = {"content-Type": "application/json"} body = {"mode": "openstack"} - request_url = self._BIBIGRID_URL + "info/" + cluster_id - response = requests.get( - url=request_url, - json=body, - headers=headers, - verify=self._PRODUCTION, - ) - logger.info(f"Cluster {cluster_id} status: {str(response.content)} ") - json_resp: dict[str, str] = response.json(strict=False) - try: - json_resp["log"] = str(json_resp["log"]) - except Exception: - logger.info(f"No Logs for Cluster - {cluster_id}") + request_url = f"{self._BIBIGRID_URL}info/{cluster_id}" + try: - json_resp["msg"] = str(json_resp["msg"]) - except Exception: - logger.info(f"No msg for Cluster - {cluster_id}") + response = requests.get( + url=request_url, + json=body, + headers=headers, + verify=self._PRODUCTION, + ) + response.raise_for_status() # Raise an exception for HTTP errors (4xx and 5xx) + json_resp = response.json(strict=False) + + # Convert log and msg keys to strings, handling the case where they might not exist + json_resp["log"] = str(json_resp.get("log", "")) + json_resp["msg"] = str(json_resp.get("msg", "")) - return json_resp + logger.info(f"Cluster {cluster_id} status: {json_resp}") + + return json_resp + + except requests.RequestException as e: + logger.exception("Error while getting Cluster status") + return {"error": str(e)} def get_cluster_info(self, cluster_id: str) -> ClusterInfo: logger.info(f"Get Cluster info from {cluster_id}") @@ -127,7 +133,7 @@ def is_bibigrid_available(self) -> bool: logger.error(f"Bibigrid returned status code {response.status_code}") return False - except requests.RequestException as e: + except requests.RequestException: logger.exception("Error while checking Bibigrid availability") return False diff --git a/simple_vm_client/bibigrid_connector/test_bibigrid_connector.py b/simple_vm_client/bibigrid_connector/test_bibigrid_connector.py new file mode 100644 index 00000000..d71dba5d --- /dev/null +++ b/simple_vm_client/bibigrid_connector/test_bibigrid_connector.py @@ -0,0 +1,364 @@ +import os +import tempfile +import unittest +from unittest.mock import MagicMock, Mock, patch + +import requests + +from simple_vm_client.bibigrid_connector.bibigrid_connector import BibigridConnector +from simple_vm_client.ttypes import ClusterInfo, ClusterInstance + +HOST = "example.com" +PORT = 8080 +HTTPS = True +MODES = ["mode1", "mode2"] +MASTER_WITH_PUBLIC_IP = False +LOCAL_DNS_LOOKUP = False +NETWORK = "my_network" +SUB_NETWORK = "my_sub_network" +PRODUCTION = True +DEFAULT_CLUSTER_INFO = ClusterInfo( + group_id="fake_group_id", + network_id="fake_network_id", + public_ip="fake_public_ip", + subnet_id="fake_subnet_id", + user="fake_user", + inst_counter=42, + cluster_id="fake_cluster_id", + key_name="fake_key_name", +) +DEFAULT_MASTER_INSTANCE = ClusterInstance(image="master_image", type="master_flavor") +DEFAULT_WORKER_INSTANCES = [ + ClusterInstance(image="worker_flavor", count=3, type="worker_flavor") +] + + +class TestBibigridConnector(unittest.TestCase): + @patch( + "simple_vm_client.bibigrid_connector.bibigrid_connector.BibigridConnector.is_bibigrid_available" + ) + def setUp(self, mock_is_bibigrid_available): + self.fake_config = f""" + bibigrid: + host: {HOST} + port: {PORT} + https: {HTTPS} + modes: {MODES} + use_master_with_public_ip: {MASTER_WITH_PUBLIC_IP} + localDnsLookup: {LOCAL_DNS_LOOKUP} + ansibleGalaxyRoles: + - role1 + - role2 + + openstack: + network: {NETWORK} + sub_network: {SUB_NETWORK} + + production: {PRODUCTION} + """ + self.fake_config_file = tempfile.NamedTemporaryFile( + mode="w+", suffix=".yml", delete=False + ) + self.fake_config_file.write(self.fake_config) + self.fake_config_file.close() + mock_is_bibigrid_available.return_value = True + self.connector = BibigridConnector(config_file=self.fake_config_file.name) + + def tearDown(self): + # Clean up: Remove the temporary file + os.remove(self.fake_config_file.name) + + @patch( + "simple_vm_client.bibigrid_connector.bibigrid_connector.BibigridConnector.is_bibigrid_available" + ) + def test_load_config_yml(self, mock_is_bibigrid_available): + # Instantiate BibigridConnector with the fake config + self.connector.load_config_yml(self.fake_config_file.name) + self.assertEqual(self.connector._BIBIGRID_HOST, HOST) + self.assertEqual(self.connector._BIBIGRID_PORT, PORT) + self.assertEqual(self.connector._BIBIGRID_USE_HTTPS, HTTPS) + self.assertEqual(self.connector._BIBIGRID_MODES, MODES) + self.assertEqual( + self.connector._BIBIGRID_USE_MASTER_WITH_PUBLIC_IP, MASTER_WITH_PUBLIC_IP + ) + self.assertEqual(self.connector._BIBIGRID_LOCAL_DNS_LOOKUP, LOCAL_DNS_LOOKUP) + self.assertEqual(self.connector._BIBIGRID_ANSIBLE_ROLES, ["role1", "role2"]) + self.assertEqual(self.connector._NETWORK, NETWORK) + self.assertEqual(self.connector._SUB_NETWORK, SUB_NETWORK) + self.assertEqual(self.connector._PRODUCTION, PRODUCTION) + + # Check the generated URLs + self.assertEqual( + self.connector._BIBIGRID_URL, "https://example.com:8080/bibigrid/" + ) + self.assertEqual(self.connector._BIBIGRID_EP, "https://example.com:8080") + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_is_bibigrid_available_when_url_not_set(self, mock_logger_info): + # Arrange + self.connector._BIBIGRID_EP = "" + + # Act + result = self.connector.is_bibigrid_available() + + # Assert + mock_logger_info.assert_any_call("Checking if Bibigrid is available") + mock_logger_info.assert_any_call("Bibigrid Url is not set") + self.assertFalse(result) + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.get") + def test_is_bibigrid_available_when_request_succeeds( + self, mock_get, mock_logger_info + ): + # Arrange + mock_get.return_value = Mock(status_code=200) + + # Act + result = self.connector.is_bibigrid_available() + mock_logger_info.assert_any_call("Checking if Bibigrid is available") + + # Assert + self.assertTrue(result) + mock_get.assert_called_once_with(f"{self.connector._BIBIGRID_EP}/server/health") + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.error") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.get") + def test_is_bibigrid_available_when_request_wrong_status_code( + self, mock_get, mock_logger_error, mock_logger_info + ): + # Arrange + mock_get.return_value = Mock(status_code=500) + + # Act + result = self.connector.is_bibigrid_available() + mock_logger_info.assert_any_call("Checking if Bibigrid is available") + + # Assert + self.assertFalse(result) + mock_get.assert_called_once_with(f"{self.connector._BIBIGRID_EP}/server/health") + mock_logger_error.assert_called_once_with("Bibigrid returned status code 500") + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.error") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.get") + def test_is_bibigrid_available_when_request_exception( + self, mock_get, mock_logger_error, mock_logger_info + ): + # Arrange + mock_get.side_effect = requests.RequestException("Could not connect") + + # Act + result = self.connector.is_bibigrid_available() + mock_logger_info.assert_any_call("Checking if Bibigrid is available") + + # Assert + self.assertFalse(result) + mock_get.assert_called_once_with(f"{self.connector._BIBIGRID_EP}/server/health") + mock_logger_error.assert_called_once_with( + "Error while checking Bibigrid availability", exc_info=True + ) + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.delete") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_terminate_cluster(self, mock_logger_info, mock_delete): + # Arrange + cluster_id = "fake_cluster_id" + + expected_url = f"{self.connector._BIBIGRID_URL}terminate/{cluster_id}" + expected_headers = {"content-Type": "application/json"} + expected_body = {"mode": "openstack"} + expected_response = {"fake_key": "fake_value"} + + mock_delete.return_value = MagicMock(json=lambda: expected_response) + + # Act + result = self.connector.terminate_cluster(cluster_id) + + # Assert + mock_delete.assert_called_once_with( + url=expected_url, + json=expected_body, + headers=expected_headers, + verify=self.connector._PRODUCTION, + ) + mock_logger_info.assert_any_call(f"Terminate cluster: {cluster_id}") + mock_logger_info.assert_any_call(expected_response) + self.assertEqual(result, expected_response) + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.post") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_start_cluster(self, mock_logger_info, mock_post): + public_key = "fake_public_key" + + user = "fake_user" + + # Mock the response from the requests.post call + mock_post.return_value.json.return_value = {"fake": "response"} + + # Call the method to test + result = self.connector.start_cluster( + public_key=public_key, + master_instance=DEFAULT_MASTER_INSTANCE, + worker_instances=DEFAULT_WORKER_INSTANCES, + user=user, + ) + wI = [] + for wk in DEFAULT_WORKER_INSTANCES: + wI.append(wk.__dict__) + body = { + "mode": "openstack", + "subnet": self.connector._SUB_NETWORK, + "sshPublicKeys": [public_key], + "user": user, + "sshUser": "ubuntu", + "masterInstance": DEFAULT_MASTER_INSTANCE.__dict__, + "workerInstances": wI, + "useMasterWithPublicIp": self.connector._BIBIGRID_USE_MASTER_WITH_PUBLIC_IP, + "ansibleGalaxyRoles": self.connector._BIBIGRID_ANSIBLE_ROLES, + "localDNSLookup": self.connector._BIBIGRID_LOCAL_DNS_LOOKUP, + } + for mode in self.connector._BIBIGRID_MODES: + body.update({mode: True}) + + # Assertions + mock_post.assert_called_once_with( + url=self.connector._BIBIGRID_URL + "create", + json=body, + headers={"content-Type": "application/json"}, + verify=self.connector._PRODUCTION, + ) + args, kwargs = mock_post.call_args + self.assertEqual(kwargs["json"]["sshPublicKeys"], [public_key]) + self.assertEqual(kwargs["json"]["user"], user) + self.assertIn("masterInstance", kwargs["json"]) + self.assertIn("workerInstances", kwargs["json"]) + self.assertIn("useMasterWithPublicIp", kwargs["json"]) + self.assertIn("ansibleGalaxyRoles", kwargs["json"]) + self.assertIn("localDNSLookup", kwargs["json"]) + self.assertIn("openstack", kwargs["json"]["mode"]) + + self.assertEqual(result, {"fake": "response"}) + + for wk in DEFAULT_WORKER_INSTANCES: + mock_logger_info.assert_any_call(wk) + mock_logger_info.assert_any_call({"fake": "response"}) + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.get") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_get_clusters_info(self, mock_logger_info, mock_get): + # Mock the response from the requests.get call + mock_response = MagicMock() + mock_response.json.return_value = {"info": [{"cluster-id": "fake_cluster_id"}]} + mock_get.return_value = mock_response + + # Call the method to test + result = self.connector.get_clusters_info() + headers = {"content-Type": "application/json"} + body = {"mode": "openstack"} + + mock_get.assert_called_once_with( + url=self.connector._BIBIGRID_URL + "list", + json=body, + headers=headers, + verify=self.connector._PRODUCTION, + ) + + # Assertions + + self.assertEqual(result, [{"cluster-id": "fake_cluster_id"}]) + mock_logger_info.assert_called_once_with("Get clusters info") + + @patch.object(BibigridConnector, "get_clusters_info") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_get_cluster_info_none(self, mock_logger_info, mock_get_clusters_info): + mock_get_clusters_info.return_value = [] + result = self.connector.get_cluster_info("fake_cluster_id") + mock_logger_info.assert_any_call("Get Cluster info from fake_cluster_id") + self.assertIsNone(result) + + @patch.object(BibigridConnector, "get_clusters_info") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_get_cluster_info(self, mock_logger_info, mock_get_clusters_info): + # Mock the response from get_clusters_info + mock_get_clusters_info.return_value = [ + { + "cluster-id": "fake_cluster_id", + "group-id": "fake_group_id", + "network-id": "fake_network_id", + "public-ip": "fake_public_ip", + "subnet-id": "fake_subnet_id", + "user": "fake_user", + "# inst": 1, + "key name": "fake_key_name", + } + ] + + # Call the method to test + result = self.connector.get_cluster_info("fake_cluster_id") + + # Assertions + mock_get_clusters_info.assert_called_once() + self.assertEqual( + result, + ClusterInfo( + group_id="fake_group_id", + network_id="fake_network_id", + public_ip="fake_public_ip", + subnet_id="fake_subnet_id", + user="fake_user", + inst_counter=1, + cluster_id="fake_cluster_id", + key_name="fake_key_name", + ), + ) + mock_logger_info.assert_any_call("Get Cluster info from fake_cluster_id") + mock_logger_info.assert_any_call(f"Cluster fake_cluster_id info: {result} ") + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.get") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + def test_get_cluster_status(self, mock_logger_info, mock_requests_get): + # Arrange + cluster_id = "123" + + # Mock the response from requests.get + response_data = {"log": "Some log", "msg": "Some message"} + mock_response = MagicMock() + mock_response.json.return_value = response_data + mock_response.raise_for_status.return_value = None + mock_requests_get.return_value = mock_response + + # Act + result = self.connector.get_cluster_status(cluster_id) + + # Assert + mock_requests_get.assert_called_once_with( + url=f"{self.connector._BIBIGRID_URL}info/{cluster_id}", + json={"mode": "openstack"}, + headers={"content-Type": "application/json"}, + verify=self.connector._PRODUCTION, + ) + mock_response.json.assert_called_once() + mock_response.raise_for_status.assert_called_once() + mock_logger_info.assert_called_with( + f"Cluster {cluster_id} status: {response_data}" + ) + self.assertEqual(result, response_data) + + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.requests.get") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.info") + @patch("simple_vm_client.bibigrid_connector.bibigrid_connector.logger.exception") + def test_get_cluster_status_with_exception( + self, mock_logger_exception, mock_logger_info, mock_requests_get + ): + # Arrange + cluster_id = "123" + mock_requests_get.side_effect = requests.RequestException("Could not connect") + # Act + result = self.connector.get_cluster_status(cluster_id) + + self.assertEqual(result, {"error": "Could not connect"}) + mock_logger_exception.assert_called_once_with( + "Error while getting Cluster status" + ) diff --git a/simple_vm_client/config/config_giessen.yml b/simple_vm_client/config/config_giessen.yml new file mode 100644 index 00000000..57735d5d --- /dev/null +++ b/simple_vm_client/config/config_giessen.yml @@ -0,0 +1,58 @@ +redis: + host: simplevm_client_giessen_redis + port: 6379 + password: "" + +production: False + +logger: + level: INFO + file: log/portal_client.log + file_backup_count: 5 + max_bytes: 1073741824 + +server: + threads: 30 + host: 0.0.0.0 + port: 9090 + # If you use docker-compose this path needs to be the path you mount the server.pem into + certfile: /code/VirtualMachineService/keys/server.pem + use_ssl: False + +openstack: + cloud_site: giessen + gateway_security_group_id: b9ccddab-7e17-4df5-8282-48fd593500a8 + host: 0.0.0.0 + # Client Port + port: 9090 + # Gateway IP + gateway_ip: 134.176.27.238 + + # If set to True the client will use a Gateway instead of providing floating IPs for each instance. + use_gateway: True + + set_password: False + # network where the project is located + network: SimpleVMGieTest-Netzwerk + + # subnetwork for starting Clusters + sub_network: SimpleVMGieTest-Subnetz + + ssh_port_calculation: 30000 + x + y * 256 + udp_port_calculation: 30000 + x + y * 256 + +cloud_site: giessen + + +bibigrid: + # Url for Bibigrid API + port: 8080 + host: simplevm_bibigrid + https: False + sub_network: portalexternalsubnetwork + modes: + - slurm +forc: + forc_url: https://proxy-dev.gi.denbi.de:4443/ + github_playbooks_repo: https://github.com/deNBI/resenvs/archive/refs/heads/staging.zip + forc_security_group_id: 5adb9f48-1e57-463b-9742-573ba2dabae2 diff --git a/simple_vm_client/constants.py b/simple_vm_client/constants.py index 6a03e2fb..ea0204b1 100644 --- a/simple_vm_client/constants.py +++ b/simple_vm_client/constants.py @@ -1,15 +1,10 @@ # -# Autogenerated by Thrift Compiler (0.16.0) +# Autogenerated by Thrift Compiler (0.19.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # # options string: py # -from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException -from thrift.protocol.TProtocol import TProtocolException -from thrift.TRecursive import fix_spec -import sys -from ttypes import * VERSION = "1.0.0" diff --git a/simple_vm_client/forc_connector/forc_connector.py b/simple_vm_client/forc_connector/forc_connector.py index 1873cb88..962a5e05 100644 --- a/simple_vm_client/forc_connector/forc_connector.py +++ b/simple_vm_client/forc_connector/forc_connector.py @@ -7,7 +7,8 @@ import requests import yaml from openstack.compute.v2.server import Server -from ttypes import ( + +from simple_vm_client.ttypes import ( Backend, BackendNotFoundException, CondaPackage, @@ -16,8 +17,8 @@ PlaybookResult, TemplateNotFoundException, ) -from util.logger import setup_custom_logger -from util.state_enums import VmTaskStates +from simple_vm_client.util.logger import setup_custom_logger +from simple_vm_client.util.state_enums import VmTaskStates from .playbook.playbook import Playbook from .template.template import ResearchEnvironmentMetadata, Template @@ -129,11 +130,12 @@ def delete_backend(self, backend_id: str) -> None: if response.status_code: if response.status_code == 404 or response.status_code == 500: try: + response_data = response.json() raise BackendNotFoundException( - message=str(json.dumps(response.json())), + message=str(json.dumps(response_data)), name_or_id=str(backend_id), ) - except json.JSONDecodeError: + except ValueError: logger.exception(str(response.content)) raise BackendNotFoundException( message=str(response.content), name_or_id=str(backend_id) @@ -145,14 +147,11 @@ def delete_backend(self, backend_id: str) -> None: def add_user_to_backend(self, backend_id: str, user_id: str) -> dict[str, str]: logger.info(f"Add User {user_id} to backend {backend_id}") - try: - post_url = f"{self.FORC_URL}users/{backend_id}" - user_info = { - "user": user_id, - } - except Exception as e: - logger.exception(e) - return {"Error": "Could not create url or json body."} + post_url = f"{self.FORC_URL}users/{backend_id}" + user_info = { + "user": user_id, + } + try: response = requests.post( post_url, @@ -182,6 +181,7 @@ def create_backend( logger.info( f"Create Backend - [Owner:{owner}, user_key_url:{user_key_url}, template:{template}, upstream_url:{upstream_url}" ) + template_version = self.template.get_template_version_for(template=template) if template_version is None: logger.warning( @@ -191,18 +191,16 @@ def create_backend( message=f"No suitable template version found for {template}. Aborting backend creation!", template=template, ) - try: - post_url = f"{self.FORC_URL}backends" - backend_info = { - "owner": owner, - "user_key_url": user_key_url, - "template": template, - "template_version": template_version, - "upstream_url": upstream_url, - } - except Exception as e: - logger.exception(e) - raise DefaultException(message=e) + + post_url = f"{self.FORC_URL}backends" + backend_info = { + "owner": owner, + "user_key_url": user_key_url, + "template": template, + "template_version": template_version, + "upstream_url": upstream_url, + } + try: response = requests.post( post_url, @@ -211,12 +209,10 @@ def create_backend( headers={"X-API-KEY": self.FORC_API_KEY}, verify=True, ) - try: - data = response.json() - except Exception as e: - logger.exception(e) - raise DefaultException(message=e) + + data = response.json() logger.info(f"Backend created {data}") + new_backend = Backend( id=int(data["id"]), owner=data["owner"], @@ -227,7 +223,7 @@ def create_backend( return new_backend except requests.Timeout as e: - logger.info(msg=f"create_backend timed out. {e}") + logger.info(f"create_backend timed out. {e}") raise DefaultException(message=e) except Exception as e: @@ -366,19 +362,17 @@ def load_env(self) -> None: logger.info("Load env: FORC") self.FORC_API_KEY = os.environ.get("FORC_API_KEY", None) - def get_playbook_logs(self, openstack_id: str) -> PlaybookResult: - logger.warning(f"Get Playbook logs {openstack_id}") - if ( + def is_playbook_active(self, openstack_id: str) -> bool: + return ( self.redis_connection.exists(openstack_id) == 1 and openstack_id in self._active_playbooks - ): - playbook = self._active_playbooks.get(openstack_id) - logger.warning(f"playbook {playbook}") - if not playbook: - raise PlaybookNotFoundException( - message=f"No active Playbook found for {openstack_id}!", - name_or_id=openstack_id, - ) + ) + + def get_playbook_logs(self, openstack_id: str) -> PlaybookResult: + logger.warning(f"Get Playbook logs {openstack_id}") + + if self.is_playbook_active(openstack_id): + playbook = self._active_playbooks[openstack_id] status, stdout, stderr = playbook.get_logs() logger.warning(f" Playbook logs {openstack_id} status: {status}") @@ -483,6 +477,7 @@ def create_and_deploy_playbook( cloud_site=cloud_site, base_url=base_url, ) + logger.info(playbook) self.redis_connection.hset( openstack_id, "status", VmTaskStates.BUILD_PLAYBOOK.value ) diff --git a/simple_vm_client/forc_connector/playbook/playbook.py b/simple_vm_client/forc_connector/playbook/playbook.py index 0852e958..1e4c5c60 100644 --- a/simple_vm_client/forc_connector/playbook/playbook.py +++ b/simple_vm_client/forc_connector/playbook/playbook.py @@ -6,9 +6,11 @@ import redis import ruamel.yaml -from ttypes import CondaPackage -from util.logger import setup_custom_logger -from util.state_enums import VmTaskStates + +from simple_vm_client.forc_connector.template.template import Template +from simple_vm_client.ttypes import CondaPackage +from simple_vm_client.util.logger import setup_custom_logger +from simple_vm_client.util.state_enums import VmTaskStates CONDA = "conda" MOSH = "mosh" @@ -51,7 +53,6 @@ def __init__( self.research_environment_template = research_environment_template self.base_url = base_url # init temporary directories and mandatory generic files - from forc_connector.template.template import Template self.playbooks_dir: str = Template.get_playbook_dir() self.directory: TemporaryDirectory = TemporaryDirectory( @@ -160,53 +161,60 @@ def copy_and_init_research_environment(self) -> None: data[self.research_environment_template + "_vars"][ "base_url" ] = self.base_url - with open( - self.directory.name + playbook_var_yml, mode="w" - ) as variables: - self.yaml_exec.dump(data, variables) + with open(self.directory.name + playbook_var_yml, mode="w") as variables: + self.yaml_exec.dump(data, variables) self.add_to_playbook_lists( playbook_name_local, self.research_environment_template ) - except shutil.Error as e: - logger.exception(e) - self.add_tasks_only(playbook_name_local) - except IOError as e: - logger.exception(e) + except (shutil.Error, IOError): + logger.exception("Could not copy research environment template data") self.add_tasks_only(playbook_name_local) def copy_and_init_apt_packages(self) -> None: if not self.apt_packages: return - site_specific_yml = f"/{OPTIONAL}{'-' + self.cloud_site}.yml" + + site_specific_yml = f"{OPTIONAL}{'-' + self.cloud_site}.yml" playbook_name_local = OPTIONAL + if os.path.isfile(self.playbooks_dir + site_specific_yml): playbook_name_local = OPTIONAL + "-" + self.cloud_site - playbook_yml = f"/{playbook_name_local}.yml" - playbook_var_yml = f"/{OPTIONAL}_vars_file.yml" + + playbook_yml = f"{playbook_name_local}.yml" + playbook_var_yml = f"{OPTIONAL}_vars_file.yml" + try: - shutil.copy(self.playbooks_dir + playbook_yml, self.directory.name) + full_playbook_path = os.path.join(self.playbooks_dir, playbook_yml) + # Copy playbook YAML + shutil.copy(full_playbook_path, self.directory.name) + try: - shutil.copy(self.playbooks_dir + playbook_var_yml, self.directory.name) + full_vars_path = os.path.join(self.playbooks_dir, playbook_var_yml) + # Copy playbook vars YAML + shutil.copy(full_vars_path, self.directory.name) + + # Update apt_packages in playbook vars YAML with open( - self.directory.name + playbook_var_yml, mode="r" + os.path.join(self.directory.name, playbook_var_yml), mode="r" ) as variables: data = self.yaml_exec.load(variables) data["apt_packages"] = self.apt_packages - with open( - self.directory.name + playbook_var_yml, mode="w" - ) as variables: - self.yaml_exec.dump(data, variables) - self.add_to_playbook_lists(playbook_name_local, OPTIONAL) - except shutil.Error as e: - logger.exception(e) - self.add_tasks_only(playbook_name_local) - except IOError as e: - logger.exception(e) + + # Save updated playbook vars YAML + with open( + os.path.join(self.directory.name, playbook_var_yml), mode="w" + ) as variables: + self.yaml_exec.dump(data, variables) + + # Add to playbook lists + self.add_to_playbook_lists(playbook_name_local, OPTIONAL) + + except (shutil.Error, IOError): + logger.exception("Could not copy apt packages") self.add_tasks_only(playbook_name_local) - except shutil.Error as e: - logger.exception(e) - except IOError as e: - logger.exception(e) + + except (shutil.Error, IOError): + logger.exception("Could not copy apt packages") def copy_and_init_conda_packages(self) -> None: if not self.conda_packages: @@ -237,16 +245,13 @@ def copy_and_init_conda_packages(self) -> None: } ) data[CONDA + "_vars"]["packages"] = p_dict - with open( - self.directory.name + playbook_var_yml, mode="w" - ) as variables: - self.yaml_exec.dump(data, variables) - self.add_to_playbook_lists(playbook_name_local, CONDA) - except shutil.Error as e: - logger.exception(e) - self.add_tasks_only(playbook_name_local) - except IOError as e: - logger.exception(e) + with open(self.directory.name + playbook_var_yml, mode="w") as variables: + self.yaml_exec.dump(data, variables) + self.add_to_playbook_lists(playbook_name_local, CONDA) + except (shutil.Error, IOError): + logger.exception( + f"Could not open - {self.directory.name + playbook_var_yml}" + ) self.add_tasks_only(playbook_name_local) def add_to_playbook_lists( @@ -294,6 +299,7 @@ def add_always_tasks_only(self, playbook_name: str) -> None: ) def run_it(self) -> None: + logger.info("RUN ITTT") command_string = f"/usr/local/bin/ansible-playbook -v -i {self.inventory.name} {self.directory.name}/{self.playbook_exec_name}" command_string = shlex.split(command_string) # type: ignore logger.info(f"Run Playbook for {self.playbook_exec_name} - [{command_string}]") @@ -307,7 +313,7 @@ def run_it(self) -> None: def check_status(self, openstack_id: str) -> int: logger.info(f"Check Status Playbook for VM {openstack_id}") done = self.process.poll() - logger.info(f" Status Playbook for VM {openstack_id}: {done}") + logger.info(f"Status Playbook for VM {openstack_id}: {done}") if done is None: logger.info( @@ -324,6 +330,7 @@ def check_status(self, openstack_id: str) -> int: self.redis.hset( openstack_id, "status", VmTaskStates.PLAYBOOK_SUCCESSFUL.value ) + self.returncode = self.process.returncode self.process.wait() return done @@ -331,6 +338,7 @@ def check_status(self, openstack_id: str) -> int: def get_logs(self) -> tuple[int, str, str]: self.log_file_stdout.seek(0, 0) lines_stdout = self.log_file_stdout.readlines() + logger.info(lines_stdout) for line in lines_stdout: self.stdout += line self.log_file_stderr.seek(0, 0) diff --git a/simple_vm_client/forc_connector/playbook/test_playbook.py b/simple_vm_client/forc_connector/playbook/test_playbook.py new file mode 100644 index 00000000..f04a670b --- /dev/null +++ b/simple_vm_client/forc_connector/playbook/test_playbook.py @@ -0,0 +1,727 @@ +import os +import unittest +from tempfile import TemporaryDirectory +from unittest.mock import MagicMock, patch + +import redis + +from simple_vm_client.forc_connector.playbook.playbook import CONDA, OPTIONAL, Playbook +from simple_vm_client.forc_connector.template.template import Template +from simple_vm_client.ttypes import CondaPackage +from simple_vm_client.util.state_enums import VmTaskStates + +DEFAULT_IP = "192.168.0.4" +DEFAULT_PORT = 9090 +DEFAULT_RESEARCH_ENVIRONMENT_TEMPLATE = "vscode" +DEFAULT_RESEARCH_ENVIRONMENT_VERSION = "v3" +DEFAULT_CONDA_PACKAGES = [ + CondaPackage(name="conda1", version="1.0.0"), + CondaPackage(name="conda2", version="2.0.0"), +] +DEFAULT_APT_PACKAGES = ["curl", "mosh"] +DEFAULT_PRIVATE_KEY = "a04f5f781e4b492d812c1dd3c7cb951f" +DEFAULT_PUBLIC_KEY = "public_key" +DEFAULT_CLOUD_SITE = "Bielefeld" +DEFAULT_BASE_URL = "https://localhost.base_url" +DEFAULT_POOL = MagicMock(spec=redis.ConnectionPool) + + +class TestPlaybook(unittest.TestCase): + def init_playbook(self): + with patch.object(Playbook, "__init__", lambda x, y, z: None): + playbook = Playbook(None, None) + playbook.vars_files = [] + playbook.tasks = [] + playbook.playbooks_dir = Template.get_playbook_dir() + playbook.returncode: int = -1 + playbook.stdout: str = "" + playbook.stderr: str = "" + playbook.conda_packages = [] + playbook.apt_packages = [] + playbook.always_tasks = [] + playbook.research_environment_template = None + playbook.cloud_site = DEFAULT_CLOUD_SITE + playbook.playbook_exec_name: str = "generic_playbook.yml" + + playbook.directory = TemporaryDirectory(dir=f"{playbook.playbooks_dir}") + return playbook + + @patch("simple_vm_client.forc_connector.playbook.playbook.TemporaryDirectory") + @patch("simple_vm_client.forc_connector.playbook.playbook.redis.Redis") + def test_cleanup(self, mock_redis, mock_temporary_directory): + # Arrange + openstack_id = "your_openstack_id" + mock_temporary_directory_instance = MagicMock() + mock_temporary_directory.return_value = mock_temporary_directory_instance + mock_redis_instance = MagicMock(spec=redis.StrictRedis) + mock_redis_instance.delete.return_value = None + mock_redis.return_value = mock_redis_instance + + instance = self.init_playbook() + instance.redis = mock_redis_instance + instance.directory = mock_temporary_directory_instance + + # Act + instance.cleanup(openstack_id) + + # Assert + mock_temporary_directory_instance.cleanup.assert_called_once() + mock_redis_instance.delete.assert_called_once_with(openstack_id) + + @patch("simple_vm_client.forc_connector.playbook.playbook.NamedTemporaryFile") + @patch("simple_vm_client.forc_connector.playbook.playbook.NamedTemporaryFile") + def test_get_logs(self, mock_log_file_stdout, mock_log_file_stderr): + # Arrange + instance = self.init_playbook() + + # Configure mock behavior for log files + stdout_content = "This is a sample stdout log." + stderr_content = "This is a sample stderr log." + + # Mocking log files + mock_log_file_stdout_instance = MagicMock() + mock_log_file_stdout_instance.readlines.return_value = ( + stdout_content.splitlines() + ) + mock_log_file_stdout.return_value = mock_log_file_stdout_instance + + mock_log_file_stderr_instance = MagicMock() + mock_log_file_stderr_instance.readlines.return_value = ( + stderr_content.splitlines() + ) + mock_log_file_stderr.return_value = mock_log_file_stderr_instance + instance.stderr = "" + instance.stdout = "" + instance.log_file_stderr = mock_log_file_stderr_instance + instance.log_file_stdout = mock_log_file_stdout_instance + instance.returncode = 0 + + # Act + returncode, stdout, stderr = instance.get_logs() + + # Assert + mock_log_file_stdout_instance.seek.assert_called_with(0, 0) + mock_log_file_stdout_instance.readlines.assert_called_with() + + mock_log_file_stderr_instance.seek.assert_called_with(0, 0) + mock_log_file_stderr_instance.readlines.assert_called_with() + self.assertEqual(returncode, instance.returncode) + self.assertEqual(stdout, stdout_content) + self.assertEqual(stderr, stderr_content) + + @patch("simple_vm_client.forc_connector.playbook.playbook.Playbook.cleanup") + @patch("simple_vm_client.forc_connector.playbook.playbook.Playbook.get_logs") + @patch("simple_vm_client.forc_connector.playbook.playbook.redis.Redis") + @patch("simple_vm_client.forc_connector.playbook.playbook.subprocess.Popen") + def test_stop(self, mock_popen, mock_redis, mock_get_logs, mock_cleanup): + # Arrange + instance = self.init_playbook() + openstack_id = "your_openstack_id" + mock_process = MagicMock() + mock_popen.return_value = mock_process + mock_get_logs.return_value = 0, "Stderr", "Stdout" + instance.redis = mock_redis + instance.directory = MagicMock() + instance.process = mock_process + + # Act + instance.stop(openstack_id) + + # Assert + mock_process.terminate.assert_called_once() + mock_get_logs.assert_called_once() + mock_redis.hset.assert_called_once_with( + name=f"pb_logs_{openstack_id}", + mapping={ + "returncode": mock_get_logs.return_value[0], + "stdout": mock_get_logs.return_value[1], + "stderr": mock_get_logs.return_value[2], + }, + ) + mock_cleanup.assert_called_once_with(openstack_id) + + @patch("simple_vm_client.forc_connector.playbook.playbook.logger") + def test_check_status_in_progress(self, mock_logger): + # Arrange + openstack_id = "your_openstack_id" + + instance = self.init_playbook() + + mock_process = MagicMock() + mock_process.poll.return_value = None + + instance.process = mock_process + + # Act + result = instance.check_status(openstack_id) + + # Assert + mock_logger.info.assert_any_call(f"Check Status Playbook for VM {openstack_id}") + mock_logger.info.assert_any_call(f"Status Playbook for VM {openstack_id}: None") + mock_logger.info.assert_any_call( + f"Playbook for (openstack_id) {openstack_id} still in progress." + ) + self.assertEqual(result, 3) + + @patch("simple_vm_client.forc_connector.playbook.playbook.logger") + def test_check_status_failed(self, mock_logger): + # Arrange + openstack_id = "your_openstack_id" + + instance = self.init_playbook() + mock_process = MagicMock() + mock_process.poll.return_value = 1 + mock_redis_instance = MagicMock(spec=redis.StrictRedis) + + instance.redis = mock_redis_instance + + instance.process = mock_process + + # Act + result = instance.check_status(openstack_id) + + # Assert + + mock_logger.info.assert_any_call(f"Check Status Playbook for VM {openstack_id}") + mock_logger.info.assert_any_call(f"Status Playbook for VM {openstack_id}: 1") + mock_redis_instance.hset.assert_called_once_with( + openstack_id, "status", VmTaskStates.PLAYBOOK_FAILED.value + ) + mock_logger.info.assert_any_call( + f"Playbook for (openstack_id) {openstack_id} has failed." + ) + self.assertEqual(result, 1) + + @patch("simple_vm_client.forc_connector.playbook.playbook.logger") + def test_check_status_success(self, mock_logger): + # Arrange + openstack_id = "your_openstack_id" + + instance = self.init_playbook() + mock_process = MagicMock() + mock_process.poll.return_value = 0 + mock_redis_instance = MagicMock(spec=redis.StrictRedis) + + instance.redis = mock_redis_instance + + instance.process = mock_process + + # Act + result = instance.check_status(openstack_id) + + # Assert + + mock_logger.info.assert_any_call(f"Check Status Playbook for VM {openstack_id}") + mock_logger.info.assert_any_call(f"Status Playbook for VM {openstack_id}: 0") + mock_redis_instance.hset.assert_called_once_with( + openstack_id, "status", VmTaskStates.PLAYBOOK_SUCCESSFUL.value + ) + mock_logger.info.assert_any_call( + f"Playbook for (openstack_id) {openstack_id} is successful." + ) + self.assertEqual(result, 0) + + @patch("simple_vm_client.forc_connector.playbook.playbook.logger") + @patch("simple_vm_client.forc_connector.playbook.playbook.subprocess.Popen") + def test_run_it(self, mock_popen, mock_logger): + # Arrange + playbook = self.init_playbook() + inventory = MagicMock() + directory = MagicMock() + playbook.inventory = inventory + playbook.directory = directory + playbook.log_file_stderr = MagicMock() + playbook.log_file_stdout = MagicMock() + + playbook.inventory.name = "inventory_name" + playbook.directory.name = "directory_name" + playbook.playbook_exec_name = "playbook_exec_name" + mock_process = MagicMock() + mock_popen.return_value = mock_process + + # Act + playbook.run_it() + + # Assert + mock_logger.info.assert_called_with( + f"Run Playbook for {playbook.playbook_exec_name} - " + f"[['/usr/local/bin/ansible-playbook', '-v', '-i', 'inventory_name', 'directory_name/playbook_exec_name']]" + ) + mock_popen.assert_called_once_with( + [ + "/usr/local/bin/ansible-playbook", + "-v", + "-i", + "inventory_name", + "directory_name/playbook_exec_name", + ], + stdout=playbook.log_file_stdout, + stderr=playbook.log_file_stderr, + universal_newlines=True, + ) + self.assertEqual(playbook.process, mock_process) + + def test_add_always_tasks_only(self): + # Arrange + instance = self.init_playbook() + playbook_name = "example_playbook" + instance.always_tasks = [] + + # Act + instance.add_always_tasks_only(playbook_name) + + # Assert + expected_task = { + "name": f"Running {playbook_name} tasks", + "import_tasks": f"{playbook_name}.yml", + } + self.assertIn(expected_task, instance.always_tasks) + + def test_add_tasks_only(self): + # Arrange + instance = self.init_playbook() + playbook_name = "example_playbook" + instance.tasks = [] + + # Act + instance.add_tasks_only(playbook_name) + + # Assert + expected_task = { + "name": f"Running {playbook_name} tasks", + "import_tasks": f"{playbook_name}.yml", + } + self.assertIn(expected_task, instance.tasks) + + def test_add_to_playbook_always_lists(self): + # Arrange + instance = self.init_playbook() + playbook_name = "example_playbook" + + instance.vars_files = [] + instance.always_tasks = [] + + # Act + instance.add_to_playbook_always_lists(playbook_name) + + # Assert + expected_vars_file = f"{playbook_name}_vars_file.yml" + expected_always_task = { + "name": f"Running {playbook_name} tasks", + "import_tasks": f"{playbook_name}.yml", + } + self.assertIn(expected_vars_file, instance.vars_files) + self.assertIn(expected_always_task, instance.always_tasks) + + @patch("simple_vm_client.forc_connector.playbook.playbook.logger") + def test_add_to_playbook_lists(self, mock_logger): + # Arrange + instance = self.init_playbook() + playbook_name_local = "example_local_playbook" + playbook_name = "example_playbook" + instance.vars_files = [] + instance.tasks = [] + + # Act + instance.add_to_playbook_lists(playbook_name_local, playbook_name) + + # Assert + expected_vars_file = f"{playbook_name}_vars_file.yml" + expected_task = { + "name": f"Running {playbook_name_local} tasks", + "import_tasks": f"{playbook_name_local}.yml", + } + mock_logger.info.assert_called_once_with( + "Added playbook: " + + playbook_name_local + + ".yml" + + ", vars file: " + + playbook_name + + "_vars_file.yml" + ) + self.assertIn(expected_vars_file, instance.vars_files) + self.assertIn(expected_task, instance.tasks) + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + @patch("simple_vm_client.forc_connector.playbook.playbook.open") + @patch("simple_vm_client.forc_connector.playbook.playbook.os.path.isfile") + def test_copy_and_init_conda_packages(self, mock_isfile, mock_open, mock_copytree): + # Arrange + mock_yaml_exec = MagicMock() + instance = self.init_playbook() + instance.yaml_exec = mock_yaml_exec + instance.conda_packages = DEFAULT_CONDA_PACKAGES + instance.add_to_playbook_lists = MagicMock() + instance.add_tasks_only = MagicMock() + + mock_tempdir = MagicMock() + mock_tempdir.name = "/tmp/test_temp_dir" + instance.playbooks_dir = Template.get_playbook_dir() + + instance.directory = mock_tempdir + instance.cloud_site = "your_cloud_site" + + # Set up mock for os.path.isfile + mock_isfile.return_value = True + + # Act + instance.copy_and_init_conda_packages() + + # Assert + mock_copytree.assert_called_once_with( + f"{instance.playbooks_dir}/{CONDA}", mock_tempdir.name, dirs_exist_ok=True + ) + + mock_open.assert_any_call( + f"{mock_tempdir.name}/{CONDA}_vars_file.yml", mode="r" + ) + mock_open.assert_any_call( + f"{mock_tempdir.name}/{CONDA}_vars_file.yml", mode="w" + ) + + mock_yaml_exec.load.assert_called_once() + + mock_yaml_exec.dump.assert_called_once() + + instance.add_to_playbook_lists.assert_called_once_with( + CONDA + "-" + instance.cloud_site, CONDA + ) + + # Check that add_tasks_only is not called + instance.add_tasks_only.assert_not_called() + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + def test_copy_and_init_conda_packages_no_conda_packages(self, mock_copytree): + playbook = self.init_playbook() + playbook.copy_and_init_conda_packages() + mock_copytree.assert_not_called() + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + @patch("simple_vm_client.forc_connector.playbook.playbook.open") + @patch("simple_vm_client.forc_connector.playbook.playbook.os.path.isfile") + @patch("simple_vm_client.forc_connector.playbook.playbook.logger.exception") + def test_copy_and_init_conda_packages_error( + self, mock_logger_exception, mock_is_file, mock_open, mock_copytree + ): + # Arrange + mock_yaml_exec = MagicMock() + + mock_is_file.return_value = True + instance = self.init_playbook() + instance.yaml_exec = mock_yaml_exec + instance.conda_packages = DEFAULT_CONDA_PACKAGES + instance.add_to_playbook_lists = MagicMock() + instance.add_tasks_only = MagicMock() + + mock_tempdir = MagicMock() + mock_tempdir.name = "/tmp/test_temp_dir" + instance.playbooks_dir = Template.get_playbook_dir() + + instance.directory = mock_tempdir + instance.cloud_site = "your_cloud_site" + + # Set up mock for os.path.isfile + mock_open.side_effect = IOError("Error reading file") + + # Act and Assert + instance.copy_and_init_conda_packages() + playbook_var_yml = f"/{CONDA}_vars_file.yml" + + mock_logger_exception.assert_called_once_with( + f"Could not open - {instance.directory.name + playbook_var_yml}" + ) + + instance.add_to_playbook_lists.assert_not_called() + + instance.add_tasks_only.assert_called_once_with( + CONDA + "-" + instance.cloud_site + ) + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copy") + @patch( + "simple_vm_client.forc_connector.playbook.playbook.os.path.isfile", + return_value=True, + ) + @patch("builtins.open", new_callable=unittest.mock.mock_open) + @patch("simple_vm_client.forc_connector.playbook.playbook.logger.info") + def test_copy_and_init_apt_packages( + self, mock_logger_info, mock_open, mock_isfile, mock_copy + ): + # Arrange + instance = self.init_playbook() # Initialize your class with appropriate values + mock_yaml_exec = MagicMock() + instance.yaml_exec = mock_yaml_exec + + # Mock apt_packages and other necessary attributes + instance.apt_packages = DEFAULT_APT_PACKAGES + + # Act + instance.copy_and_init_apt_packages() + + # Assert + # Add your assertions based on the expected behavior of the method + + # Verify that shutil.copy is called with the correct arguments + playbook_yml = os.path.join( + instance.playbooks_dir, OPTIONAL + "-" + instance.cloud_site + ".yml" + ) + mock_copy.assert_any_call(playbook_yml, instance.directory.name) + playbook_vars_yml = os.path.join( + instance.playbooks_dir, OPTIONAL + "_vars_file.yml" + ) + + mock_copy.assert_any_call(playbook_vars_yml, instance.directory.name) + + target_playbook_vars = os.path.join( + instance.directory.name, OPTIONAL + "_vars_file.yml" + ) + + # Verify that open is called with the correct arguments + mock_open.assert_any_call(target_playbook_vars, mode="r") + mock_logger_info.assert_called_once_with( + "Added playbook: " + + OPTIONAL + + "-" + + instance.cloud_site + + ".yml" + + ", vars file: " + + OPTIONAL + + "_vars_file.yml" + ) + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + def test_copy_and_init_apt_packages_no_apt_packages(self, mock_copytree): + playbook = self.init_playbook() + playbook.copy_and_init_apt_packages() + mock_copytree.assert_not_called() + + @patch( + "simple_vm_client.forc_connector.playbook.playbook.shutil.copy", + side_effect=IOError("Error copying file"), + ) + @patch("simple_vm_client.forc_connector.playbook.playbook.logger.exception") + def test_copy_and_init_apt_packages_raises_io_error( + self, mock_logger_exception, mock_copy + ): + # Arrange + obj = self.init_playbook() + obj.apt_packages = DEFAULT_APT_PACKAGES # Set your desired apt_packages + + # Act and Assert + obj.copy_and_init_apt_packages() + mock_logger_exception.assert_called_once_with("Could not copy apt packages") + + @patch( + "simple_vm_client.forc_connector.playbook.playbook.open", + side_effect=IOError("Error copying file"), + ) + @patch("simple_vm_client.forc_connector.playbook.playbook.logger.exception") + def test_copy_and_init_apt_packages_raises_open_error( + self, mock_logger_exception, mock_copy + ): + # Arrange + obj = self.init_playbook() + obj.apt_packages = DEFAULT_APT_PACKAGES # Set your desired apt_packages + obj.add_tasks_only = MagicMock() + + # Act and Assert + obj.copy_and_init_apt_packages() + mock_logger_exception.assert_called_once_with("Could not copy apt packages") + obj.add_tasks_only.assert_called_once_with(OPTIONAL) + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + @patch( + "simple_vm_client.forc_connector.playbook.playbook.os.path.isfile", + return_value=True, + ) # Mocking os.path.isfile to return True + @patch("builtins.open", new_callable=unittest.mock.mock_open) + @patch("simple_vm_client.forc_connector.playbook.playbook.logger.info") + def test_copy_and_init_research_environment( + self, mock_logger_info, mock_open, mock_isfile, mock_copytree + ): + # Arrange + instance = self.init_playbook() # Create an instance of YourClass + mock_yaml_exec = MagicMock() + instance.yaml_exec = mock_yaml_exec + + # Mock data and methods + instance.research_environment_template = "template_name" + instance.cloud_site = "cloud_site" + instance.research_environment_template_version = "template_version" + instance.create_only_backend = True + instance.base_url = "base_url" + + # Act + instance.copy_and_init_research_environment() + + # Assert + mock_copytree.assert_called_once_with( + f"{instance.playbooks_dir}/template_name", + instance.directory.name, + dirs_exist_ok=True, + ) + mock_isfile.assert_any_call( + f"{instance.directory.name}/template_name-cloud_site.yml" + ) + mock_open.assert_any_call( + f"{instance.directory.name}/template_name_vars_file.yml", mode="r" + ) + mock_open.assert_any_call( + f"{instance.directory.name}/template_name_vars_file.yml", mode="w" + ) + mock_logger_info.assert_called_once_with( + f"Added playbook: {instance.research_environment_template}-{instance.cloud_site}.yml," + f" vars file: {instance.research_environment_template}_vars_file.yml" + ) + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + def test_copy_and_init_research_environment_no_template(self, mock_copytree): + playbook = self.init_playbook() + playbook.copy_and_init_research_environment() + mock_copytree.assert_not_called() + + @patch( + "simple_vm_client.forc_connector.playbook.playbook.open", + side_effect=IOError("Error copying file"), + ) + @patch("simple_vm_client.forc_connector.playbook.playbook.logger.exception") + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + def test_copy_and_init_research_environment_error( + self, mock_copy, mock_logger_exception, mock_open + ): + # Arrange + obj = self.init_playbook() + obj.research_environment_template = "template_name" + obj.add_tasks_only = MagicMock() + + # Act and Assert + obj.copy_and_init_research_environment() + mock_logger_exception.assert_called_once_with( + "Could not copy research environment template data" + ) + obj.add_tasks_only.assert_called_once_with(obj.research_environment_template) + + @patch("shutil.copytree") + @patch( + "os.path.isfile", return_value=False + ) # Mocking os.path.isfile to return False + @patch("shutil.copy") + @patch("builtins.open", new_callable=unittest.mock.mock_open) + def test_copy_playbooks_and_init( + self, mock_open, mock_copy, mock_copytree, mock_isfile + ): + playbook = self.init_playbook() + mock_yaml_exec = MagicMock() + playbook.yaml_exec = mock_yaml_exec + playbook.copy_and_init_conda_packages = MagicMock() + playbook.copy_and_init_apt_packages = MagicMock() + playbook.copy_and_init_research_environment = MagicMock() + playbook.copy_and_init_change_keys = MagicMock() + playbook.copy_playbooks_and_init(public_key=DEFAULT_PUBLIC_KEY) + + playbook.copy_and_init_conda_packages.assert_called_once_with() + playbook.copy_and_init_apt_packages.assert_called_once_with() + playbook.copy_and_init_research_environment.assert_called_once_with() + playbook.copy_and_init_change_keys.assert_called_once_with( + public_key=DEFAULT_PUBLIC_KEY + ) + + patch("shutil.copy") + + @patch( + "os.path.isfile", return_value=True + ) # Mocking os.path.isfile to return False + @patch("builtins.open", new_callable=unittest.mock.mock_open) + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copy") + def test_copy_and_init_change_keys(self, mock_copy, mock_open, mock_isfile): + playbook = self.init_playbook() + mock_yaml_exec = MagicMock() + mock_yaml_exec.load.return_value = {"change_key_vars": {"key": None}} + playbook.yaml_exec = mock_yaml_exec + playbook.add_to_playbook_always_lists = MagicMock() + key_file_mock = MagicMock() + + mock_open.side_effect = [key_file_mock, key_file_mock] + + # Act + playbook.copy_and_init_change_keys(public_key=DEFAULT_PUBLIC_KEY) + + # Assert + expected_copy_calls = [ + unittest.mock.call( + "/path/to/playbooks/change_key.yml", "/path/to/directory" + ), + unittest.mock.call( + "/path/to/playbooks/change_key_vars_file.yml", "/path/to/directory" + ), + ] + mock_copy(expected_copy_calls, any_order=True) + + key_file = playbook.directory.name + "/change_key_vars_file.yml" + + data_ck = {"change_key_vars": {"key": None}} + data_ck["change_key_vars"]["key"] = DEFAULT_PUBLIC_KEY.strip('"') + + mock_open.assert_any_call(key_file, mode="r"), + mock_open.assert_any_call(key_file, mode="w") + mock_yaml_exec.load.assert_called_once_with(key_file_mock.__enter__()) + mock_yaml_exec.dump.assert_called_once_with(data_ck, key_file_mock.__enter__()) + playbook.add_to_playbook_always_lists.assert_called_once_with("change_key") + + @patch("simple_vm_client.forc_connector.playbook.playbook.shutil.copytree") + @patch( + "os.path.isfile", return_value=True + ) # Mocking os.path.isfile to return False + @patch("shutil.copy") + @patch("builtins.open", new_callable=unittest.mock.mock_open) + @patch( + "simple_vm_client.forc_connector.playbook.playbook.Playbook.copy_playbooks_and_init" + ) + @patch("simple_vm_client.forc_connector.playbook.playbook.redis.Redis") + def test_init( + self, + mock_redis, + mock_copy_playbooks_and_init, + mock_open, + mock_copy, + mock_isfile, + mock_copytree, + ): + # Act + instance = Playbook( + ip=DEFAULT_IP, + port=DEFAULT_PORT, + research_environment_template=DEFAULT_RESEARCH_ENVIRONMENT_TEMPLATE, + research_environment_template_version=DEFAULT_RESEARCH_ENVIRONMENT_VERSION, + create_only_backend=False, + conda_packages=DEFAULT_CONDA_PACKAGES, + apt_packages=DEFAULT_APT_PACKAGES, + osi_private_key=DEFAULT_PRIVATE_KEY, + public_key=DEFAULT_PUBLIC_KEY, + pool=DEFAULT_POOL, + cloud_site=DEFAULT_CLOUD_SITE, + base_url=DEFAULT_BASE_URL, + ) + + # Assert + self.assertEqual(instance.cloud_site, DEFAULT_CLOUD_SITE) + self.assertIsNotNone(instance.redis) + self.assertIsNotNone(instance.yaml_exec) + self.assertEqual(instance.conda_packages, DEFAULT_CONDA_PACKAGES) + self.assertEqual(instance.apt_packages, DEFAULT_APT_PACKAGES) + self.assertIsNone(instance.process) + self.assertEqual( + instance.research_environment_template_version, + DEFAULT_RESEARCH_ENVIRONMENT_VERSION, + ) + self.assertEqual(instance.create_only_backend, False) + self.assertEqual(instance.returncode, -1) + self.assertEqual(instance.stdout, "") + self.assertEqual(instance.stderr, "") + self.assertEqual( + instance.research_environment_template, + DEFAULT_RESEARCH_ENVIRONMENT_TEMPLATE, + ) + self.assertEqual(instance.base_url, DEFAULT_BASE_URL) + + mock_copy_playbooks_and_init.assert_called_once() diff --git a/simple_vm_client/forc_connector/template/__init__.py b/simple_vm_client/forc_connector/template/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/simple_vm_client/forc_connector/template/template.py b/simple_vm_client/forc_connector/template/template.py index 32d3adc6..2fb191f1 100644 --- a/simple_vm_client/forc_connector/template/template.py +++ b/simple_vm_client/forc_connector/template/template.py @@ -7,8 +7,9 @@ import requests import yaml -from ttypes import ResearchEnvironmentTemplate -from util.logger import setup_custom_logger + +from simple_vm_client.ttypes import ResearchEnvironmentTemplate +from simple_vm_client.util.logger import setup_custom_logger # from resenv.backend.Backend import Backend @@ -25,38 +26,57 @@ DIRECTION = "direction" PROTOCOL = "protocol" INFORMATION_FOR_DISPLAY = "information_for_display" -NO_TEMPLATE_NAMES = ["packer"] +NO_TEMPLATE_NAMES = ["packer", "optional", ".github", "cluster", "conda"] NEEDS_FORC_SUPPORT = "needs_forc_support" MIN_RAM = "min_ram" MIN_CORES = "min_cores" +FILENAME = "resenv_repo" class ResearchEnvironmentMetadata: def __init__( self, - name: str, + template_name: str, port: str, - security_group_name: str, - security_group_description: str, - security_group_ssh: bool, + securitygroup_name: str, + securitygroup_description: str, + securitygroup_ssh: bool, direction: str, protocol: str, + description: str, + logo_url: str, + info_url: str, information_for_display: str, + title: str, + community_driven: bool = False, + wiki_link: str = "", needs_forc_support: bool = True, min_ram: int = 0, min_cores: int = 0, + is_maintained: bool = True, + forc_versions: list[str] = [], + incompatible_versions: list[str] = [], ): - self.name = name + self.template_name = template_name self.port = port - self.security_group_name = security_group_name - self.security_group_description = security_group_description - self.security_group_ssh = security_group_ssh + self.wiki_link = wiki_link + self.description = description + self.title = title + self.community_driven = community_driven + self.logo_url = logo_url + self.info_url = info_url + self.securitygroup_name = securitygroup_name + self.securitygroup_description = securitygroup_description + self.securitygroup_ssh = securitygroup_ssh self.direction = direction self.protocol = protocol self.information_for_display = information_for_display self.needs_forc_support = needs_forc_support self.min_ram = min_ram self.min_cores = min_cores + self.is_maintained = is_maintained + self.forc_versions = forc_versions + self.incompatible_versions = incompatible_versions class Template(object): @@ -78,21 +98,17 @@ def __init__(self, github_playbook_repo: str, forc_url: str, forc_api_key: str): def loaded_research_env_metadata(self) -> dict[str, ResearchEnvironmentMetadata]: return self._loaded_resenv_metadata - def update_playbooks(self) -> None: - if self.GITHUB_PLAYBOOKS_REPO is None: - logger.info( - "Github playbooks repo url is None. Aborting download of playbooks." - ) - return + def _download_and_extract_playbooks(self) -> None: logger.info(f"STARTED update of playbooks from - {self.GITHUB_PLAYBOOKS_REPO}") r = requests.get(self.GITHUB_PLAYBOOKS_REPO) - filename = "resenv_repo" - with open(filename, "wb") as output_file: + with open(FILENAME, "wb") as output_file: output_file.write(r.content) logger.info("Downloading Completed") - with zipfile.ZipFile(filename, "r") as zip_ref: + + with zipfile.ZipFile(FILENAME, "r") as zip_ref: zip_ref.extractall(Template.get_playbook_dir()) + def _copy_resenvs_templates(self) -> None: resenvs_unziped_dir = next( filter( lambda f: os.path.isdir(f) and "resenvs" in f, @@ -103,80 +119,96 @@ def update_playbooks(self) -> None: resenvs_unziped_dir, Template.get_playbook_dir(), dirs_exist_ok=True ) shutil.rmtree(resenvs_unziped_dir, ignore_errors=True) + + def _update_loaded_templates(self) -> None: self._all_templates = [ name for name in os.listdir(Template.get_playbook_dir()) if name not in NO_TEMPLATE_NAMES and os.path.isdir(os.path.join(Template.get_playbook_dir(), name)) ] - logger.info(f"Loaded Template Names: {self._all_templates}") - self.install_ansible_galaxy_requirements() - templates_metadata: list[dict[str, str]] = self.load_resenv_metadata() + def _load_and_update_resenv_metadata(self) -> None: + templates_metadata = self._load_resenv_metadata() + for template_metadata in templates_metadata: try: - if template_metadata.get(NEEDS_FORC_SUPPORT, False): - - metadata = ResearchEnvironmentMetadata( - name=template_metadata[TEMPLATE_NAME], - port=template_metadata[PORT], - security_group_name=template_metadata[SECURITYGROUP_NAME], - security_group_description=template_metadata[ - SECURITYGROUP_DESCRIPTION - ], - security_group_ssh=bool(template_metadata[SECURITYGROUP_SSH]), - direction=template_metadata[DIRECTION], - protocol=template_metadata[PROTOCOL], - information_for_display=template_metadata[ - INFORMATION_FOR_DISPLAY - ], - needs_forc_support=True, - min_cores=template_metadata.get(MIN_CORES, 0), - min_ram=template_metadata.get(MIN_RAM, 0), - ) - self.update_forc_allowed(template_metadata) - if metadata.name not in list(self._loaded_resenv_metadata.keys()): - self._loaded_resenv_metadata[metadata.name] = metadata - else: - if self._loaded_resenv_metadata[metadata.name] != metadata: - self._loaded_resenv_metadata[metadata.name] = metadata - + self._process_template_metadata(template_metadata) except Exception as e: logger.exception( - "Failed to parse Metadata yml: " - + str(template_metadata) - + "\n" - + str(e) + f"Failed to parse Metadata yml: {template_metadata}\n{e}" ) + + def _process_template_metadata( + self, template_metadata: ResearchEnvironmentMetadata + ) -> None: + if template_metadata.needs_forc_support: + self._update_forc_allowed(template_metadata) + + if template_metadata.template_name not in self._loaded_resenv_metadata: + self._loaded_resenv_metadata[ + template_metadata.template_name + ] = template_metadata + elif ( + self._loaded_resenv_metadata[template_metadata.template_name] + != template_metadata + ): + self._loaded_resenv_metadata[ + template_metadata.template_name + ] = template_metadata + + def update_playbooks(self) -> None: + if self.GITHUB_PLAYBOOKS_REPO is None: + logger.error( + "Github playbooks repo URL is None. Aborting download of playbooks." + ) + return + + self._download_and_extract_playbooks() + + self._copy_resenvs_templates() + + self._update_loaded_templates() + + logger.info(f"Loaded Template Names: {self._all_templates}") + + self._install_ansible_galaxy_requirements() + + self._load_and_update_resenv_metadata() + logger.info(f"Allowed Forc {self._forc_allowed}") - def cross_check_forc_image(self, tags: list[str]) -> bool: - get_url = self.TEMPLATES_URL + def _get_forc_templates(self) -> list[dict]: try: response = requests.get( - get_url, + self.TEMPLATES_URL, timeout=(30, 30), - headers={"X-API-KEY": FORC_API_KEY}, + headers={"X-API-KEY": self.FORC_API_KEY}, verify=True, ) - if response.status_code != 200: - return True - else: - templates = response.json() + response.raise_for_status() # Raise HTTPError for bad responses + return response.json() + except requests.RequestException as e: + logger.exception(f"Error while fetching FORC templates: {e}") + return [] + + def cross_check_forc_image(self, tags: list[str]) -> bool: + try: + templates = self._get_forc_templates() except Exception: logger.exception("Could not get templates from FORC.") templates = [] - cross_tags = list(set(self._all_templates).intersection(tags)) + + cross_tags = set(self._all_templates).intersection(tags) + for template_dict in templates: - if ( - template_dict["name"] in self._forc_allowed - and template_dict["name"] in cross_tags - ): - if ( - template_dict["version"] - in self._forc_allowed[template_dict["name"]] - ): + template_name = template_dict["name"] + + if template_name in self._forc_allowed and template_name in cross_tags: + template_version = template_dict["version"] + if template_version in self._forc_allowed[template_name]: return True + return False @staticmethod @@ -187,51 +219,58 @@ def get_playbook_dir() -> str: dir_path = f"{os.path.dirname(os.path.realpath(__file__))}/plays/" return dir_path - def add_forc_allowed_template(self, metadata: dict) -> None: - if metadata.get("needs_forc_support", False): - logger.info(f"Add {metadata} - to allowed templates") + def _add_forc_allowed_template(self, metadata: ResearchEnvironmentMetadata) -> None: + if metadata.needs_forc_support: + logger.info(f"Add {metadata.template_name} - to allowed templates") template = ResearchEnvironmentTemplate( - template_name=metadata["template_name"], - title=metadata["title"], - description=metadata["description"], - logo_url=metadata["logo_url"], - info_url=metadata["info_url"], - port=int(metadata["port"]), - incompatible_versions=metadata["incompatible_versions"], - is_maintained=metadata["is_maintained"], - information_for_display=metadata["information_for_display"], - min_ram=metadata.get("min_ram", 0), - min_cores=metadata.get("min_cores", 0), + template_name=metadata.template_name, + title=metadata.title, + description=metadata.description, + logo_url=metadata.logo_url, + info_url=metadata.info_url, + port=int(metadata.port), + incompatible_versions=metadata.incompatible_versions, + is_maintained=metadata.is_maintained, + information_for_display=metadata.information_for_display, + min_ram=metadata.min_ram, + min_cores=metadata.min_cores, ) self._allowed_forc_templates.append(template) - def load_resenv_metadata(self) -> list[dict[str, str]]: - templates_metada = [] + def _load_resenv_metadata(self) -> list[ResearchEnvironmentMetadata]: + templates_metadata = [] + for template in self._all_templates: - if template not in ["optional", "packer", ".github", "cluster"]: + if template not in NO_TEMPLATE_NAMES: template_metadata_name = f"{template}_metadata.yml" try: - with open( - f"{Template.get_playbook_dir()}{template}/{template}_metadata.yml" - ) as template_metadata: - try: - loaded_metadata = yaml.load( - template_metadata, Loader=yaml.FullLoader - ) - - templates_metada.append(loaded_metadata) - self.add_forc_allowed_template(metadata=loaded_metadata) - - except Exception as e: - logger.exception( - "Failed to parse Metadata yml: " - + template_metadata_name - + "\n" - + str(e) - ) + metadata_path = os.path.join( + Template.get_playbook_dir(), template, template_metadata_name + ) + + loaded_metadata = self._load_yaml(metadata_path) + + research_environment_metadata: ResearchEnvironmentMetadata = ( + ResearchEnvironmentMetadata(**loaded_metadata) + ) + + self._add_forc_allowed_template(research_environment_metadata) + templates_metadata.append(research_environment_metadata) except Exception as e: - logger.exception(f"No Metadata File found for {template} - {e}") - return templates_metada + self._handle_metadata_exception(template_metadata_name, template, e) + + return templates_metadata + + def _load_yaml(self, file_path: str) -> dict: + with open(file_path) as template_metadata: + return yaml.load(template_metadata, Loader=yaml.FullLoader) or {} + + def _handle_metadata_exception( + self, template_metadata_name: str, template: str, exception: Exception + ) -> None: + logger.exception( + f"Failed to load Metadata yml: {template_metadata_name}\n{str(exception)}" + ) def get_template_version_for(self, template: str) -> str: template_versions: list[str] = self._forc_allowed.get(template) # type: ignore @@ -239,7 +278,7 @@ def get_template_version_for(self, template: str) -> str: return template_versions[0] return "" - def install_ansible_galaxy_requirements(self): + def _install_ansible_galaxy_requirements(self): logger.info("Installing Ansible galaxy requirements..") stream = os.popen( f"ansible-galaxy install -r {Template.get_playbook_dir()}/packer/requirements.yml" @@ -254,25 +293,41 @@ def get_allowed_templates(self) -> list[ResearchEnvironmentTemplate]: return self._allowed_forc_templates - def update_forc_allowed(self, template_metadata: dict[str, str]) -> None: - if template_metadata["needs_forc_support"]: - name = template_metadata[TEMPLATE_NAME] - allowed_versions = [] - for forc_version in template_metadata[FORC_VERSIONS]: - get_url = f"{self.TEMPLATES_URL}/{name}/{forc_version}" - logger.info(f"Check Forc Allowed for - {get_url}") - try: - response = requests.get( - get_url, - timeout=(30, 30), - headers={"X-API-KEY": self.FORC_API_KEY}, - verify=True, - ) - logger.info(response.content) - if response.status_code == 200: - allowed_versions.append(forc_version) - except requests.Timeout as e: - logger.info(f"checking template/version timed out. {e}") - allowed_versions.sort(key=LooseVersion) - allowed_versions.reverse() - self._forc_allowed[name] = allowed_versions + def _get_forc_template_version( + self, template_name: str, forc_version: str + ) -> requests.Response: + get_url = f"{self.TEMPLATES_URL}/{template_name}/{forc_version}" + logger.info(f"Get Forc Template Version - {get_url}") + return requests.get( + get_url, + timeout=(30, 30), + headers={"X-API-KEY": self.FORC_API_KEY}, + verify=True, + ) + + def _update_forc_allowed_versions( + self, name: str, allowed_versions: list[str] + ) -> None: + allowed_versions.sort(key=LooseVersion, reverse=True) + self._forc_allowed[name] = allowed_versions + + def _update_forc_allowed( + self, template_metadata: ResearchEnvironmentMetadata + ) -> None: + if not template_metadata.needs_forc_support: + return + + name = template_metadata.template_name + allowed_versions = [] + + for forc_version in template_metadata.forc_versions: + try: + response = self._get_forc_template_version( + template_name=name, forc_version=forc_version + ) + if response.status_code == 200: + allowed_versions.append(forc_version) + except requests.Timeout as e: + logger.error(f"Checking template/version timed out. {e}") + + self._update_forc_allowed_versions(name, allowed_versions) diff --git a/simple_vm_client/forc_connector/template/test_templates.py b/simple_vm_client/forc_connector/template/test_templates.py new file mode 100644 index 00000000..1fc2dca7 --- /dev/null +++ b/simple_vm_client/forc_connector/template/test_templates.py @@ -0,0 +1,891 @@ +import copy +import os +import unittest +from distutils.version import LooseVersion +from unittest.mock import MagicMock, Mock, call, mock_open, patch + +import pytest +import requests +import yaml + +from simple_vm_client.forc_connector.template.template import ( + CONDA, + FILENAME, + ResearchEnvironmentMetadata, + Template, +) +from simple_vm_client.ttypes import ResearchEnvironmentTemplate + +METADATA_EXAMPLE = ResearchEnvironmentMetadata( + template_name="example_template", + port="8080", + wiki_link="https://example.com/wiki", + description="Example template for testing", + title="Example Template", + community_driven=True, + logo_url="https://example.com/logo.png", + info_url="https://example.com/info", + securitygroup_name="example_group", + securitygroup_description="Example security group", + securitygroup_ssh=True, + direction="inbound", + protocol="tcp", + information_for_display="Some information", + needs_forc_support=True, + min_ram=2, + min_cores=1, + is_maintained=True, + forc_versions=["1.0.0", "2.0.0"], + incompatible_versions=["3.0.0"], +) +MOCK_TEMPLATES = [ + ResearchEnvironmentTemplate( + template_name="template_1", + title="Template 1", + description="TemplateDesc1", + logo_url="https://logo1.de", + info_url="https://info1.de", + port=80, + incompatible_versions=["1.0.0"], + is_maintained=True, + information_for_display="Info1", + min_cores=10, + min_ram=2, + ), + ResearchEnvironmentTemplate( + template_name="template_2", + title="Template 2", + description="TemplateDesc2", + logo_url="https://logo2.de", + info_url="https://info2.de", + port=8080, + incompatible_versions=["2.0.0"], + is_maintained=False, + information_for_display="Info2", + min_cores=5, + min_ram=4, + ), + ResearchEnvironmentTemplate( + template_name="template_3", + title="Template 3", + description="TemplateDesc3", + logo_url="https://logo3.de", + info_url="https://info3.de", + port=8000, + incompatible_versions=["3.0.0"], + is_maintained=True, + information_for_display="Info3", + min_cores=8, + min_ram=6, + ), + ResearchEnvironmentTemplate( + template_name="template_4", + title="Template 4", + description="TemplateDesc4", + logo_url="https://logo4.de", + info_url="https://info4.de", + port=8088, + incompatible_versions=["4.0.0"], + is_maintained=False, + information_for_display="Info4", + min_cores=12, + min_ram=8, + ), +] + + +class TestTemplate(unittest.TestCase): + GITHUB_REPO_STAGING = ( + "https://github.com/deNBI/resenvs/archive/refs/heads/staging.zip" + ) + FORC_URL = "https://FAKE_URL.de" + + def get_metadata_example(self): + return copy.deepcopy(METADATA_EXAMPLE) + + def init_template( + self, github_playbook_repo=None, forc_url="", forc_api_key="1234" + ): + with patch.object(Template, "__init__", lambda x, y, z: None): + template = Template(None, None) + template.FORC_URL = forc_url + template.GITHUB_PLAYBOOKS_REPO = github_playbook_repo + template.FORC_API_KEY = forc_api_key + template.TEMPLATES_URL = f"{template.FORC_URL}templates" + template.BACKENDS_URL = f"{template.FORC_URL}backends" + template.BACKENDS_BY_OWNER_URL = f"{template.BACKENDS_URL}/byOwner" + template.BACKENDS_BY_TEMPLATE_URL = f"{template.BACKENDS_URL}/byTemplate" + template._forc_allowed: dict[str, list[str]] = {} + template._all_templates = [CONDA] + template._loaded_resenv_metadata: dict[ + str, ResearchEnvironmentMetadata + ] = {} + template._allowed_forc_templates: list[ResearchEnvironmentTemplate] = [] + + return template + + @patch("requests.get") + @patch("zipfile.ZipFile") + @patch("builtins.open", create=True) + @patch("simple_vm_client.forc_connector.template.template.logger.info") + def test_download_and_extract_playbooks( + self, mock_logger_info, mock_open, mock_zipfile, mock_requests + ): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Set up mock responses + mock_response = Mock() + mock_response.content = b"Mock content" + mock_requests.return_value = mock_response + + # Call the method to test + template._download_and_extract_playbooks() + + # Assert that the requests.get method was called with the correct URL + mock_requests.assert_called_once_with(template.GITHUB_PLAYBOOKS_REPO) + + # Assert logging messages + mock_logger_info.assert_any_call( + f"STARTED update of playbooks from - {template.GITHUB_PLAYBOOKS_REPO}" + ) + mock_logger_info.assert_any_call("Downloading Completed") + + # Assert that the open method was called with the correct file name and mode + mock_open.assert_called_once_with(FILENAME, "wb") + + # Assert that the write method was called on the file object + mock_open.return_value.__enter__.return_value.write.assert_called_once_with( + mock_response.content + ) + + # Assert that the zipfile.ZipFile constructor was called with the correct file name and mode + mock_zipfile.assert_called_once_with(FILENAME, "r") + + @patch("glob.glob") + @patch("shutil.copytree") + @patch("shutil.rmtree") + @patch( + "os.path.isdir", return_value=True + ) # Mock os.path.isdir to always return True + def test_copy_resenvs_templates( + self, mock_isdir, mock_rmtree, mock_copytree, mock_glob + ): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Set up mock responses + mock_glob.return_value = ["/path/to/directory/resenvs"] + + def mock_glob_side_effect(pattern): + if pattern == Template.get_playbook_dir() + "*": + return ["/path/to/directory/resenvs"] + else: + return [] + + mock_glob.side_effect = mock_glob_side_effect + + # Call the method to test + template._copy_resenvs_templates() + + # Assert that glob.glob was called with the correct parameters + mock_glob.assert_called_once_with(Template.get_playbook_dir() + "*") + + # Assert that shutil.copytree was called with the correct parameters + mock_copytree.assert_called_once_with( + "/path/to/directory/resenvs", + Template.get_playbook_dir(), + dirs_exist_ok=True, + ) + + # Assert that shutil.rmtree was called with the correct parameters + mock_rmtree.assert_called_once_with( + "/path/to/directory/resenvs", ignore_errors=True + ) + + @patch("os.listdir") + @patch("os.path.isdir") + def test_update_loaded_templates(self, mock_isdir, mock_listdir): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Set up mock responses + mock_listdir.return_value = [ + "template1", + "template2", + "non_template", + "optional", + "packer", + ".github", + "cluster", + ] + mock_isdir.side_effect = ( + lambda path: "non_template" not in path + ) # Mock isdir to return True for templates + + # Call the method to test + template._update_loaded_templates() + + # Assert that os.listdir was called with the correct parameters + mock_listdir.assert_called_once_with(Template.get_playbook_dir()) + + # Assert that os.path.isdir was called for each template + mock_isdir.assert_any_call( + os.path.join(Template.get_playbook_dir(), "template1") + ) + mock_isdir.assert_any_call( + os.path.join(Template.get_playbook_dir(), "template2") + ) + mock_isdir.assert_any_call( + os.path.join(Template.get_playbook_dir(), "non_template") + ) + with pytest.raises(AssertionError): + mock_isdir.assert_called_with( + os.path.join(Template.get_playbook_dir(), "packer") + ) + with pytest.raises(AssertionError): + mock_isdir.assert_called_with( + os.path.join(Template.get_playbook_dir(), ".github") + ) + with pytest.raises(AssertionError): + mock_isdir.assert_called_with( + os.path.join(Template.get_playbook_dir(), "cluster") + ) + with pytest.raises(AssertionError): + mock_isdir.assert_called_with( + os.path.join(Template.get_playbook_dir(), "optional") + ) + + # Assert that the _all_templates attribute is updated correctly + expected_templates = ["template1", "template2"] + self.assertEqual(template._all_templates, expected_templates) + + @patch("simple_vm_client.forc_connector.template.template.logger.error") + def test_update_playbooks_no_github_repo(self, mock_logger_error): + template = self.init_template() + template.update_playbooks() + mock_logger_error.assert_called_once_with( + "Github playbooks repo URL is None. Aborting download of playbooks." + ) + + @patch("simple_vm_client.forc_connector.template.template.os.popen") + @patch("simple_vm_client.forc_connector.template.template.logger.info") + def test_install_ansible_galaxy_requirements(self, mock_logger_info, mock_os_popen): + # Set up mocks + mock_os_popen_instance = MagicMock() + mock_os_popen.return_value = mock_os_popen_instance + mock_os_popen_instance.read.return_value = "Mocked output" + + # Create an instance of the Template class + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Call the method to be tested + template._install_ansible_galaxy_requirements() + + # Assertions + mock_logger_info.assert_any_call("Installing Ansible galaxy requirements..") + mock_os_popen.assert_called_with( + f"ansible-galaxy install -r {Template.get_playbook_dir()}/packer/requirements.yml" + ) + mock_os_popen_instance.read.assert_called_once() + mock_logger_info.assert_any_call("Mocked output") + + def test_get_template_version_for_existing_template(self): + # Mock _forc_allowed with some versions for the template + template_name = "example_template" + expected_version = "1.2.3" + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + template._forc_allowed = {template_name: [expected_version]} + + # Call the method to be tested + result_version = template.get_template_version_for(template_name) + + # Assertion + self.assertEqual(result_version, expected_version) + + def test_get_template_version_for_nonexistent_template(self): + # Mock _forc_allowed without the template + template_name = "nonexistent_template" + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + template._forc_allowed = {} + + # Call the method to be tested + result_version = template.get_template_version_for(template_name) + + # Assertion + self.assertEqual(result_version, "") + + @patch("simple_vm_client.forc_connector.template.template.logger.info") + def test_get_allowed_templates(self, mock_logger_info): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + template._allowed_forc_templates = MOCK_TEMPLATES + + result_templates = template.get_allowed_templates() + + # Assertions + self.assertEqual(result_templates, MOCK_TEMPLATES) + + # Check log output if needed + mock_logger_info.assert_any_call("Allowed templates:") + for template in MOCK_TEMPLATES: + mock_logger_info.assert_any_call(template) + + @patch("simple_vm_client.forc_connector.template.template.requests.get") + @patch("simple_vm_client.forc_connector.template.template.logger.info") + def test_get_forc_template_version(self, mock_logger_info, mock_requests_get): + # Set up the mock response + expected_response = Mock() + mock_requests_get.return_value = expected_response + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Call the method to be tested + result_response = template._get_forc_template_version( + template_name="mock_name", forc_version="mock_version" + ) + + # Assertions + self.assertEqual(result_response, expected_response) + + # Additional assertions based on your specific requirements + get_url = f"{template.TEMPLATES_URL}/mock_name/mock_version" + mock_logger_info.assert_called_once_with( + f"Get Forc Template Version - {get_url}" + ) + + mock_requests_get.assert_called_once_with( + get_url, + timeout=(30, 30), + headers={"X-API-KEY": template.FORC_API_KEY}, + verify=True, + ) + + def test_update_forc_allowed_versions(self): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Call the method to be tested + template._update_forc_allowed_versions( + name="mock_name", allowed_versions=["1.0.0", "2.0.0", "1.5.0"] + ) + + # Assertions + expected_forc_allowed = {"mock_name": ["2.0.0", "1.5.0", "1.0.0"]} + self.assertEqual(template._forc_allowed, expected_forc_allowed) + + @patch( + "simple_vm_client.forc_connector.template.template.Template._get_forc_template_version" + ) + def test_update_forc_allowed(self, mock_get_forc_template_version): + # Set up the mock for _get_forc_template_version + mock_get_forc_template_version.return_value.status_code = 200 + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Call the method to be tested + metadata_example = self.get_metadata_example() + template._update_forc_allowed(metadata_example) + versions = template._forc_allowed[metadata_example.template_name] + versions.sort(key=LooseVersion, reverse=True) + + # Assertions + self.assertCountEqual(versions, metadata_example.forc_versions) + for forc_version in metadata_example.forc_versions: + f"{template.TEMPLATES_URL}/{metadata_example.template_name}/{forc_version}" + mock_get_forc_template_version.assert_any_call( + forc_version=forc_version, template_name=metadata_example.template_name + ) + + @patch( + "simple_vm_client.forc_connector.template.template.Template._get_forc_template_version" + ) + def test_update_forc_allowed_no_support_needed( + self, mock_get_forc_template_version + ): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + metadata_example = self.get_metadata_example() + metadata_example.needs_forc_support = False + template._update_forc_allowed(metadata_example) + mock_get_forc_template_version.assert_not_called() + + @patch("simple_vm_client.forc_connector.template.template.requests.get") + @patch("simple_vm_client.forc_connector.template.template.logger.error") + @patch("simple_vm_client.forc_connector.template.template.logger.info") + def test_update_forc_allowed_with_exception( + self, mock_logger_info, mock_logger_error, mock_requests_get + ): + mock_requests_get.side_effect = requests.exceptions.Timeout("Timeout occurred") + + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + metadata_example = self.get_metadata_example() + + template._update_forc_allowed(metadata_example) + for forc_version in metadata_example.forc_versions: + get_url = f"{template.TEMPLATES_URL}/{metadata_example.template_name}/{forc_version}" + mock_logger_info.assert_any_call(f"Get Forc Template Version - {get_url}") + mock_requests_get.assert_any_call( + get_url, + timeout=(30, 30), + headers={"X-API-KEY": template.FORC_API_KEY}, + verify=True, + ) + + # Check that logger.error is called for each forc_version + expected_calls = [ + call("Checking template/version timed out. Timeout occurred") + ] * len(METADATA_EXAMPLE.forc_versions) + mock_logger_error.assert_has_calls(expected_calls, any_order=True) + + @patch("builtins.open", new_callable=mock_open, read_data="key: value\n") + @patch("simple_vm_client.forc_connector.template.template.yaml.load") + def test_load_yaml(self, mock_yaml_load, mock_open): + # Arrange + file_path = "fake/path/to/template_metadata.yml" + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Set the return value for yaml.load + mock_yaml_load.return_value = {"key": "value"} + + # Act + result = template._load_yaml(file_path) + + # Assert + mock_open.assert_called_once_with(file_path) + mock_yaml_load.assert_called_once_with( + mock_open.return_value, Loader=yaml.FullLoader + ) + self.assertEqual(result, {"key": "value"}) + + @patch("simple_vm_client.forc_connector.template.template.logger.exception") + def test_handle_metadata_exception(self, mock_logger_exception): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + template_metadata_name = "fake_metadata_name" + template_name = "fake_template" + fake_exception = ValueError("Fake error message") + + # Act + template._handle_metadata_exception( + template_metadata_name, template_name, fake_exception + ) + + # Assert + mock_logger_exception.assert_called_once_with( + f"Failed to load Metadata yml: {template_metadata_name}\n{str(fake_exception)}" + ) + + @patch("simple_vm_client.forc_connector.template.template.Template._load_yaml") + @patch( + "simple_vm_client.forc_connector.template.template.Template._add_forc_allowed_template" + ) + @patch( + "simple_vm_client.forc_connector.template.template.Template._handle_metadata_exception" + ) + def test_load_resenv_metadata( + self, mock_handle_exception, mock_add_forc_allowed, mock_load_yaml + ): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + mock_template_metadata: ResearchEnvironmentMetadata = ( + self.get_metadata_example() + ) # Replace with your example metadata + mock_load_yaml.return_value = mock_template_metadata.__dict__ + template._all_templates = [mock_template_metadata.template_name] + + # Act + result = template._load_resenv_metadata() + + # Assert + mock_load_yaml.assert_called_once() # Check if _load_yaml was called + self.assertIsInstance( + mock_add_forc_allowed.call_args[0][0], ResearchEnvironmentMetadata + ) + + self.assertEqual( + len(result), 1 + ) # Check if one item is returned in the result list + self.assertIsInstance( + result[0], ResearchEnvironmentMetadata + ) # Check if the item is an instance of ResearchEnvironmentMetadata + mock_handle_exception.assert_not_called() # Ensure _handle_metadata_exception is not called + + @patch("simple_vm_client.forc_connector.template.template.Template._load_yaml") + @patch("simple_vm_client.forc_connector.template.template.logger.exception") + def test_load_resenv_metadata_exception( + self, mock_logger_exception, mock_load_yaml + ): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + mock_template_metadata: ResearchEnvironmentMetadata = ( + self.get_metadata_example() + ) + exception_message = "Some error" + mock_load_yaml.side_effect = Exception("Some error") + mock_load_yaml.return_value = mock_template_metadata.__dict__ + template._all_templates = [mock_template_metadata.template_name] + + # Act + template._load_resenv_metadata() + + mock_logger_exception.assert_called_once_with( + f"Failed to load Metadata yml: {mock_template_metadata.template_name}_metadata.yml\n{exception_message}" + ) + + def test_add_forc_allowed_template(self): + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + mock_template_metadata: ResearchEnvironmentMetadata = ( + self.get_metadata_example() + ) + + # Act + template._add_forc_allowed_template(mock_template_metadata) + + # Assert + self.assertEqual( + len(template._allowed_forc_templates), 1 + ) # Check if the template was added + added_template = template._allowed_forc_templates[0] + self.assertIsInstance( + added_template, ResearchEnvironmentTemplate + ) # Check if the added item is an instance of ResearchEnvironmentTemplate + self.assertEqual( + added_template.template_name, mock_template_metadata.template_name + ) + + @patch("simple_vm_client.forc_connector.template.template.requests.get") + def test_get_forc_templates(self, mock_requests_get): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + expected_response = [ + {"template_name": "template1"}, + {"template_name": "template2"}, + ] + mock_requests_get.return_value.json.return_value = expected_response + + # Act + result = template._get_forc_templates() + + # Assert + mock_requests_get.assert_called_once_with( + template.TEMPLATES_URL, + timeout=(30, 30), + headers={"X-API-KEY": template.FORC_API_KEY}, + verify=True, + ) + self.assertEqual( + result, expected_response + ) # Check if the result matches the expected response + + @patch("simple_vm_client.forc_connector.template.template.requests.get") + @patch("simple_vm_client.forc_connector.template.template.logger.exception") + def test_get_forc_templates_exception( + self, mock_logger_exception, mock_requests_get + ): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + error_msg = "Error fetching FORC templates" + mock_requests_get.side_effect = requests.RequestException(error_msg) + + # Act + result = template._get_forc_templates() + + # Assert + mock_requests_get.assert_called_once_with( + template.TEMPLATES_URL, + timeout=(30, 30), + headers={"X-API-KEY": template.FORC_API_KEY}, + verify=True, + ) + self.assertEqual(result, []) + mock_logger_exception.assert_called_once_with( + f"Error while fetching FORC templates: {error_msg}" + ) + + @patch( + "simple_vm_client.forc_connector.template.template.Template._get_forc_templates" + ) + def test_cross_check_forc_image(self, mock_get_forc_templates): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + tags = ["template1", "template2"] + allowed_templates = {"template1": ["version1"], "template2": ["version2"]} + mock_get_forc_templates.return_value = [ + {"name": "template1", "version": "version1"}, + {"name": "template2", "version": "version2"}, + ] + template._forc_allowed = allowed_templates + template._all_templates = tags + + # Act + result = template.cross_check_forc_image(tags) + + # Assert + mock_get_forc_templates.assert_called_once() + self.assertTrue(result) # Check if the result is True for a valid case + + @patch( + "simple_vm_client.forc_connector.template.template.Template._get_forc_templates" + ) + @patch("simple_vm_client.forc_connector.template.template.logger.exception") + def test_cross_check_forc_image_exception( + self, mock_logger_exception, mock_get_forc_templates + ): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + tags = ["template1", "template2"] + mock_get_forc_templates.side_effect = Exception("Simulated exception") + + # Act + result = template.cross_check_forc_image(tags) + + # Assert + mock_get_forc_templates.assert_called_once() + self.assertFalse(result) + mock_logger_exception.assert_called_once_with( + "Could not get templates from FORC." + ) + + @patch( + "simple_vm_client.forc_connector.template.template.Template._update_forc_allowed" + ) + def test_process_template_metadata(self, mock_update_forc_allowed): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + metadata = self.get_metadata_example() + + # Act + template._process_template_metadata(metadata) + + # Assert + mock_update_forc_allowed.assert_called_once_with(metadata) + self.assertEqual( + template._loaded_resenv_metadata[metadata.template_name], metadata + ) + + @patch( + "simple_vm_client.forc_connector.template.template.Template._update_forc_allowed" + ) + def test_process_template_metadata_existing_template( + self, mock_update_forc_allowed + ): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + existing_metadata = self.get_metadata_example() + new_metadata = self.get_metadata_example() + new_metadata.port = 9000 + template._loaded_resenv_metadata[ + existing_metadata.template_name + ] = existing_metadata + # Act + template._process_template_metadata(new_metadata) + + # Assert + mock_update_forc_allowed.assert_called_once_with(new_metadata) + self.assertEqual( + template._loaded_resenv_metadata[existing_metadata.template_name], + new_metadata, + ) + + @patch( + "simple_vm_client.forc_connector.template.template.Template._load_resenv_metadata" + ) + @patch( + "simple_vm_client.forc_connector.template.template.Template._process_template_metadata" + ) + @patch("simple_vm_client.forc_connector.template.template.logger.exception") + def test_load_and_update_resenv_metadata( + self, + mock_logger_exception, + mock_process_template_metadata, + mock_load_resenv_metadata, + ): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + # Mocking the _load_resenv_metadata method to return a list of ResearchEnvironmentMetadata instances + mock_metadata1 = self.get_metadata_example() + mock_metadata2 = self.get_metadata_example() + mock_load_resenv_metadata.return_value = [mock_metadata1, mock_metadata2] + + # Mocking the _process_template_metadata method to raise an exception for one of the metadata instances + mock_exception = Exception("Failed to parse Metadata yml") + mock_process_template_metadata.side_effect = [None, mock_exception] + + # Act + template._load_and_update_resenv_metadata() + + # Assert + mock_load_resenv_metadata.assert_called_once() # Check if _load_resenv_metadata was called + mock_process_template_metadata.assert_has_calls( + [unittest.mock.call(mock_metadata1), unittest.mock.call(mock_metadata2)] + ) # Check if _process_template_metadata was called for each metadata instance + mock_logger_exception.assert_called_once_with( + f"Failed to parse Metadata yml: {mock_metadata2}\n{mock_exception}" + ) # Check if logger.exception was called for the exception case + + @patch( + "simple_vm_client.forc_connector.template.template.Template._download_and_extract_playbooks" + ) + @patch( + "simple_vm_client.forc_connector.template.template.Template._copy_resenvs_templates" + ) + @patch( + "simple_vm_client.forc_connector.template.template.Template._update_loaded_templates" + ) + @patch( + "simple_vm_client.forc_connector.template.template.Template._install_ansible_galaxy_requirements" + ) + @patch( + "simple_vm_client.forc_connector.template.template.Template._load_and_update_resenv_metadata" + ) + @patch("simple_vm_client.forc_connector.template.template.logger.error") + @patch("simple_vm_client.forc_connector.template.template.logger.info") + def test_update_playbooks( + self, + mock_logger_info, + mock_logger_error, + mock_load_and_update_resenv_metadata, + mock_install_ansible_galaxy_requirements, + mock_update_loaded_templates, + mock_copy_resenvs_templates, + mock_download_and_extract_playbooks, + ): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + + # Act + template.update_playbooks() + + # Assert + mock_logger_error.assert_not_called() # Check if logger.error was not called when GITHUB_PLAYBOOKS_REPO is not None + mock_download_and_extract_playbooks.assert_called_once() # Check if _download_and_extract_playbooks was called + mock_copy_resenvs_templates.assert_called_once() # Check if _copy_resenvs_templates was called + mock_update_loaded_templates.assert_called_once() # Check if _update_loaded_templates was called + mock_install_ansible_galaxy_requirements.assert_called_once() # Check if _install_ansible_galaxy_requirements was called + mock_load_and_update_resenv_metadata.assert_called_once() # Check if _load_and_update_resenv_metadata was called + mock_logger_info.assert_any_call( + f"Loaded Template Names: {template._all_templates}" + ) # Check if logger.info was called + + @patch( + "simple_vm_client.forc_connector.template.template.Template.update_playbooks" + ) + def test_init(self, mock_update_playbooks): + # Arrange + github_playbook_repo = "https://github.com/playbooks" + forc_url = "https://forc.example.com/" + forc_api_key = "your-api-key" + + # Act + instance = Template(github_playbook_repo, forc_url, forc_api_key) + + # Assert + self.assertEqual(instance.GITHUB_PLAYBOOKS_REPO, github_playbook_repo) + self.assertEqual(instance.FORC_URL, forc_url) + self.assertEqual(instance.FORC_API_KEY, forc_api_key) + self.assertEqual(instance.TEMPLATES_URL, f"{forc_url}templates") + self.assertEqual(instance.BACKENDS_URL, f"{forc_url}backends") + self.assertEqual(instance.BACKENDS_BY_OWNER_URL, f"{forc_url}backends/byOwner") + self.assertEqual( + instance.BACKENDS_BY_TEMPLATE_URL, f"{forc_url}backends/byTemplate" + ) + self.assertEqual(instance._forc_allowed, {}) + self.assertEqual(instance._all_templates, [CONDA]) + self.assertEqual(instance._loaded_resenv_metadata, {}) + self.assertEqual(instance._allowed_forc_templates, []) + mock_update_playbooks.assert_called_once() + + def test_loaded_research_env_metadata_property(self): + # Arrange + template = self.init_template( + github_playbook_repo=TestTemplate.GITHUB_REPO_STAGING, + forc_url=TestTemplate.FORC_URL, + ) + mock_metadata1 = self.get_metadata_example() + mock_metadata2 = self.get_metadata_example() + + # Act + template._loaded_resenv_metadata = { + "template1": mock_metadata1, + "template2": mock_metadata2, + } + result = template.loaded_research_env_metadata + + # Assert + self.assertEqual( + result, {"template1": mock_metadata1, "template2": mock_metadata2} + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/simple_vm_client/forc_connector/test_forc_connector.py b/simple_vm_client/forc_connector/test_forc_connector.py new file mode 100644 index 00000000..e0ea8497 --- /dev/null +++ b/simple_vm_client/forc_connector/test_forc_connector.py @@ -0,0 +1,897 @@ +import os +import tempfile +import unittest +from unittest.mock import MagicMock, patch + +import requests +from openstack.compute.v2.server import Server +from openstack.test import fakes + +from simple_vm_client.forc_connector.forc_connector import ForcConnector +from simple_vm_client.ttypes import ( + Backend, + BackendNotFoundException, + DefaultException, + PlaybookNotFoundException, + TemplateNotFoundException, +) +from simple_vm_client.util.state_enums import VmTaskStates + +FORC_URL = "https://proxy-dev.bi.denbi.de:5000/" +FORC_ACCESS_URL = "https://proxy-dev.bi.denbi.de/" +GITHUB_REPO = "https://github.com/deNBI/resenvs/archive/refs/heads/staging.zip" +FORC_SECRUITY_GROUP_ID = "9a08eecc-d9a5-405b-aeda-9d4180fc94d6" +REDIS_HOST = "redis_host" +REDIS_PORT = 6379 +FORC_API_KEY = "unit_test-key" +CONFIG_DATA = f""" + redis: + host: {REDIS_HOST} + port: {REDIS_PORT} + password: "" + forc: + forc_url: {FORC_URL} + forc_access_url: {FORC_ACCESS_URL} + github_playbooks_repo: {GITHUB_REPO} + forc_security_group_id: {FORC_SECRUITY_GROUP_ID} + """ + + +class TestForcConnector(unittest.TestCase): + @patch("simple_vm_client.forc_connector.forc_connector.redis.ConnectionPool") + @patch("simple_vm_client.forc_connector.forc_connector.redis.Redis") + @patch("simple_vm_client.forc_connector.forc_connector.Template") + def setUp(self, mock_template, mock_redis, mock_connection_pool): + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + + self.forc_connector = ForcConnector(config_file=temp_file.name) + os.remove(temp_file.name) + + @patch("simple_vm_client.forc_connector.forc_connector.redis.ConnectionPool") + @patch("simple_vm_client.forc_connector.forc_connector.redis.Redis") + @patch("simple_vm_client.forc_connector.forc_connector.Template") + @patch.dict( + os.environ, + { + "FORC_API_KEY": FORC_API_KEY, + }, + ) + def test_init(self, mock_template, mock_redis, mock_connection_pool): + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + ForcConnector(temp_file.name) + os.remove(temp_file.name) + + mock_template.assert_called_with( + github_playbook_repo=GITHUB_REPO, + forc_url=FORC_URL, + forc_api_key=FORC_API_KEY, + ) + mock_connection_pool.assert_called_with(host=REDIS_HOST, port=REDIS_PORT) + mock_redis.assert_called_with( + connection_pool=mock_connection_pool.return_value, charset="utf-8" + ) + + def test_load_config(self): + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + + self.forc_connector.load_config(config_file=temp_file.name) + os.remove(temp_file.name) + self.assertEqual(self.forc_connector.FORC_URL, FORC_URL) + self.assertEqual(self.forc_connector.FORC_ACCESS_URL, FORC_ACCESS_URL) + self.assertEqual(self.forc_connector.FORC_REMOTE_ID, FORC_SECRUITY_GROUP_ID) + self.assertEqual(self.forc_connector.GITHUB_PLAYBOOKS_REPO, GITHUB_REPO) + self.assertEqual(self.forc_connector.REDIS_HOST, REDIS_HOST) + self.assertEqual(self.forc_connector.REDIS_PORT, REDIS_PORT) + + @patch("simple_vm_client.forc_connector.forc_connector.redis.ConnectionPool") + @patch("simple_vm_client.forc_connector.forc_connector.redis.Redis") + @patch("simple_vm_client.forc_connector.forc_connector.logger.info") + @patch("simple_vm_client.forc_connector.forc_connector.logger.error") + def test_connect_to_redis( + self, mock_logger_error, mock_logger_info, mock_redis, mock_redis_pool + ): + self.forc_connector.connect_to_redis() + mock_redis_pool.assert_any_call( + host=self.forc_connector.REDIS_HOST, port=self.forc_connector.REDIS_PORT + ) + mock_redis.asser_called_once_with( + connection_pool=self.forc_connector.redis_pool, charset="utf-8" + ) + self.forc_connector.redis_connection.ping.return_value = True + self.forc_connector.redis_connection.ping.assert_any_call() + mock_logger_info.assert_any_call("Redis connection created!") + self.forc_connector.redis_connection.ping.return_value = False + self.forc_connector.connect_to_redis() + mock_logger_error.assert_any_call("Could not connect to redis!") + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_users_from_backend(self, mock_get): + backend_id = "backend_id" + get_url = f"{self.forc_connector.FORC_URL}users/{backend_id}" + return_value = MagicMock(status_code=200, body={"data"}) + return_value.json.return_value = "data" + mock_get.return_value = return_value + result = self.forc_connector.get_users_from_backend(backend_id) + mock_get.assert_called_once_with( + get_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + self.assertEqual(result, ["data"]) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_users_from_backend_401(self, mock_get): + backend_id = "backend_id" + get_url = f"{self.forc_connector.FORC_URL}users/{backend_id}" + return_value = MagicMock(status_code=401, body={"data"}) + mock_get.return_value = return_value + result = self.forc_connector.get_users_from_backend(backend_id) + mock_get.assert_called_once_with( + get_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + self.assertEqual(result, ["Error: 401"]) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_users_from_backend_timeout(self, mock_get): + backend_id = "backend_id" + get_url = f"{self.forc_connector.FORC_URL}users/{backend_id}" + mock_get.side_effect = requests.Timeout("UNit Test") + + result = self.forc_connector.get_users_from_backend(backend_id) + mock_get.assert_called_once_with( + get_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + self.assertEqual(result, []) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_user_from_backend(self, mock_delete): + backend_id = "backend_id" + user_id = "user_id" + delete_url = f"{self.forc_connector.FORC_URL}users/{backend_id}" + user_info = {"user": user_id} + + return_value = MagicMock(status_code=200) + return_value.json.return_value = {"data": "success"} + mock_delete.return_value = return_value + + result = self.forc_connector.delete_user_from_backend(backend_id, user_id) + + mock_delete.assert_called_once_with( + delete_url, + json=user_info, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + self.assertEqual(result, {"data": "success"}) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_user_from_backend_timeout(self, mock_delete): + backend_id = "backend_id" + user_id = "user_id" + delete_url = f"{self.forc_connector.FORC_URL}users/{backend_id}" + user_info = {"user": user_id} + + mock_delete.side_effect = requests.Timeout("Unit Test Timeout") + + result = self.forc_connector.delete_user_from_backend(backend_id, user_id) + + mock_delete.assert_called_once_with( + delete_url, + json=user_info, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + self.assertEqual(result, {"Error": "Timeout."}) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_user_from_backend_exception(self, mock_delete): + backend_id = "backend_id" + user_id = "user_id" + delete_url = f"{self.forc_connector.FORC_URL}users/{backend_id}" + user_info = {"user": user_id} + + mock_delete.side_effect = Exception("Unit Test Exception") + + with self.assertRaises(BackendNotFoundException): + self.forc_connector.delete_user_from_backend(backend_id, user_id) + + mock_delete.assert_called_once_with( + delete_url, + json=user_info, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + @patch("simple_vm_client.forc_connector.forc_connector.json") + def test_delete_backend_not_found_json(self, mock_json, mock_delete): + backend_id = "backend_id" + return_value = MagicMock(status_code=404) + return_value.json.return_value = {"data": "success"} + mock_json.dumps.side_effect = ValueError() + mock_delete.return_value = return_value + + with self.assertRaises(BackendNotFoundException): + self.forc_connector.delete_backend(backend_id) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_backend(self, mock_delete): + backend_id = "backend_id" + delete_url = f"{self.forc_connector.FORC_URL}backends/{backend_id}" + + return_value = MagicMock(status_code=200) + return_value.json.return_value = {"data": "success"} + mock_delete.return_value = return_value + + self.forc_connector.delete_backend(backend_id) + + mock_delete.assert_called_once_with( + delete_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_backend_not_found(self, mock_delete): + backend_id = "backend_id" + delete_url = f"{self.forc_connector.FORC_URL}backends/{backend_id}" + + return_value = MagicMock(status_code=404) + return_value.json.return_value = {"error": "Backend not found"} + mock_delete.return_value = return_value + + with self.assertRaises(BackendNotFoundException): + self.forc_connector.delete_backend(backend_id) + + mock_delete.assert_called_once_with( + delete_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_backend_server_error(self, mock_delete): + backend_id = "backend_id" + delete_url = f"{self.forc_connector.FORC_URL}backends/{backend_id}" + + return_value = MagicMock(status_code=500) + return_value.json.return_value = {"error": "Internal Server Error"} + mock_delete.return_value = return_value + + with self.assertRaises(BackendNotFoundException) as context: + self.forc_connector.delete_backend(backend_id) + + mock_delete.assert_called_once_with( + delete_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.delete") + def test_delete_backend_timeout(self, mock_delete): + backend_id = "backend_id" + delete_url = f"{self.forc_connector.FORC_URL}backends/{backend_id}" + + mock_delete.side_effect = requests.Timeout("Unit Test Timeout") + + with self.assertRaises(DefaultException) as context: + self.forc_connector.delete_backend(backend_id) + + mock_delete.assert_called_once_with( + delete_url, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.post") + def test_add_user_to_backend_backend_not_found(self, mock_post): + mock_response = MagicMock() + + mock_response.json.side_effect = Exception() + mock_post.return_value = mock_response + with self.assertRaises(BackendNotFoundException): + self.forc_connector.add_user_to_backend(backend_id="test", user_id="test") + + @patch("simple_vm_client.forc_connector.forc_connector.requests.post") + def test_add_user_to_backend(self, mock_post): + # Create an instance of your class + # Mock the response from requests.post + mock_response = MagicMock() + mock_response.json.return_value = {"key": "value"} + mock_post.return_value = mock_response + + # Call the method you want to test + result = self.forc_connector.add_user_to_backend( + backend_id="backend_id", user_id="user_id" + ) + + # Assertions + mock_post.assert_called_once_with( + f"{self.forc_connector.FORC_URL}users/backend_id", + json={"user": "user_id"}, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + self.assertEqual(result, {"key": "value"}) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.post") + def test_add_user_to_backend_timeout(self, mock_post): + mock_post.side_effect = requests.Timeout("Unit Test") + + result = self.forc_connector.add_user_to_backend( + backend_id="backend_id", user_id="user_id" + ) + + mock_post.assert_called_once_with( + f"{self.forc_connector.FORC_URL}users/backend_id", + json={"user": "user_id"}, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + self.assertEqual(result, {"Error": "Timeout."}) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.post") + def test_add_user_to_backend_exception(self, mock_post): + mock_post.side_effect = Exception("Unit Test") + + with self.assertRaises(BackendNotFoundException): + self.forc_connector.add_user_to_backend( + backend_id="backend_id", user_id="user_id" + ) + + mock_post.assert_called_once_with( + f"{self.forc_connector.FORC_URL}users/backend_id", + json={"user": "user_id"}, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + def test_has_forc(self): + result = self.forc_connector.has_forc() + self.assertEqual(result, self.forc_connector.FORC_URL is not None) + + def test_get_forc_url(self): + result = self.forc_connector.get_forc_url() + + self.assertEqual(result, self.forc_connector.FORC_URL) + + def test_get_forc_access_url(self): + result = self.forc_connector.get_forc_access_url() + + self.assertEqual(result, self.forc_connector.FORC_ACCESS_URL) + + @patch.dict( + os.environ, + { + "FORC_API_KEY": FORC_API_KEY, + }, + ) + def test_load_env(self): + self.forc_connector.load_env() + self.assertEqual(FORC_API_KEY, self.forc_connector.FORC_API_KEY) + + def test_set_vm_wait_for_playbook(self): + openstack_id = "openstack_id" + private_key = "priv" + name = "name" + self.forc_connector.set_vm_wait_for_playbook( + openstack_id=openstack_id, private_key=private_key, name=name + ) + self.forc_connector.redis_connection.hset.assert_called_once_with( + name=openstack_id, + mapping=dict( + key=private_key, + name=name, + status=VmTaskStates.PREPARE_PLAYBOOK_BUILD.value, + ), + ) + + def test_get_playbook_status(self): + fake_server = fakes.generate_fake_resource(Server) + fake_server.task_state = None + fake_playbook = MagicMock() + self.forc_connector._active_playbooks[fake_server.id] = fake_playbook + self.forc_connector.redis_connection.exists.return_value = 1 + self.forc_connector.redis_connection.hget.return_value = ( + VmTaskStates.PREPARE_PLAYBOOK_BUILD.value.encode("utf-8") + ) + result = self.forc_connector.get_playbook_status(server=fake_server) + self.assertEqual(result.task_state, VmTaskStates.PREPARE_PLAYBOOK_BUILD.value) + self.forc_connector.redis_connection.hget.return_value = ( + VmTaskStates.BUILD_PLAYBOOK.value.encode("utf-8") + ) + result = self.forc_connector.get_playbook_status(server=fake_server) + self.assertEqual(result.task_state, VmTaskStates.BUILD_PLAYBOOK.value) + self.forc_connector.redis_connection.hget.return_value = ( + VmTaskStates.PLAYBOOK_FAILED.value.encode("utf-8") + ) + result = self.forc_connector.get_playbook_status(server=fake_server) + self.assertEqual(result.task_state, VmTaskStates.PLAYBOOK_FAILED.value) + self.forc_connector.redis_connection.hget.return_value = ( + VmTaskStates.PLAYBOOK_SUCCESSFUL.value.encode("utf-8") + ) + result = self.forc_connector.get_playbook_status(server=fake_server) + self.assertEqual(result.task_state, VmTaskStates.PLAYBOOK_SUCCESSFUL.value) + + @patch("simple_vm_client.forc_connector.forc_connector.Playbook") + def test_create_and_deploy_playbook(self, mock_playbook): + key = "key" + openstack_id = "openstack_id" + playbook_mock = MagicMock() + mock_playbook.return_value = playbook_mock + + self.forc_connector.redis_connection.hget.return_value = key.encode("utf-8") + res = self.forc_connector.create_and_deploy_playbook( + public_key=key, + research_environment_template="vscode", + create_only_backend=False, + conda_packages=[], + apt_packages=[], + openstack_id=openstack_id, + port=80, + ip="192.168.0.1", + cloud_site="Bielefeld", + base_url="base_url", + ) + self.forc_connector.redis_connection.hset.assert_called_once_with( + openstack_id, "status", VmTaskStates.BUILD_PLAYBOOK.value + ) + self.assertEqual(res, 0) + active_play = self.forc_connector._active_playbooks[openstack_id] + self.assertEqual(active_play, playbook_mock) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.post") + @patch("simple_vm_client.forc_connector.forc_connector.Backend") + def test_create_backend(self, mock_backend, mock_post): + # Arrange + owner = "test_owner" + user_key_url = "test_key_url" + template = "test_template" + upstream_url = "test_upstream_url" + self.forc_connector.template.get_template_version_for.return_value = ( + "test_version" + ) + + mock_response = MagicMock() + mock_response.json.return_value = { + "id": 1, + "owner": owner, + "location_url": "test_location_url", + "template": template, + "template_version": "test_version", + } + mock_post.return_value = mock_response + + # Act + result = self.forc_connector.create_backend( + owner, user_key_url, template, upstream_url + ) + + # Assert + mock_post.assert_called_once_with( + f"{self.forc_connector.FORC_URL}backends", + json={ + "owner": owner, + "user_key_url": user_key_url, + "template": template, + "template_version": "test_version", + "upstream_url": upstream_url, + }, + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + mock_response.json.assert_called_once() + mock_backend.assert_called_once_with( + id=1, + owner=owner, + location_url="test_location_url", + template=template, + template_version="test_version", + ) + + self.assertEqual(result, mock_backend.return_value) + + @patch( + "simple_vm_client.forc_connector.forc_connector.requests.post", + side_effect=requests.Timeout, + ) + def test_create_backend_timeout(self, mock_post): + # Arrange + owner = "test_owner" + user_key_url = "test_key_url" + template = "test_template" + upstream_url = "test_upstream_url" + + # Act & Assert + with self.assertRaises(DefaultException): + self.forc_connector.create_backend( + owner, user_key_url, template, upstream_url + ) + + mock_post.assert_called_once() + + @patch( + "simple_vm_client.forc_connector.forc_connector.requests.post", + side_effect=Exception("Test error"), + ) + def test_create_backend_exception(self, mock_post): + # Arrange + owner = "test_owner" + user_key_url = "test_key_url" + template = "test_template" + upstream_url = "test_upstream_url" + + # Act & Assert + with self.assertRaises(DefaultException): + self.forc_connector.create_backend( + owner, user_key_url, template, upstream_url + ) + + mock_post.assert_called_once() + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backends(self, mock_get): + # Arrange + + mock_response = MagicMock() + mock_response.json.return_value = [ + { + "id": 1, + "owner": "test_owner", + "location_url": "test_location_url", + "template": "test_template", + "template_version": "test_version", + }, + { + "id": 2, + "owner": "another_owner", + "location_url": "another_location_url", + "template": "another_template", + "template_version": "another_version", + }, + ] + mock_get.return_value = mock_response + + # Act + result = self.forc_connector.get_backends() + + # Assert + mock_get.assert_called_once_with( + f"{self.forc_connector.FORC_URL}backends", + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + mock_response.json.assert_called_once() + + expected_backends = [ + Backend( + id=1, + owner="test_owner", + location_url="test_location_url", + template="test_template", + template_version="test_version", + ), + Backend( + id=2, + owner="another_owner", + location_url="another_location_url", + template="another_template", + template_version="another_version", + ), + ] + + self.assertEqual(result, expected_backends) + + @patch( + "simple_vm_client.forc_connector.forc_connector.requests.get", + side_effect=requests.Timeout, + ) + def test_get_backends_timeout(self, mock_get): + # Arrange + + # Act & Assert + with self.assertRaises(DefaultException): + self.forc_connector.get_backends() + + mock_get.assert_called_once() + + def test_is_playbook_active(self) -> bool: + openstack_id = "openstack_id" + self.forc_connector.is_playbook_active(openstack_id=openstack_id) + self.forc_connector.redis_connection.exists.assert_called_once_with( + openstack_id + ) + + def test_get_playbook_logs(self): + openstack_id = "openstack_id" + self.forc_connector.redis_connection.exists.return_value = 1 + playbook_mock = MagicMock() + playbook_mock.get_logs.return_value = "status", "stdout", "stderr" + self.forc_connector._active_playbooks = {openstack_id: playbook_mock} + self.forc_connector.get_playbook_logs(openstack_id=openstack_id) + self.forc_connector.redis_connection.exists.assert_called_once_with( + openstack_id + ) + playbook_mock.get_logs.assert_called_once() + playbook_mock.cleanup.assert_called_once() + + def test_get_playbook_logs_no_playbook(self): + openstack_id = "openstack_id" + with self.assertRaises(PlaybookNotFoundException): + self.forc_connector.get_playbook_logs(openstack_id=openstack_id) + self.forc_connector.redis_connection.exists.assert_called_once_with( + openstack_id + ) + + def test_create_backend_template_exc(self): + self.forc_connector.template.get_template_version_for.return_value = None + with self.assertRaises(TemplateNotFoundException): + self.forc_connector.create_backend( + owner="dede", + user_key_url="dede", + template="not_found", + upstream_url="de", + ) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backend_sexc(self, mock_get): + mock_response = MagicMock(status_code=401) + mock_get.return_value = mock_response + with self.assertRaises(DefaultException): + self.forc_connector.get_backends() + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backends_by_template_exc(self, mock_get): + mock_response = MagicMock(status_code=401) + mock_get.return_value = mock_response + with self.assertRaises(DefaultException): + self.forc_connector.get_backends_by_template(template="ds") + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backends_by_template(self, mock_get): + # Arrange + template = "test_template" + + mock_response = MagicMock() + mock_response.json.return_value = [ + { + "id": 1, + "owner": "test_owner", + "location_url": "test_location_url", + "template": template, + "template_version": "test_version", + }, + { + "id": 2, + "owner": "another_owner", + "location_url": "another_location_url", + "template": template, + "template_version": "another_version", + }, + ] + mock_get.return_value = mock_response + + # Act + result = self.forc_connector.get_backends_by_template(template) + + # Assert + mock_get.assert_called_once_with( + f"{self.forc_connector.FORC_URL}backends/byTemplate/{template}", + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + mock_response.json.assert_called_once() + + expected_backends = [ + Backend( + id=1, + owner="test_owner", + location_url="test_location_url", + template=template, + template_version="test_version", + ), + Backend( + id=2, + owner="another_owner", + location_url="another_location_url", + template=template, + template_version="another_version", + ), + ] + + self.assertEqual(result, expected_backends) + + @patch( + "simple_vm_client.forc_connector.forc_connector.requests.get", + side_effect=requests.Timeout, + ) + def test_get_backends_by_template_timeout(self, mock_get): + # Arrange + template = "test_template" + + # Act & Assert + with self.assertRaises(DefaultException): + self.forc_connector.get_backends_by_template(template) + + mock_get.assert_called_once() + + def test_get_metadata_by_research_environment(self): + metadata_Mock = MagicMock() + res_env = "testres" + + return_value = {res_env: metadata_Mock} + template_mock = MagicMock() + template_mock.loaded_research_env_metadata = {res_env: metadata_Mock} + self.forc_connector.template = template_mock + self.forc_connector.template.loaded_research_env_metadata = return_value + res = self.forc_connector.get_metadata_by_research_environment( + research_environment=res_env + ) + self.assertEqual(metadata_Mock, res) + + def test_get_metadata_by_research_environment_none(self): + res_env = "testres" + template_mock = MagicMock() + template_mock.loaded_research_env_metadata = None + res = self.forc_connector.get_metadata_by_research_environment( + research_environment=res_env + ) + self.assertEqual(res, None) + + def test_get_metadata_by_research_environment_none_two(self): + metadata_Mock = MagicMock() + + template_mock = MagicMock() + template_mock.loaded_research_env_metadata = {"dede": metadata_Mock} + self.forc_connector.template = template_mock + res = self.forc_connector.get_metadata_by_research_environment( + research_environment="user_key_url" + ) + self.assertEqual(None, None) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backend_by_id_exc(self, mock_get): + backend_id = "your_backend_id" + mock_response = MagicMock() + mock_response.json.side_effect = Exception() + mock_get.return_value = mock_response + + with self.assertRaises(Exception): + self.forc_connector.get_backend_by_id(backend_id) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backend_by_id(self, mock_get): + backend_id = "your_backend_id" + mock_response = MagicMock() + mock_response.json.return_value = { + "id": backend_id, + "owner": "owner", + "location_url": "location_url", + "template": "template", + "template_version": "template_version", + } + mock_get.return_value = mock_response + + result = self.forc_connector.get_backend_by_id(backend_id) + + mock_get.assert_called_once_with( + f"{self.forc_connector.FORC_URL}backends/{backend_id}", + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + expected_backend = Backend( + id=backend_id, + owner="owner", + location_url="location_url", + template="template", + template_version="template_version", + ) + + self.assertEqual(result, expected_backend) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backend_by_id_timeout(self, mock_get): + backend_id = "your_backend_id" + mock_get.side_effect = requests.Timeout("Unit Test Timeout") + + with self.assertRaises(DefaultException) as context: + self.forc_connector.get_backend_by_id(backend_id) + + self.assertIn("Unit Test Timeout", str(context.exception)) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backends_by_owner_default_exc(self, mock_get): + mock_response = MagicMock(status_code=401) + mock_get.return_value = mock_response + with self.assertRaises(DefaultException): + self.forc_connector.get_backends_by_owner(owner="user") + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backends_by_owner(self, mock_get): + owner = "your_owner" + mock_response = MagicMock() + mock_response.json.return_value = [ + { + "id": "backend_id_1", + "owner": owner, + "location_url": "location_url_1", + "template": "template_1", + "template_version": "template_version_1", + }, + { + "id": "backend_id_2", + "owner": owner, + "location_url": "location_url_2", + "template": "template_2", + "template_version": "template_version_2", + }, + ] + mock_get.return_value = mock_response + + result = self.forc_connector.get_backends_by_owner(owner) + + mock_get.assert_called_once_with( + f"{self.forc_connector.FORC_URL}backends/byOwner/{owner}", + timeout=(30, 30), + headers={"X-API-KEY": self.forc_connector.FORC_API_KEY}, + verify=True, + ) + + expected_backends = [ + Backend( + id="backend_id_1", + owner=owner, + location_url="location_url_1", + template="template_1", + template_version="template_version_1", + ), + Backend( + id="backend_id_2", + owner=owner, + location_url="location_url_2", + template="template_2", + template_version="template_version_2", + ), + ] + + self.assertEqual(result, expected_backends) + + @patch("simple_vm_client.forc_connector.forc_connector.requests.get") + def test_get_backends_by_owner_timeout(self, mock_get): + owner = "your_owner" + mock_get.side_effect = requests.Timeout("Unit Test Timeout") + + with self.assertRaises(DefaultException) as context: + self.forc_connector.get_backends_by_owner(owner) + + self.assertIn("Unit Test Timeout", str(context.exception)) diff --git a/simple_vm_client/openstack_connector/__pycache__/__init__.cpython-38.pyc b/simple_vm_client/openstack_connector/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index d8194106..00000000 Binary files a/simple_vm_client/openstack_connector/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/simple_vm_client/openstack_connector/openstack_connector.py b/simple_vm_client/openstack_connector/openstack_connector.py index cff9d498..23d4ed5b 100644 --- a/simple_vm_client/openstack_connector/openstack_connector.py +++ b/simple_vm_client/openstack_connector/openstack_connector.py @@ -11,7 +11,6 @@ import sympy import yaml -from forc_connector.template.template import ResearchEnvironmentMetadata from openstack import connection from openstack.block_storage.v2.snapshot import Snapshot from openstack.block_storage.v3.volume import Volume @@ -28,7 +27,11 @@ from openstack.network.v2.network import Network from openstack.network.v2.security_group import SecurityGroup from oslo_utils import encodeutils -from ttypes import ( + +from simple_vm_client.forc_connector.template.template import ( + ResearchEnvironmentMetadata, +) +from simple_vm_client.ttypes import ( DefaultException, FlavorNotFoundException, ImageNotFoundException, @@ -38,8 +41,8 @@ SnapshotNotFoundException, VolumeNotFoundException, ) -from util.logger import setup_custom_logger -from util.state_enums import VmStates, VmTaskStates +from simple_vm_client.util.logger import setup_custom_logger +from simple_vm_client.util.state_enums import VmStates, VmTaskStates logger = setup_custom_logger(__name__) @@ -76,6 +79,7 @@ def __init__(self, config_file: str): self.USE_APPLICATION_CREDENTIALS: bool = False self.load_env_config() + print("loading config file") self.load_config_yml(config_file) try: @@ -138,7 +142,7 @@ def load_env_config(self) -> None: sys.exit(1) self.USE_APPLICATION_CREDENTIALS = ( - os.environ.get("USE_APPLICATION_CREDENTIALS", "False").lower() == "true" + os.environ.get("USE_APPLICATION_CREDENTIALS", "False").lower() == "true" ) if self.USE_APPLICATION_CREDENTIALS: @@ -180,15 +184,15 @@ def load_env_config(self) -> None: self.PROJECT_DOMAIN_ID = os.environ["OS_PROJECT_DOMAIN_ID"] def create_server( - self, - name: str, - image_id: str, - flavor_id: str, - network_id: str, - userdata: str, - key_name: str, - metadata: dict[str, str], - security_groups: list[str], + self, + name: str, + image_id: str, + flavor_id: str, + network_id: str, + userdata: str, + key_name: str, + metadata: dict[str, str], + security_groups: list[str], ) -> Server: logger.info( f"Create Server:\n\tname: {name}\n\timage_id:{image_id}\n\tflavor_id:{flavor_id}\n\tmetadata:{metadata}" @@ -209,17 +213,18 @@ def get_volume(self, name_or_id: str) -> Volume: logger.info(f"Get Volume {name_or_id}") volume: Volume = self.openstack_connection.get_volume(name_or_id=name_or_id) if volume is None: - logger.exception(f"No Volume with id {name_or_id} ") + logger.exception(f"No Volume with id {name_or_id}") raise VolumeNotFoundException( - message=f"No Volume with id {name_or_id} ", name_or_id=name_or_id + message=f"No Volume with id {name_or_id}", name_or_id=name_or_id ) return volume def delete_volume(self, volume_id: str) -> None: try: - logger.info(f"Delete Volume {volume_id} ") + logger.info(f"Delete Volume {volume_id}") self.openstack_connection.delete_volume(name_or_id=volume_id) except ResourceNotFound as e: + logger.exception(f"No Volume with id {volume_id}") raise VolumeNotFoundException(message=e.message, name_or_id=volume_id) except ConflictException as e: @@ -229,7 +234,7 @@ def delete_volume(self, volume_id: str) -> None: raise DefaultException(message=e.message) def create_volume_snapshot( - self, volume_id: str, name: str, description: str + self, volume_id: str, name: str, description: str ) -> str: try: logger.info(f"Create Snapshot for Volume {volume_id}") @@ -238,6 +243,7 @@ def create_volume_snapshot( ) return volume_snapshot["id"] except ResourceNotFound as e: + logger.error(f"No Volume with id {volume_id}") raise VolumeNotFoundException(message=e.message, name_or_id=volume_id) except OpenStackCloudException as e: raise DefaultException(message=e.message) @@ -248,18 +254,20 @@ def get_volume_snapshot(self, name_or_id: str) -> Snapshot: name_or_id=name_or_id ) if snapshot is None: - logger.exception(f"No volume Snapshot with id {name_or_id} ") + logger.exception(f"No volume Snapshot with id {name_or_id}") raise VolumeNotFoundException( - message=f"No volume Snapshot with id {name_or_id} ", + message=f"No volume Snapshot with id {name_or_id}", name_or_id=name_or_id, ) return snapshot def delete_volume_snapshot(self, snapshot_id: str) -> None: try: - logger.info(f"Delete volume Snapshot {snapshot_id} ") + logger.info(f"Delete volume Snapshot {snapshot_id}") self.openstack_connection.delete_volume_snapshot(name_or_id=snapshot_id) except ResourceNotFound as e: + logger.exception(f"Snapshot not found: {snapshot_id}") + raise SnapshotNotFoundException(message=e.message, name_or_id=snapshot_id) except ConflictException as e: @@ -269,7 +277,7 @@ def delete_volume_snapshot(self, snapshot_id: str) -> None: raise DefaultException(message=e.message) def create_volume_by_source_volume( - self, volume_name: str, metadata: dict[str, str], source_volume_id: str + self, volume_name: str, metadata: dict[str, str], source_volume_id: str ) -> Volume: logger.info(f"Creating volume from source volume with id {source_volume_id}") try: @@ -285,7 +293,7 @@ def create_volume_by_source_volume( raise ResourceNotAvailableException(message=e.message) def create_volume_by_volume_snap( - self, volume_name: str, metadata: dict[str, str], volume_snap_id: str + self, volume_name: str, metadata: dict[str, str], volume_snap_id: str ) -> Volume: logger.info(f"Creating volume from volume snapshot with id {volume_snap_id}") try: @@ -312,14 +320,18 @@ def get_servers_by_ids(self, ids: list[str]) -> list[Server]: logger.info(f"Get server {server_id}") try: server = self.openstack_connection.get_server_by_id(server_id) - servers.append(server) + if server: + servers.append(server) + else: + logger.error(f"Requested VM {server_id} not found!") + except Exception as e: logger.exception(f"Requested VM {server_id} not found!\n {e}") return servers def attach_volume_to_server( - self, openstack_id: str, volume_id: str + self, openstack_id: str, volume_id: str ) -> dict[str, str]: server = self.get_server(openstack_id=openstack_id) volume = self.get_volume(name_or_id=volume_id) @@ -360,7 +372,7 @@ def resize_volume(self, volume_id: str, size: int) -> None: raise DefaultException(message=str(e)) def create_volume( - self, volume_name: str, volume_storage: int, metadata: dict[str, str] + self, volume_name: str, volume_storage: int, metadata: dict[str, str] ) -> Volume: logger.info(f"Creating volume with {volume_storage} GB storage") try: @@ -451,15 +463,9 @@ def get_flavor(self, name_or_id: str) -> Flavor: def get_flavors(self) -> list[Flavor]: logger.info("Get Flavors") - if self.openstack_connection: - flavors: list[Flavor] = self.openstack_connection.list_flavors( - get_extra=True - ) - logger.info([flav["name"] for flav in flavors]) - return flavors - else: - logger.info("no connection") - return [] + flavors: list[Flavor] = self.openstack_connection.list_flavors(get_extra=True) + logger.info([flav["name"] for flav in flavors]) + return flavors def get_servers_by_bibigrid_id(self, bibigrid_id: str) -> list[Server]: logger.info(f"Get Servery by Bibigrid id: {bibigrid_id}") @@ -477,9 +483,9 @@ def get_active_image_by_os_version(self, os_version: str, os_distro: str) -> Ima image_os_distro = metadata.get("os_distro", None) base_image_ref = metadata.get("base_image_ref", None) if ( - os_version == image_os_version - and image.status == "active" - and base_image_ref is None + os_version == image_os_version + and image.status == "active" + and base_image_ref is None ): if os_distro and os_distro == image_os_distro: return image @@ -491,11 +497,11 @@ def get_active_image_by_os_version(self, os_version: str, os_distro: str) -> Ima ) def get_image( - self, - name_or_id: str, - replace_inactive: bool = False, - ignore_not_active: bool = False, - ignore_not_found: bool = False, + self, + name_or_id: str, + replace_inactive: bool = False, + ignore_not_active: bool = False, + ignore_not_found: bool = False, ) -> Image: logger.info(f"Get Image {name_or_id}") @@ -519,12 +525,12 @@ def get_image( return image def create_snapshot( - self, - openstack_id: str, - name: str, - username: str, - base_tags: list[str], - description: str, + self, + openstack_id: str, + name: str, + username: str, + base_tags: list[str], + description: str, ) -> str: logger.info( f"Create Snapshot from Instance {openstack_id} with name {name} for {username}" @@ -564,58 +570,44 @@ def delete_image(self, image_id: str) -> None: def get_public_images(self) -> list[Image]: logger.info("Get public images") - if self.openstack_connection: - # Use compute.images() method with filters and extra_info - images = self.openstack_connection.image.images( - status="active", visibility="public" - ) - # Use list comprehension to filter images based on tags - images = [ - image for image in images if "tags" in image and len(image["tags"]) > 0 - ] - image_names = [image.name for image in images] - logger.info(f"Found public images - {image_names}") + # Use compute.images() method with filters and extra_info + images = self.openstack_connection.image.images( + status="active", visibility="public" + ) + # Use list comprehension to filter images based on tags + images = [ + image for image in images if "tags" in image and len(image["tags"]) > 0 + ] + image_names = [image.name for image in images] + logger.info(f"Found public images - {image_names}") - return images - - else: - logger.info("no connection") - return [] + return images def get_private_images(self) -> list[Image]: logger.info("Get private images") - if self.openstack_connection: - # Use compute.images() method with filters and extra_info - images = self.openstack_connection.image.images( - status="active", visibility="private" - ) - # Use list comprehension to filter images based on tags - images = [ - image for image in images if "tags" in image and len(image["tags"]) > 0 - ] - image_names = [image.name for image in images] - logger.info(f"Found private images - {image_names}") + # Use compute.images() method with filters and extra_info + images = self.openstack_connection.image.images( + status="active", visibility="private" + ) + # Use list comprehension to filter images based on tags + images = [ + image for image in images if "tags" in image and len(image["tags"]) > 0 + ] + image_names = [image.name for image in images] + logger.info(f"Found private images - {image_names}") - return images - else: - logger.info("no connection") - return [] + return images def get_images(self) -> list[Image]: logger.info("Get Images") - if self.openstack_connection: - images = self.openstack_connection.image.images(status="active") - images = [ - image for image in images if "tags" in image and len(image["tags"]) > 0 - ] - image_names = [image.name for image in images] - - logger.info(f"Found images - {image_names}") + images = self.openstack_connection.image.images(status="active") + images = [ + image for image in images if "tags" in image and len(image["tags"]) > 0 + ] + image_names = [image.name for image in images] - return images - else: - logger.info("no connection") - return [] + logger.info(f"Found images - {image_names}") + return images def get_calculation_values(self) -> dict[str, str]: logger.info("Get Client Calculation Values") @@ -636,9 +628,9 @@ def get_gateway_ip(self) -> dict[str, str]: return {"gateway_ip": self.GATEWAY_IP} def create_mount_init_script( - self, - new_volumes: list[dict[str, str]] = None, # type: ignore - attach_volumes: list[dict[str, str]] = None, # type: ignore + self, + new_volumes: list[dict[str, str]] = None, # type: ignore + attach_volumes: list[dict[str, str]] = None, # type: ignore ) -> str: logger.info(f"Create init script for volume ids:{new_volumes}") if not new_volumes and not attach_volumes: @@ -701,11 +693,12 @@ def create_or_get_default_ssh_security_group(self): if not sec: logger.info("Default SimpleVM SSH Security group not found... Creating") - self.create_security_group( + sec = self.create_security_group( name=self.DEFAULT_SECURITY_GROUP_NAME, ssh=True, description="Default SSH SimpleVM Security Group", ) + return sec def delete_security_group_rule(self, openstack_id): logger.info(f"Delete Security Group Rule -- {openstack_id}") @@ -719,15 +712,10 @@ def delete_security_group_rule(self, openstack_id): ) def open_port_range_for_vm_in_project( - self, range_start, range_stop, openstack_id, ethertype="IPV4", protocol="TCP" + self, range_start, range_stop, openstack_id, ethertype="IPv4", protocol="TCP" ): - server: Server = self.openstack_connection.get_server_by_id(id=openstack_id) - if server is None: - logger.exception(f"Instance {openstack_id} not found") - raise ServerNotFoundException( - message=f"Instance {openstack_id} not found", - name_or_id=openstack_id, - ) + server: Server = self.get_server(openstack_id=openstack_id) + project_name = server.metadata.get("project_name") project_id = server.metadata.get("project_id") @@ -768,13 +756,13 @@ def open_port_range_for_vm_in_project( raise OpenStackConflictException(message=e.message) def create_security_group( - self, - name: str, - udp_port: int = None, # type: ignore - ssh: bool = True, - udp: bool = False, - description: str = "", - research_environment_metadata: ResearchEnvironmentMetadata = None, + self, + name: str, + udp_port: int = None, # type: ignore + ssh: bool = True, + udp: bool = False, + description: str = "", + research_environment_metadata: ResearchEnvironmentMetadata = None, ) -> SecurityGroup: logger.info(f"Create new security group {name}") sec: SecurityGroup = self.openstack_connection.get_security_group( @@ -832,6 +820,8 @@ def create_security_group( remote_group_id=self.GATEWAY_SECURITY_GROUP_ID, ) if research_environment_metadata: + logger.info(f"Add research env rule to security group {name}") + self.openstack_connection.network.create_security_group_rule( direction=research_environment_metadata.direction, protocol=research_environment_metadata.protocol, @@ -881,28 +871,29 @@ def is_security_group_in_use(self, security_group_id): return False def get_or_create_research_environment_security_group( - self, resenv_metadata: ResearchEnvironmentMetadata + self, resenv_metadata: ResearchEnvironmentMetadata ): if not resenv_metadata.needs_forc_support: return None logger.info( - f"Check if Security Group for resenv - {resenv_metadata.security_group_name} exists... " + f"Check if Security Group for resenv - {resenv_metadata.securitygroup_name} exists... " ) sec = self.openstack_connection.get_security_group( - name_or_id=resenv_metadata.security_group_name + name_or_id=resenv_metadata.securitygroup_name ) if sec: logger.info( - f"Security group {resenv_metadata.security_group_name} already exists." + f"Security group {resenv_metadata.securitygroup_name} already exists." ) return sec["id"] logger.info( - f"No security Group for {resenv_metadata.security_group_name} exists. Creating.. " + f"No security Group for {resenv_metadata.securitygroup_name} exists. Creating.. " ) new_security_group = self.openstack_connection.create_security_group( - name=resenv_metadata.security_group_name, description=resenv_metadata.name + name=resenv_metadata.securitygroup_name, + description=resenv_metadata.description, ) self.openstack_connection.network.create_security_group_rule( direction=resenv_metadata.direction, @@ -958,8 +949,7 @@ def get_or_create_project_security_group(self, project_name, project_id): def get_limits(self) -> dict[str, str]: logger.info("Get Limits") - limits = {} - limits.update(self.openstack_connection.get_compute_limits()) + limits = self.openstack_connection.get_compute_limits() limits.update(self.openstack_connection.get_volume_limits()["absolute"]) return { @@ -969,10 +959,10 @@ def get_limits(self) -> dict[str, str]: "current_used_cores": str(limits["total_cores_used"]), "current_used_vms": str(limits["total_instances_used"]), "current_used_ram": str(math.ceil(limits["total_ram_used"] / 1024)), - "volume_counter_limit": str(limits["maxTotalVolumes"]), - "volume_storage_limit": str(limits["maxTotalVolumeGigabytes"]), - "current_used_volumes": str(limits["totalVolumesUsed"]), - "current_used_volume_storage": str(limits["totalGigabytesUsed"]), + "volume_counter_limit": str(limits["max_total_volumes"]), + "volume_storage_limit": str(limits["max_total_volume_gigabytes"]), + "current_used_volumes": str(limits["total_volumes_used"]), + "current_used_volume_storage": str(limits["total_gigabytes_used"]), } def exist_server(self, name: str) -> bool: @@ -984,13 +974,7 @@ def exist_server(self, name: str) -> bool: def set_server_metadata(self, openstack_id: str, metadata) -> None: try: logger.info(f"Set Server Metadata: {openstack_id} --> {metadata}") - server: Server = self.openstack_connection.get_server_by_id(id=openstack_id) - if server is None: - logger.exception(f"Instance {openstack_id} not found") - raise ServerNotFoundException( - message=f"Instance {openstack_id} not found", - name_or_id=openstack_id, - ) + server: Server = self.get_server(openstack_id) self.openstack_connection.compute.set_server_metadata(server, metadata) except OpenStackCloudException as e: raise DefaultException( @@ -1008,17 +992,7 @@ def get_server(self, openstack_id: str) -> Server: name_or_id=openstack_id, ) if server.vm_state == VmStates.ACTIVE.value: - fixed_ip = server.private_v4 - base_port = int(fixed_ip.split(".")[-1]) # noqa F841 - subnet_port = int(fixed_ip.split(".")[-2]) # noqa F841 - - x = sympy.symbols("x") - y = sympy.symbols("y") - ssh_port = int( - sympy.sympify(self.SSH_PORT_CALCULATION).evalf( - subs={x: base_port, y: subnet_port} - ) - ) + ssh_port, udp_port = self._calculate_vm_ports(server=server) if not self.netcat(host=self.GATEWAY_IP, port=ssh_port): server.task_state = VmTaskStates.CHECKING_SSH_CONNECTION.value @@ -1041,12 +1015,6 @@ def resume_server(self, openstack_id: str) -> None: logger.info(f"Resume Server {openstack_id}") try: server = self.get_server(openstack_id=openstack_id) - if server is None: - logger.exception(f"Instance {openstack_id} not found") - raise ServerNotFoundException( - message=f"Instance {openstack_id} not found", - name_or_id=openstack_id, - ) self.openstack_connection.compute.start_server(server) except ConflictException as e: @@ -1073,23 +1041,47 @@ def stop_server(self, openstack_id: str) -> None: logger.info(f"Stop Server {openstack_id}") server = self.get_server(openstack_id=openstack_id) try: - if server is None: - raise ServerNotFoundException( - message=f"Instance {openstack_id} not found", - name_or_id=openstack_id, - ) - self.openstack_connection.compute.stop_server(server) except ConflictException as e: logger.exception(f"Stop Server {openstack_id} failed!") raise OpenStackConflictException(message=e.message) + def _remove_security_groups_from_server(self, server: Server) -> None: + security_groups = server.security_groups + + if security_groups is not None: + for sg in security_groups: + sec = self.openstack_connection.get_security_group( + name_or_id=sg["name"] + ) + logger.info(f"Remove security group {sec.id} from server {server.id}") + self.openstack_connection.compute.remove_security_group_from_server( + server=server, security_group=sec + ) + + if ( + sg["name"] != self.DEFAULT_SECURITY_GROUP_NAME + and ("bibigrid" not in sec.name or "master" not in server.name) + and not self.is_security_group_in_use(security_group_id=sec.id) + ): + logger.info(f"Delete security group {sec}") + + self.openstack_connection.delete_security_group(sec) + + def _validate_server_for_deletion(self, server: Server) -> None: + task_state = server.task_state + if task_state in [ + "image_snapshot", + "image_pending_upload", + "image_uploading", + ]: + raise ConflictException("task_state in image creating") + def delete_server(self, openstack_id: str) -> None: logger.info(f"Delete Server {openstack_id}") try: - server = self.get_server(openstack_id=openstack_id) - + server: Server = self.get_server(openstack_id=openstack_id) if not server: logger.error(f"Instance {openstack_id} not found") raise ServerNotFoundException( @@ -1097,29 +1089,8 @@ def delete_server(self, openstack_id: str) -> None: name_or_id=openstack_id, ) - task_state = server.get("task_state", None) - if task_state in [ - "image_snapshot", - "image_pending_upload", - "image_uploading", - ]: - raise ConflictException("task_state in image creating") - security_groups = server["security_groups"] - if security_groups is not None: - for sg in security_groups: - sec = self.openstack_connection.get_security_group( - name_or_id=sg["name"] - ) - logger.info(f"Delete security group {sec}") - self.openstack_connection.compute.remove_security_group_from_server( - server=server, security_group=sec - ) - if ( - sg["name"] != self.DEFAULT_SECURITY_GROUP_NAME - and ("bibigrid" not in sec.name or "master" not in server.name) - and not self.is_security_group_in_use(security_group_id=sec.id) - ): - self.openstack_connection.delete_security_group(sg) + self._validate_server_for_deletion(server=server) + self._remove_security_groups_from_server(server=server) self.openstack_connection.compute.delete_server(server.id, force=True) except ConflictException as e: @@ -1127,14 +1098,8 @@ def delete_server(self, openstack_id: str) -> None: raise OpenStackConflictException(message=e.message) - def get_vm_ports(self, openstack_id: str) -> dict[str, str]: - logger.info(f"Get IP and PORT for server {openstack_id}") - server = self.get_server(openstack_id=openstack_id) - if not server: - raise ServerNotFoundException( - message=f"Server {openstack_id} not found!", name_or_id=openstack_id - ) - fixed_ip = server["private_v4"] + def _calculate_vm_ports(self, server: Server): + fixed_ip = server.private_v4 base_port = int(fixed_ip.split(".")[-1]) # noqa F841 subnet_port = int(fixed_ip.split(".")[-2]) # noqa F841 @@ -1150,16 +1115,21 @@ def get_vm_ports(self, openstack_id: str) -> dict[str, str]: subs={x: base_port, y: subnet_port} ) ) + return ssh_port, udp_port + + def get_vm_ports(self, openstack_id: str) -> dict[str, str]: + logger.info(f"Get IP and PORT for server {openstack_id}") + server = self.get_server(openstack_id=openstack_id) + ssh_port, udp_port = self._calculate_vm_ports(server=server) return {"port": str(ssh_port), "udp": str(udp_port)} def create_userdata( - self, - volume_ids_path_new: list[dict[str, str]], - volume_ids_path_attach: list[dict[str, str]], - additional_keys: list[str], + self, + volume_ids_path_new: list[dict[str, str]], + volume_ids_path_attach: list[dict[str, str]], + additional_keys: list[str], ) -> str: - unlock_ubuntu_user_script = "#!/bin/bash\npasswd -u ubuntu\n" unlock_ubuntu_user_script_encoded = encodeutils.safe_encode( unlock_ubuntu_user_script.encode("utf-8") @@ -1169,9 +1139,9 @@ def create_userdata( if additional_keys: add_key_script = self.create_add_keys_script(keys=additional_keys) init_script = ( - add_key_script - + encodeutils.safe_encode("\n".encode("utf-8")) - + init_script + add_key_script + + encodeutils.safe_encode("\n".encode("utf-8")) + + init_script ) if volume_ids_path_new or volume_ids_path_attach: mount_script = self.create_mount_init_script( @@ -1179,26 +1149,25 @@ def create_userdata( attach_volumes=volume_ids_path_attach, ) init_script = ( - init_script - + encodeutils.safe_encode("\n".encode("utf-8")) - + mount_script - + init_script + + encodeutils.safe_encode("\n".encode("utf-8")) + + mount_script ) return init_script def start_server( - self, - flavor_name: str, - image_name: str, - servername: str, - metadata: dict[str, str], - public_key: str, - research_environment_metadata: Union[ResearchEnvironmentMetadata, None] = None, - volume_ids_path_new: Union[list[dict[str, str]], None] = None, - volume_ids_path_attach: Union[list[dict[str, str]], None] = None, - additional_keys: Union[list[str], None] = None, - additional_security_group_ids: Union[list[str], None] = None, + self, + flavor_name: str, + image_name: str, + servername: str, + metadata: dict[str, str], + public_key: str, + research_environment_metadata: Union[ResearchEnvironmentMetadata, None] = None, + volume_ids_path_new: Union[list[dict[str, str]], None] = None, + volume_ids_path_attach: Union[list[dict[str, str]], None] = None, + additional_keys: Union[list[str], None] = None, + additional_security_group_ids: Union[list[str], None] = None, ) -> str: logger.info(f"Start Server {servername}") @@ -1209,46 +1178,22 @@ def start_server( network: Network = self.get_network() key_name = f"{servername}_{metadata['project_name']}" logger.info(f"Key name {key_name}") - security_groups = self._get_default_security_groups() - if research_environment_metadata: - security_groups.append( - self.get_or_create_research_environment_security_group( - resenv_metadata=research_environment_metadata - ) - ) project_name = metadata.get("project_name") project_id = metadata.get("project_id") - if project_name and project_id: - security_groups.append( - self.get_or_create_project_security_group( - project_name=project_name, project_id=project_id - ) - ) - if additional_security_group_ids: - for security_id in additional_security_group_ids: - sec = self.openstack_connection.get_security_group( - name_or_id=security_id - ) - if sec: - security_groups.append(sec["id"]) + security_groups = self._get_security_groups_starting_machine( + additional_security_group_ids=additional_security_group_ids, + project_name=project_name, + project_id=project_id, + research_environment_metadata=research_environment_metadata, + ) + public_key = urllib.parse.unquote(public_key) self.import_keypair(key_name, public_key) - volume_ids = [] - volumes = [] - if volume_ids_path_new: - volume_ids.extend([vol["openstack_id"] for vol in volume_ids_path_new]) - if volume_ids_path_attach: - volume_ids.extend( - [vol["openstack_id"] for vol in volume_ids_path_attach] - ) - logger.info(f"volume ids {volume_ids}") - for volume_id in volume_ids: - try: - volumes.append(self.get_volume(name_or_id=volume_id)) - except VolumeNotFoundException: - logger.error( - f"Could not find volume: {volume_id} - attaching to server {servername} won't work!" - ) + volumes = self._get_volumes_machines_start( + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + ) + init_script = self.create_userdata( volume_ids_path_new=volume_ids_path_new, volume_ids_path_attach=volume_ids_path_attach, @@ -1276,23 +1221,32 @@ def start_server( if key_name: self.delete_keypair(key_name=key_name) - logger.exception(f"Start Server {servername} error:{e}") + logger.exception(f"Start Server {servername} error") raise DefaultException(message=str(e)) - def start_server_with_playbook( - self, - flavor_name: str, - image_name: str, - servername: str, - metadata: dict[str, str], - research_environment_metadata: ResearchEnvironmentMetadata, - volume_ids_path_new: list[dict[str, str]] = None, # type: ignore - volume_ids_path_attach: list[dict[str, str]] = None, # type: ignore - additional_keys: list[str] = None, # type: ignore - additional_security_group_ids=None, # type: ignore - ) -> tuple[str, str]: - logger.info(f"Start Server {servername}") - + def _get_volumes_machines_start( + self, + volume_ids_path_new: list[dict[str, str]] = None, + volume_ids_path_attach: list[dict[str, str]] = None, + ) -> list[Volume]: + volume_ids = [] + volumes = [] + if volume_ids_path_new: + volume_ids.extend([vol["openstack_id"] for vol in volume_ids_path_new]) + if volume_ids_path_attach: + volume_ids.extend([vol["openstack_id"] for vol in volume_ids_path_attach]) + logger.info(f"volume ids {volume_ids}") + for volume_id in volume_ids: + volumes.append(self.openstack_connection.get_volume(name_or_id=volume_id)) + return volumes + + def _get_security_groups_starting_machine( + self, + additional_security_group_ids: Union[list[str], None] = None, + project_name: Union[str, None] = None, + project_id: Union[str, None] = None, + research_environment_metadata: Union[ResearchEnvironmentMetadata, None] = None, + ) -> list[str]: security_groups = self._get_default_security_groups() if research_environment_metadata: security_groups.append( @@ -1300,8 +1254,6 @@ def start_server_with_playbook( resenv_metadata=research_environment_metadata ) ) - project_name = metadata.get("project_name") - project_id = metadata.get("project_id") if project_name and project_id: security_groups.append( self.get_or_create_project_security_group( @@ -1315,7 +1267,31 @@ def start_server_with_playbook( ) if sec: security_groups.append(sec["id"]) - key_name = "" + return security_groups + + def start_server_with_playbook( + self, + flavor_name: str, + image_name: str, + servername: str, + metadata: dict[str, str], + research_environment_metadata: ResearchEnvironmentMetadata, + volume_ids_path_new: list[dict[str, str]] = None, # type: ignore + volume_ids_path_attach: list[dict[str, str]] = None, # type: ignore + additional_keys: list[str] = None, # type: ignore + additional_security_group_ids=None, # type: ignore + ) -> tuple[str, str]: + logger.info(f"Start Server {servername}") + + project_name = metadata.get("project_name") + project_id = metadata.get("project_id") + security_groups = self._get_security_groups_starting_machine( + additional_security_group_ids=additional_security_group_ids, + project_name=project_name, + project_id=project_id, + research_environment_metadata=research_environment_metadata, + ) + key_name = None try: image: Image = self.get_image(name_or_id=image_name) flavor: Flavor = self.get_flavor(name_or_id=flavor_name) @@ -1324,22 +1300,15 @@ def start_server_with_playbook( key_creation: Keypair = self.openstack_connection.create_keypair( name=servername ) + key_name = key_creation.name private_key = key_creation.private_key - volume_ids = [] - volumes = [] - if volume_ids_path_new: - volume_ids.extend([vol["openstack_id"] for vol in volume_ids_path_new]) - if volume_ids_path_attach: - volume_ids.extend( - [vol["openstack_id"] for vol in volume_ids_path_attach] - ) - logger.info(f"volume ids {volume_ids}") - for volume_id in volume_ids: - volumes.append( - self.openstack_connection.get_volume(name_or_id=volume_id) - ) + volumes = self._get_volumes_machines_start( + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + ) + init_script = self.create_userdata( volume_ids_path_new=volume_ids_path_new, volume_ids_path_attach=volume_ids_path_attach, @@ -1366,7 +1335,7 @@ def start_server_with_playbook( if key_name: self.delete_keypair(key_name=key_name) - logger.exception(f"Start Server {servername} error:{e}") + logger.exception(f"Start Server {servername} error") raise DefaultException(message=str(e)) def create_deactivate_update_script(self) -> str: @@ -1382,27 +1351,23 @@ def create_deactivate_update_script(self) -> str: def add_udp_security_group(self, server_id): logger.info(f"Setting up UDP security group for {server_id}") server = self.get_server(openstack_id=server_id) - sec = self.openstack_connection.get_security_group( - name_or_id=server.name + "_udp" - ) - if sec: - logger.info( - f"UDP Security group with name {server.name + '_udp'} already exists." - ) + sec_name = server.name + "_udp" + existing_sec = self.openstack_connection.get_security_group(name_or_id=sec_name) + if existing_sec: + logger.info(f"UDP Security group with name {sec_name} already exists.") server_security_groups = ( self.openstack_connection.list_server_security_groups(server) ) + for sg in server_security_groups: - if sg["name"] == server.name + "_udp": + if sg["name"] == sec_name: logger.info( - "UDP Security group with name {} already added to server.".format( - server.name + "_udp" - ) + f"UDP Security group with name {sec_name} already added to server." ) return self.openstack_connection.compute.add_security_group_to_server( - server=server_id, security_group=sec + server=server_id, security_group=existing_sec ) return @@ -1410,14 +1375,13 @@ def add_udp_security_group(self, server_id): udp_port = vm_ports["udp"] security_group = self.create_security_group( - name=server.name + "_udp", + name=sec_name, udp_port=int(udp_port), udp=True, ssh=False, description="UDP", ) - logger.info(security_group) - logger.info(f"Add security group {security_group.id} to server {server_id} ") + logger.info(f"Add security group {security_group.id} to server {server_id}") self.openstack_connection.compute.add_security_group_to_server( server=server_id, security_group=security_group ) @@ -1425,16 +1389,16 @@ def add_udp_security_group(self, server_id): return def add_cluster_machine( - self, - cluster_id: str, - cluster_user: str, - cluster_group_id: list[str], - image_name: str, - flavor_name: str, - name: str, - key_name: str, - batch_idx: int, - worker_idx: int, + self, + cluster_id: str, + cluster_user: str, + cluster_group_id: list[str], + image_name: str, + flavor_name: str, + name: str, + key_name: str, + batch_idx: int, + worker_idx: int, ) -> str: logger.info(f"Add machine to {cluster_id}") image: Image = self.get_image(name_or_id=image_name, replace_inactive=True) diff --git a/simple_vm_client/scripts/bash/add_keys_to_authorized.sh b/simple_vm_client/scripts/bash/add_keys_to_authorized.sh index df6d9943..254b0f62 100644 --- a/simple_vm_client/scripts/bash/add_keys_to_authorized.sh +++ b/simple_vm_client/scripts/bash/add_keys_to_authorized.sh @@ -5,4 +5,4 @@ for ix in ${!keys_to_add[*]} do printf "\n%s" "${keys_to_add[$ix]}" >> /home/ubuntu/.ssh/authorized_keys -done +done \ No newline at end of file diff --git a/simple_vm_client/test_openstack_connector.py b/simple_vm_client/test_openstack_connector.py new file mode 100644 index 00000000..fd4edb4b --- /dev/null +++ b/simple_vm_client/test_openstack_connector.py @@ -0,0 +1,2952 @@ +import os +import random +import socket +import tempfile +import unittest +from unittest import mock +from unittest.mock import MagicMock, call, patch + +from openstack.block_storage.v3 import volume +from openstack.block_storage.v3.limits import Limit +from openstack.block_storage.v3.volume import Volume +from openstack.cloud import OpenStackCloudException +from openstack.compute.v2 import flavor, keypair, limits, server +from openstack.compute.v2.server import Server +from openstack.exceptions import ConflictException, ResourceFailure, ResourceNotFound +from openstack.image.v2 import image +from openstack.image.v2 import image as image_module +from openstack.network.v2 import security_group, security_group_rule +from openstack.network.v2.network import Network +from openstack.test import fakes +from oslo_utils import encodeutils + +from simple_vm_client.forc_connector.template.template import ( + ResearchEnvironmentMetadata, +) +from simple_vm_client.util.state_enums import VmStates, VmTaskStates + +from .openstack_connector.openstack_connector import OpenStackConnector +from .ttypes import ( + DefaultException, + FlavorNotFoundException, + ImageNotFoundException, + OpenStackConflictException, + ResourceNotAvailableException, + ServerNotFoundException, + SnapshotNotFoundException, + VolumeNotFoundException, +) + +METADATA_EXAMPLE_NO_FORC = ResearchEnvironmentMetadata( + template_name="example_template", + port="8080", + wiki_link="https://example.com/wiki", + description="Example template for testing", + title="Example Template", + community_driven=True, + logo_url="https://example.com/logo.png", + info_url="https://example.com/info", + securitygroup_name="example_group", + securitygroup_description="Example security group", + securitygroup_ssh=True, + direction="inbound", + protocol="tcp", + information_for_display="Some information", + needs_forc_support=False, + min_ram=2, + min_cores=1, + is_maintained=True, + forc_versions=["1.0.0", "2.0.0"], + incompatible_versions=["3.0.0"], +) + +METADATA_EXAMPLE = ResearchEnvironmentMetadata( + template_name="example_template", + port="8080", + wiki_link="https://example.com/wiki", + description="Example template for testing", + title="Example Template", + community_driven=True, + logo_url="https://example.com/logo.png", + info_url="https://example.com/info", + securitygroup_name="example_group", + securitygroup_description="Example security group", + securitygroup_ssh=True, + direction="inbound", + protocol="tcp", + information_for_display="Some information", + needs_forc_support=True, + min_ram=2, + min_cores=1, + is_maintained=True, + forc_versions=["1.0.0", "2.0.0"], + incompatible_versions=["3.0.0"], +) +EXPECTED_IMAGE = image_module.Image( + id="image_id_2", + status="active", + name="image_2", + metadata={"os_version": "22.04", "os_distro": "ubuntu"}, + tags=["portalclient"], +) +INACTIVE_IMAGE = image_module.Image( + id="image_inactive", + status="building", + name="image_inactive", + metadata={"os_version": "22.04", "os_distro": "ubuntu"}, + tags=["portalclient"], +) + +IMAGES = [ + image_module.Image( + id="image_id_1", + status="inactive", + name="image_1", + metadata={"os_version": "22.04", "os_distro": "ubuntu"}, + tags=["portalclient"], + ), + EXPECTED_IMAGE, + image_module.Image( + id="image_id_3", + status="active", + name="image_3", + metadata={"os_version": "22.04", "os_distro": "centos"}, + tags=["portalclient"], + ), + INACTIVE_IMAGE, +] +PORT_CALCULATION = "30000 + x + y * 256" +DEFAULT_SECURITY_GROUPS = ["defaultSimpleVM"] +CONFIG_DATA = f""" + openstack: + gateway_ip: "192.168.1.1" + network: "my_network" + sub_network: "my_sub_network" + cloud_site: "my_cloud_site" + ssh_port_calculation: {PORT_CALCULATION} + udp_port_calculation: {PORT_CALCULATION} + gateway_security_group_id: "security_group_id" + production: true + forc: + forc_security_group_id: "forc_security_group_id" + """ + + +class TestOpenStackConnector(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.env_patcher = mock.patch.dict( + os.environ, + { + "OS_AUTH_URL": "https://example.com", + "OS_USERNAME": "username", + "OS_PASSWORD": "password", + "OS_PROJECT_NAME": "project_name", + "OS_PROJECT_ID": "project_id", + "OS_USER_DOMAIN_NAME": "user_domain", + "OS_PROJECT_DOMAIN_ID": "project_domain_id", + "USE_APPLICATION_CREDENTIALS": "False", + }, + ) + cls.env_patcher.start() + + super().setUpClass() + + @classmethod + def tearDownClass(cls): + super().tearDownClass() + + cls.env_patcher.stop() + + def setUp(self): + # Create an instance of YourClass with a mocked openstack_connection + self.mock_openstack_connection = MagicMock() + with patch.object(OpenStackConnector, "__init__", lambda x, y, z: None): + self.openstack_connector = OpenStackConnector(None, None) + self.openstack_connector.openstack_connection = ( + self.mock_openstack_connection + ) + self.openstack_connector.DEFAULT_SECURITY_GROUPS = DEFAULT_SECURITY_GROUPS + self.openstack_connector.DEACTIVATE_UPGRADES_SCRIPT = ( + self.openstack_connector.create_deactivate_update_script() + ) + self.openstack_connector.GATEWAY_SECURITY_GROUP_ID = ( + "dedasdasdasdadew1231231" + ) + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + + # Call the load_config_yml method with the temporary file path + self.openstack_connector.load_config_yml(temp_file.name) + + # Assert that the configuration attributes are set correctly + + def init_openstack_connector(self): + with patch.object(OpenStackConnector, "__init__", lambda x, y, z: None): + openstack_connector = OpenStackConnector(None, None) + openstack_connector.openstack_connection = self.mock_openstack_connection + openstack_connector.DEFAULT_SECURITY_GROUPS = DEFAULT_SECURITY_GROUPS + + return openstack_connector + + def test_load_config_yml(self): + # Create a temporary YAML file with sample configuration + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + + # Call the load_config_yml method with the temporary file path + self.openstack_connector.load_config_yml(temp_file.name) + os.remove(temp_file.name) + # Assert that the configuration attributes are set correctly + self.assertEqual(self.openstack_connector.GATEWAY_IP, "192.168.1.1") + self.assertEqual(self.openstack_connector.NETWORK, "my_network") + self.assertEqual(self.openstack_connector.SUB_NETWORK, "my_sub_network") + self.assertTrue(self.openstack_connector.PRODUCTION) + self.assertEqual(self.openstack_connector.CLOUD_SITE, "my_cloud_site") + self.assertEqual( + self.openstack_connector.SSH_PORT_CALCULATION, PORT_CALCULATION + ) + self.assertEqual( + self.openstack_connector.UDP_PORT_CALCULATION, PORT_CALCULATION + ) + self.assertEqual( + self.openstack_connector.FORC_SECURITY_GROUP_ID, "forc_security_group_id" + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger") + def test_load_env_config_username_password(self, mock_logger): + openstack_connector = self.init_openstack_connector() + + # Call the load_env_config method + openstack_connector.load_env_config() + + # Assert that attributes are set correctly + self.assertEqual(openstack_connector.AUTH_URL, "https://example.com") + self.assertFalse(openstack_connector.USE_APPLICATION_CREDENTIALS) + self.assertEqual(openstack_connector.USERNAME, "username") + self.assertEqual(openstack_connector.PASSWORD, "password") + self.assertEqual(openstack_connector.PROJECT_NAME, "project_name") + self.assertEqual(openstack_connector.PROJECT_ID, "project_id") + self.assertEqual(openstack_connector.USER_DOMAIN_NAME, "user_domain") + self.assertEqual(openstack_connector.PROJECT_DOMAIN_ID, "project_domain_id") + + # Assert that logger.info was called with the expected message + mock_logger.info.assert_called_once_with("Load environment config: OpenStack") + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger") + @patch.dict( + os.environ, + { + "OS_AUTH_URL": "https://example.com", + "USE_APPLICATION_CREDENTIALS": "True", + "OS_APPLICATION_CREDENTIAL_ID": "app_cred_id", + "OS_APPLICATION_CREDENTIAL_SECRET": "app_cred_secret", + }, + ) + def test_load_env_config_application_credentials(self, mock_logger): + # Create an instance of OpenStackConnector + openstack_connector = self.init_openstack_connector() + + # Call the load_env_config method + openstack_connector.load_env_config() + + # Assert that attributes are set correctly for application credentials + self.assertEqual(openstack_connector.AUTH_URL, "https://example.com") + self.assertTrue(openstack_connector.USE_APPLICATION_CREDENTIALS) + self.assertEqual(openstack_connector.APPLICATION_CREDENTIAL_ID, "app_cred_id") + self.assertEqual( + openstack_connector.APPLICATION_CREDENTIAL_SECRET, "app_cred_secret" + ) + + # Assert that logger.info was called with the expected messages + expected_calls = [ + call("Load environment config: OpenStack"), + call("APPLICATION CREDENTIALS will be used!"), + ] + mock_logger.info.assert_has_calls(expected_calls, any_order=False) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger") + @patch.dict(os.environ, {"OS_AUTH_URL": ""}) + def test_load_env_config_missing_os_auth_url(self, mock_logger): + openstack_connector = self.init_openstack_connector() + + # Mock sys.exit to capture the exit status + with patch("sys.exit") as mock_exit: + # Call the load_env_config method + openstack_connector.load_env_config() + # Assert that logger.error was called with the expected message + mock_logger.error.assert_called_once_with("OS_AUTH_URL not provided in env!") + + # Assert that sys.exit was called with status code 1 + mock_exit.assert_called_once_with(1) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger") + @patch.dict(os.environ, {"USE_APPLICATION_CREDENTIALS": "True"}) + def test_load_env_config_missing_app_cred_vars(self, mock_logger): + # Create an instance of OpenStackConnector + openstack_connector = self.init_openstack_connector() + + # Mock sys.exit to capture the exit status + with patch("sys.exit") as mock_exit: + # Call the load_env_config method + openstack_connector.load_env_config() + + # Assert that logger.error was called with the expected message + expected_error_message = "Usage of Application Credentials enabled - but OS_APPLICATION_CREDENTIAL_ID not provided in env!" + mock_logger.error.assert_called_once_with(expected_error_message) + + # Assert that sys.exit was called with status code 1 + mock_exit.assert_called_once_with(1) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger") + @patch.dict( + os.environ, + { + "USE_APPLICATION_CREDENTIALS": "False", + "OS_USERNAME": "test_username", + "OS_PASSWORD": "test_password", + "OS_PROJECT_NAME": "test_project_name", + "OS_PROJECT_ID": "test_project_id", + "OS_USER_DOMAIN_NAME": "test_user_domain", + "OS_PROJECT_DOMAIN_ID": "test_project_domain", + }, + ) + def test_load_env_config_missing_username_password_vars(self, mock_logger): + # Create an instance of OpenStackConnector using the helper method + openstack_connector = self.init_openstack_connector() + + # Remove required environment variables + del os.environ["OS_USERNAME"] + del os.environ["OS_PASSWORD"] + + # Mock sys.exit to capture the exit status + with patch("sys.exit") as mock_exit: + # Call the load_env_config method + openstack_connector.load_env_config() + + # Assert that logger.error was called with the expected message + expected_error_message = "Usage of Username/Password enabled - but keys OS_USERNAME, OS_PASSWORD not provided in env!" + mock_logger.error.assert_called_once_with(expected_error_message) + + # Assert that sys.exit was called with status code 1 + mock_exit.assert_called_once_with(1) + + def test_get_default_security_groups(self): + # Call the _get_default_security_groups method + default_security_groups = ( + self.openstack_connector._get_default_security_groups() + ) + + # Assert that the returned list is a copy of the DEFAULT_SECURITY_GROUPS attribute + self.assertEqual( + default_security_groups, self.openstack_connector.DEFAULT_SECURITY_GROUPS + ) + + # Assert that modifying the returned list does not affect the DEFAULT_SECURITY_GROUPS attribute + default_security_groups.append("new_security_group") + self.assertNotEqual( + default_security_groups, self.openstack_connector.DEFAULT_SECURITY_GROUPS + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_image(self, mock_logger_info): + self.mock_openstack_connection.get_image.return_value = EXPECTED_IMAGE + result = self.openstack_connector.get_image(EXPECTED_IMAGE.id) + mock_logger_info.assert_called_once_with(f"Get Image {EXPECTED_IMAGE.id}") + self.assertEqual(result, EXPECTED_IMAGE) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_image_not_found_exception(self, mock_logger_info): + # Configure the mock_openstack_connection.get_image to return None + self.mock_openstack_connection.get_image.return_value = None + + # Configure the ImageNotFoundException to be raised + with self.assertRaises(ImageNotFoundException) as context: + # Call the method with an image ID that will not be found + self.openstack_connector.get_image("nonexistent_id", ignore_not_found=False) + mock_logger_info.assert_called_once_with("Get Image nonexistent_id") + + # Assert that the exception contains the expected message and image ID + self.assertEqual(context.exception.message, "Image nonexistent_id not found!") + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_image_not_active_exception(self, mock_logger_info): + # Configure the mock_openstack_connection.get_image to return the not active image + self.mock_openstack_connection.get_image.return_value = INACTIVE_IMAGE + # Configure the ImageNotFoundException to be raised + with self.assertRaises(ImageNotFoundException) as context: + # Call the method with the not active image ID and set ignore_not_active to False + self.openstack_connector.get_image( + name_or_id=INACTIVE_IMAGE.name, ignore_not_active=False + ) + mock_logger_info.assert_called_once_with(f"Get Image {INACTIVE_IMAGE.name}") + + # Assert that the exception contains the expected message and image ID + self.assertEqual( + context.exception.message, + f"Image {INACTIVE_IMAGE.name} found but not active!", + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_images(self, mock_logger_info): + # Configure the mock_openstack_connection.image.images to return the fake images + self.mock_openstack_connection.image.images.return_value = IMAGES + + # Call the method + result = self.openstack_connector.get_images() + mock_logger_info.assert_any_call("Get Images") + image_names = [image.name for image in IMAGES] + + mock_logger_info.assert_any_call(f"Found images - {image_names}") + + # Assert that the method returns the expected result + self.assertEqual(result, IMAGES) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_private_images(self, mock_logger_info): + # Configure the mock_openstack_connection.image.images to return the fake images + self.mock_openstack_connection.image.images.return_value = IMAGES + + # Call the method + result = self.openstack_connector.get_private_images() + mock_logger_info.assert_any_call("Get private images") + image_names = [image.name for image in IMAGES] + + mock_logger_info.assert_any_call(f"Found private images - {image_names}") + + # Assert that the method returns the expected result + self.assertEqual(result, IMAGES) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_active_image_by_os_version(self, mock_logger_info): + # Generate a set of fake images with different properties + os_version = "22.04" + + # Configure the mock_openstack_connection.list_images to return the fake images + self.mock_openstack_connection.list_images.return_value = IMAGES + + # Call the method with specific os_version and os_distro + result = self.openstack_connector.get_active_image_by_os_version( + os_version=os_version, os_distro="ubuntu" + ) + mock_logger_info.assert_called_with( + f"Get active Image by os-version: {os_version}" + ) + + # Assert that the method returns the expected image + self.assertEqual(result, EXPECTED_IMAGE) + result = self.openstack_connector.get_active_image_by_os_version( + os_version=os_version, os_distro=None + ) + self.assertEqual(result, EXPECTED_IMAGE) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_active_image_by_os_version_not_found_exception(self, mock_logger_info): + # Configure the mock_openstack_connection.list_images to return an empty list + self.mock_openstack_connection.list_images.return_value = [] + os_version = "nonexistent_version" + + # Configure the ImageNotFoundException to be raised + with self.assertRaises(ImageNotFoundException) as context: + # Call the method with an os_version and os_distro that won't find a matching image + self.openstack_connector.get_active_image_by_os_version( + os_version, "nonexistent_distro" + ) + mock_logger_info.assert_called_with( + f"Get active Image by os-version: {os_version}" + ) + + # Assert that the exception contains the expected message + self.assertEqual( + context.exception.message, + "Old Image was deactivated! No image with os_version:nonexistent_version and os_distro:nonexistent_distro found!", + ) + + def test_replace_inactive_image(self): + # Generate a fake image with status 'something other than active' + + self.mock_openstack_connection.list_images.return_value = IMAGES + + # Configure the mock_openstack_connection.get_image to return the inactive image + self.mock_openstack_connection.get_image.return_value = INACTIVE_IMAGE + + # Call the method with the inactive image ID and set replace_inactive to True + result = self.openstack_connector.get_image( + "inactive_id", replace_inactive=True + ) + + # Assert that the method returns the replacement image + self.assertEqual(result, EXPECTED_IMAGE) + + def test_get_limits(self): + compute_limits = fakes.generate_fake_resource(limits.AbsoluteLimits) + volume_limits = fakes.generate_fake_resource(Limit) + compute_copy = {} + for key in compute_limits.keys(): + compute_copy[key] = random.randint(0, 10000) + + absolute_volume = volume_limits["absolute"] + for key in absolute_volume.keys(): + volume_limits["absolute"][key] = random.randint(0, 10000) + self.openstack_connector.openstack_connection.get_compute_limits.return_value = ( + compute_copy + ) + self.openstack_connector.openstack_connection.get_volume_limits.return_value = ( + volume_limits + ) + self.openstack_connector.get_limits() + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.error") + def test_create_server(self, mock_logger_error, mock_logger_info): + # Prepare test data + name = "test_server" + image_id = "test_image_id" + flavor_id = "test_flavor_id" + network_id = "test_network_id" + userdata = "test_userdata" + key_name = "test_key" + metadata = {"key1": "value1", "key2": "value2"} + security_groups = ["group1", "group2"] + + # Mock the create_server method to return a fake server object + fake_server = Server(**{"id": "fake_server_id", "name": name}) + self.mock_openstack_connection.create_server.return_value = fake_server + + # Call the create_server method + result = self.openstack_connector.create_server( + name, + image_id, + flavor_id, + network_id, + userdata, + key_name, + metadata, + security_groups, + ) + + # Check if the method logs the correct information + mock_logger_info.assert_called_once_with( + f"Create Server:\n\tname: {name}\n\timage_id:{image_id}\n\tflavor_id:{flavor_id}\n\tmetadata:{metadata}" + ) + + # Check if the create_server method on openstack_connection was called with the expected parameters + self.mock_openstack_connection.create_server.assert_called_once_with( + name=name, + image=image_id, + flavor=flavor_id, + network=[network_id], + userdata=userdata, + key_name=key_name, + meta=metadata, + security_groups=security_groups, + ) + + # Check if the method returns the fake server object + self.assertEqual(result, fake_server) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_get_volume(self, mock_logger_exception, mock_logger_info): + # Prepare test data + name_or_id = "test_volume_id" + + # Mock the get_volume method to return a fake volume object + fake_volume = Volume(**{"id": "fake_volume_id", "name": "test_volume"}) + self.mock_openstack_connection.get_volume.return_value = fake_volume + + # Call the get_volume method + result = self.openstack_connector.get_volume(name_or_id) + + # Check if the method logs the correct information + mock_logger_info.assert_called_once_with(f"Get Volume {name_or_id}") + + # Check if the get_volume method on openstack_connection was called with the expected parameters + self.mock_openstack_connection.get_volume.assert_called_once_with( + name_or_id=name_or_id + ) + + # Check if the method returns the fake volume object + self.assertEqual(result, fake_volume) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_get_volume_exception(self, mock_logger_exception): + # Prepare test data + name_or_id = "non_existing_volume_id" + + # Mock the get_volume method to return None + self.mock_openstack_connection.get_volume.return_value = None + + # Call the get_volume method and expect a VolumeNotFoundException + with self.assertRaises( + Exception + ): # Replace Exception with the actual exception type + self.openstack_connector.get_volume(name_or_id) + + # Check if the method logs the correct exception information + mock_logger_exception.assert_called_once_with(f"No Volume with id {name_or_id}") + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_delete_volume(self, mock_logger_exception, mock_logger_info): + # Prepare test data + volume_id = "test_volume_id" + + # Mock the delete_volume method to avoid actual deletion in the test + self.mock_openstack_connection.delete_volume.side_effect = [ + None, # No exception case + ResourceNotFound( + message="Volume not found" + ), # VolumeNotFoundException case + ConflictException( + message="Delete volume failed" + ), # OpenStackCloudException case + OpenStackCloudException( + message="Some other exception" + ), # DefaultException case + ] + + # Call the delete_volume method for different scenarios + # 1. No exception + self.openstack_connector.delete_volume(volume_id) + mock_logger_info.assert_called_once_with(f"Delete Volume {volume_id}") + mock_logger_exception.assert_not_called() + + # 2. ResourceNotFound, expect VolumeNotFoundException + with self.assertRaises( + VolumeNotFoundException + ): # Replace Exception with the actual exception type + self.openstack_connector.delete_volume(volume_id) + mock_logger_exception.assert_called_with(f"No Volume with id {volume_id}") + + # 3. ConflictException, expect OpenStackCloudException + with self.assertRaises( + OpenStackCloudException + ): # Replace Exception with the actual exception type + self.openstack_connector.delete_volume(volume_id) + mock_logger_exception.assert_called_with(f"Delete volume: {volume_id}) failed!") + + # 4. OpenStackCloudException, expect DefaultException + with self.assertRaises( + DefaultException + ): # Replace Exception with the actual exception type + self.openstack_connector.delete_volume(volume_id) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.error") + def test_create_volume_snapshot(self, mock_logger_error, mock_logger_info): + # Prepare test data + volume_id = "test_volume_id" + snapshot_name = "test_snapshot" + snapshot_description = "Test snapshot description" + + # Mock the create_volume_snapshot method to avoid actual creation in the test + self.mock_openstack_connection.create_volume_snapshot.side_effect = [ + {"id": "snapshot_id"}, # No exception case + ResourceNotFound( + message="Volume not found" + ), # VolumeNotFoundException case + OpenStackCloudException( + message="Some other exception" + ), # DefaultException case + ] + + # Call the create_volume_snapshot method for different scenarios + # 1. No exception + snapshot_id = self.openstack_connector.create_volume_snapshot( + volume_id, snapshot_name, snapshot_description + ) + self.assertEqual(snapshot_id, "snapshot_id") + mock_logger_info.assert_called_once_with( + f"Create Snapshot for Volume {volume_id}" + ) + + # 2. ResourceNotFound, expect VolumeNotFoundException + with self.assertRaises(VolumeNotFoundException): + self.openstack_connector.create_volume_snapshot( + volume_id, snapshot_name, snapshot_description + ) + mock_logger_error.assert_called_with(f"No Volume with id {volume_id}") + + # 3. OpenStackCloudException, expect DefaultException + with self.assertRaises(DefaultException): + self.openstack_connector.create_volume_snapshot( + volume_id, snapshot_name, snapshot_description + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_get_volume_snapshot(self, mock_logger_exception, mock_logger_info): + # Prepare test data + snapshot_id = "test_snapshot_id" + + # Mock the get_volume_snapshot method to avoid actual retrieval in the test + self.mock_openstack_connection.get_volume_snapshot.side_effect = [ + {"id": snapshot_id}, # No exception case + None, # VolumeNotFoundException case + ] + + # Call the get_volume_snapshot method for different scenarios + # 1. No exception + snapshot = self.openstack_connector.get_volume_snapshot(snapshot_id) + self.assertEqual(snapshot["id"], snapshot_id) + mock_logger_info.assert_called_once_with(f"Get volume Snapshot {snapshot_id}") + + # 2. None returned, expect VolumeNotFoundException + with self.assertRaises(VolumeNotFoundException): + self.openstack_connector.get_volume_snapshot(snapshot_id) + mock_logger_exception.assert_called_with( + f"No volume Snapshot with id {snapshot_id}" + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_delete_volume_snapshot(self, mock_logger_exception, mock_logger_info): + # Prepare test data + snapshot_id = "test_snapshot_id" + + # Mock the delete_volume_snapshot method to avoid actual deletion in the test + self.mock_openstack_connection.delete_volume_snapshot.side_effect = [ + None, # No exception case + ResourceNotFound( + message="Snapshot not found" + ), # SnapshotNotFoundException case + ConflictException( + message="Delete snapshot failed" + ), # OpenStackCloudException case + OpenStackCloudException( + message="Some other exception" + ), # DefaultException case + ] + + # Call the delete_volume_snapshot method for different scenarios + # 1. No exception + self.openstack_connector.delete_volume_snapshot(snapshot_id) + mock_logger_info.assert_called_once_with( + f"Delete volume Snapshot {snapshot_id}" + ) + + # 2. ResourceNotFound, expect SnapshotNotFoundException + with self.assertRaises( + SnapshotNotFoundException + ): # Replace Exception with the actual exception type + self.openstack_connector.delete_volume_snapshot(snapshot_id) + mock_logger_exception.assert_called_with(f"Snapshot not found: {snapshot_id}") + + # 3. ConflictException, expect OpenStackCloudException + with self.assertRaises( + OpenStackCloudException + ): # Replace Exception with the actual exception type + self.openstack_connector.delete_volume_snapshot(snapshot_id) + mock_logger_exception.assert_called_with( + f"Delete volume snapshot: {snapshot_id}) failed!" + ) + + # 4. OpenStackCloudException, expect DefaultException + with self.assertRaises( + DefaultException + ): # Replace Exception with the actual exception type + self.openstack_connector.delete_volume_snapshot(snapshot_id) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_servers(self, mock_logger_info): + # Prepare test data + expected_servers = fakes.generate_fake_resources(server.Server, count=3) + + # Mock the list_servers method to simulate fetching servers + self.mock_openstack_connection.list_servers.return_value = expected_servers + + # Call the get_servers method + result_servers = self.openstack_connector.get_servers() + + # Assertions + self.assertEqual(result_servers, expected_servers) + mock_logger_info.assert_called_once_with("Get servers") + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.error") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_servers_by_ids( + self, mock_logger_info, mock_logger_exception, mock_logger_error + ): + # Prepare test data + server_ids = ["id1", "id2", "id3", "id4"] + expected_servers = [Server(id="id1"), Server(id="id2")] + + # Mock the get_server_by_id method to simulate fetching servers + self.mock_openstack_connection.get_server_by_id.side_effect = [ + expected_servers[0], # Server found + expected_servers[1], # Server found + None, # Server not found + Exception, + ] + + # Call the get_servers_by_ids method + result_servers = self.openstack_connector.get_servers_by_ids(server_ids) + + # Assertions + self.assertEqual(result_servers, expected_servers) # Exclude the None case + mock_logger_info.assert_any_call(f"Get Servers by IDS : {server_ids}") + mock_logger_info.assert_any_call("Get server id1") + mock_logger_info.assert_any_call("Get server id2") + mock_logger_info.assert_any_call("Get server id3") + mock_logger_info.assert_any_call("Get server id4") + mock_logger_error.assert_called_once_with("Requested VM id3 not found!") + mock_logger_exception.assert_called_once_with("Requested VM id4 not found!\n ") + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_attach_volume_to_server(self, mock_logger_info, mock_logger_exception): + # Prepare test data + expected_attachment = { + "device": "/dev/vdb" + } # Replace with actual attachment details + expected_server = fakes.generate_fake_resource(server.Server) + expected_volume = fakes.generate_fake_resource(volume.Volume) + openstack_id = expected_server.id + volume_id = expected_volume.id + + # Mock the get_server and get_volume methods + self.mock_openstack_connection.attach_volume.return_value = expected_attachment + self.mock_openstack_connection.get_server_by_id.return_value = ( + expected_server # Replace with actual Server instance + ) + self.mock_openstack_connection.get_volume.return_value = ( + expected_volume # Replace with actual Volume instance + ) + + # Call the attach_volume_to_server method + result_attachment = self.openstack_connector.attach_volume_to_server( + openstack_id, volume_id + ) + + # Assertions + self.assertEqual(result_attachment, expected_attachment) + mock_logger_info.assert_called_with( + f"Attaching volume {volume_id} to virtualmachine {openstack_id}" + ) + self.mock_openstack_connection.get_server_by_id.assert_called_once_with( + id=openstack_id + ) + self.mock_openstack_connection.get_volume.assert_called_once_with( + name_or_id=volume_id + ) + self.mock_openstack_connection.attach_volume.assert_called_once_with( + server=expected_server, volume=expected_volume + ) + + # Test exception case + self.mock_openstack_connection.attach_volume.side_effect = ConflictException( + message="Conflict error" + ) + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.attach_volume_to_server(openstack_id, volume_id) + mock_logger_exception.assert_called_once_with( + f"Trying to attach volume {volume_id} to vm {openstack_id} error failed!", + exc_info=True, + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_detach_volume(self, mock_logger_info, mock_logger_exception): + # Prepare test data + expected_server = fakes.generate_fake_resource(server.Server) + expected_volume = fakes.generate_fake_resource(volume.Volume) + server_id = expected_server.id + volume_id = expected_volume.id + + # Mock the get_volume, get_server, and detach_volume methods + self.mock_openstack_connection.get_volume.return_value = ( + expected_volume # Replace with actual Volume instance + ) + self.mock_openstack_connection.get_server_by_id.return_value = ( + expected_server # Replace with actual Server instance + ) + # Call the detach_volume method + self.openstack_connector.detach_volume(volume_id, server_id) + + # Assertions + mock_logger_info.assert_any_call( + f"Delete Volume Attachment {volume_id} - {server_id}" + ) + self.mock_openstack_connection.get_volume.assert_called_once_with( + name_or_id=volume_id + ) + self.mock_openstack_connection.get_server_by_id.assert_called_once_with( + id=server_id + ) + self.mock_openstack_connection.detach_volume.assert_called_once_with( + volume=expected_volume, server=expected_server + ) + + # Test exception case + self.mock_openstack_connection.detach_volume.side_effect = ConflictException( + message="Conflict error" + ) + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.detach_volume(volume_id, server_id) + mock_logger_exception.assert_called_once_with( + f"Delete volume attachment (server: {server_id} volume: {volume_id}) failed!" + ) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_resize_volume(self, mock_logger_info, mock_logger_exception): + # Prepare test data + expected_volume = fakes.generate_fake_resource(volume.Volume) + volume_id = expected_volume.id + size = 100 + + # Mock the extend_volume method + self.mock_openstack_connection.block_storage.extend_volume.side_effect = [ + None, # No exception case + ResourceNotFound(message="Volume not found"), + # VolumeNotFoundException case + OpenStackCloudException(message="Resize error"), + ] # DefaultException case + + # Call the resize_volume method for different scenarios + # 1. No exception + self.openstack_connector.resize_volume(volume_id, size) + mock_logger_info.assert_called_once_with( + f"Extend volume {volume_id} to size {size}" + ) + + # 2. ResourceNotFound, expect VolumeNotFoundException + with self.assertRaises(VolumeNotFoundException): + self.openstack_connector.resize_volume(volume_id, size) + + # 3. OpenStackCloudException, expect DefaultException + with self.assertRaises(DefaultException): + self.openstack_connector.resize_volume(volume_id, size) + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_create_volume(self, mock_logger_info, mock_logger_exception): + # Prepare test data + volume_name = "test_volume" + volume_storage = 100 + metadata = {"key": "value"} + + # Mock the create_volume method + self.mock_openstack_connection.block_storage.create_volume.side_effect = [ + Volume(id="volume_id"), # Successful case + ResourceFailure( + message="Volume creation failed" + ), # ResourceNotAvailableException case + ] + + # Call the create_volume method for different scenarios + # 1. Successful case + result_volume = self.openstack_connector.create_volume( + volume_name, volume_storage, metadata + ) + mock_logger_info.assert_called_once_with( + f"Creating volume with {volume_storage} GB storage" + ) + self.assertIsInstance(result_volume, Volume) + + # 2. ResourceFailure, expect ResourceNotAvailableException + with self.assertRaises(ResourceNotAvailableException): + self.openstack_connector.create_volume( + volume_name, volume_storage, metadata + ) + mock_logger_exception.assert_called_once_with( + f"Trying to create volume with {volume_storage} GB failed", exc_info=True + ) + + def test_network_not_found(self): + self.openstack_connector.openstack_connection.network.find_network.return_value = ( + None + ) + with self.assertRaises(Exception): + self.openstack_connector.get_network() + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_get_network(self, mock_logger_exception): + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + + # Call the load_config_yml method with the temporary file path + self.openstack_connector.load_config_yml(temp_file.name) + + # Mock the find_network method + self.mock_openstack_connection.network.find_network.return_value = Network( + id="my_network" + ) + + # Call the get_network method + result_network = self.openstack_connector.get_network() + + # Assertions + self.assertIsInstance(result_network, Network) + self.assertEqual(result_network.id, "my_network") + self.mock_openstack_connection.network.find_network.assert_called_once_with( + self.openstack_connector.NETWORK + ) + mock_logger_exception.assert_not_called() # Ensure no exception is logged + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_import_existing_keypair(self, mock_logger_info, mock_logger_exception): + # Mock the get_keypair method for existing keypair + existing_keypair = fakes.generate_fake_resource(keypair.Keypair) + + self.mock_openstack_connection.get_keypair.return_value = existing_keypair + + # Call the import_keypair method for an existing keypair + result_keypair = self.openstack_connector.import_keypair( + keyname=existing_keypair.name, public_key=existing_keypair.public_key + ) + + # Assertions for existing keypair + self.assertEqual(result_keypair, existing_keypair) + self.mock_openstack_connection.get_keypair.assert_called_once_with( + name_or_id=existing_keypair.name + ) + mock_logger_info.assert_called_once_with(f"Get Keypair {existing_keypair.name}") + self.mock_openstack_connection.create_keypair.assert_not_called() + self.mock_openstack_connection.delete_keypair.assert_not_called() + mock_logger_exception.assert_not_called() + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_import_non_existing_keypair(self, mock_logger_info, mock_logger_exception): + # Mock the get_keypair method for non-existing keypair + new_keypair = fakes.generate_fake_resource(keypair.Keypair) + + self.mock_openstack_connection.get_keypair.return_value = None + self.mock_openstack_connection.create_keypair.return_value = new_keypair + + # Call the import_keypair method for a new keypair + result_keypair = self.openstack_connector.import_keypair( + keyname=new_keypair.name, public_key=new_keypair.public_key + ) + + # Assertions for new keypair + self.assertEqual(result_keypair, new_keypair) + + self.mock_openstack_connection.get_keypair.assert_called_with( + name_or_id=new_keypair.name + ) + self.mock_openstack_connection.create_keypair.assert_called_once_with( + name=new_keypair.name, public_key=new_keypair.public_key + ) + mock_logger_info.assert_called_with(f"Create Keypair {new_keypair.name}") + self.mock_openstack_connection.delete_keypair.assert_not_called() + mock_logger_exception.assert_not_called() + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_import_changed_keypair(self, mock_logger_info, mock_logger_exception): + # Mock the get_keypair method for keypair with changed public_key + changed_keypair = fakes.generate_fake_resource(keypair.Keypair) + old_keypair = fakes.generate_fake_resource(keypair.Keypair) + changed_keypair.name = old_keypair.name + + self.mock_openstack_connection.get_keypair.return_value = old_keypair + self.mock_openstack_connection.create_keypair.return_value = changed_keypair + + # Call the import_keypair method for a keypair with changed public_key + result_keypair = self.openstack_connector.import_keypair( + keyname=changed_keypair.name, public_key=changed_keypair.public_key + ) + + # Assertions for keypair with changed public_key + self.assertEqual(result_keypair, changed_keypair) + self.mock_openstack_connection.get_keypair.assert_called_with( + name_or_id=changed_keypair.name + ) + self.mock_openstack_connection.create_keypair.assert_called_once_with( + name=changed_keypair.name, public_key=changed_keypair.public_key + ) + self.mock_openstack_connection.delete_keypair.assert_called_once_with( + name=changed_keypair.name + ) + mock_logger_info.assert_any_call(f"Delete keypair: {changed_keypair.name}") + mock_logger_info.assert_any_call( + f"Key {changed_keypair.name} has changed. Replace old Key" + ) + mock_logger_exception.assert_not_called() + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_import_same_keypair(self, mock_logger_info, mock_logger_exception): + # Mock the get_keypair method for keypair with same public_key + same_keypair = fakes.generate_fake_resource(keypair.Keypair) + + self.mock_openstack_connection.get_keypair.return_value = same_keypair + + # Call the import_keypair method for a keypair with same public_key + result_keypair = self.openstack_connector.import_keypair( + keyname=same_keypair.name, public_key=same_keypair.public_key + ) + + # Assertions for keypair with same public_key + self.assertEqual(result_keypair, same_keypair) + self.mock_openstack_connection.get_keypair.assert_called_with( + name_or_id=same_keypair.name + ) + self.mock_openstack_connection.create_keypair.assert_not_called() + self.mock_openstack_connection.delete_keypair.assert_not_called() + mock_logger_info.assert_called_with(f"Get Keypair {same_keypair.name}") + mock_logger_exception.assert_not_called() + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_create_add_keys_script(self, mock_logger_info): + # Prepare test data + keys = ["key1", "key2", "key3"] + + # Call the create_add_keys_script method + result_script = self.openstack_connector.create_add_keys_script(keys) + + # Assertions + expected_script_content = '#!/bin/bash\ndeclare -a keys_to_add=("key1" "key2" "key3" )\necho "Found keys: ${#keys_to_add[*]}"\nfor ix in ${!keys_to_add[*]}\ndo\n printf "\\n%s" "${keys_to_add[$ix]}" >> /home/ubuntu/.ssh/authorized_keys\n\ndone\n' + expected_script_content = encodeutils.safe_encode( + expected_script_content.encode("utf-8") + ) + + # Additional assertions + mock_logger_info.assert_called_once_with("create add key script") + + # Check that the real script content matches the expected content + self.assertEqual(result_script, expected_script_content) + + @patch("simple_vm_client.openstack_connector.openstack_connector.socket.socket") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_netcat(self, mock_logger_info, mock_socket): + # Replace with the actual host and port + host = "example.com" + port = 22 + + # Mock the connect_ex method to simulate the connection result + mock_socket.return_value.connect_ex.return_value = 0 + + # Call the netcat method + result = self.openstack_connector.netcat(host, port) + + # Assertions + self.assertTrue(result) # Adjust based on your logic + mock_logger_info.assert_any_call(f"Checking SSH Connection {host}:{port}") + mock_socket.assert_called_once_with(socket.AF_INET, socket.SOCK_STREAM) + mock_socket.return_value.settimeout.assert_called_once_with(5) + mock_socket.return_value.connect_ex.assert_called_once_with((host, port)) + mock_logger_info.assert_any_call( + f"Checking SSH Connection {host}:{port} Result = 0" + ) + + def test_get_flavor_exception(self): + self.openstack_connector.openstack_connection.get_flavor.return_value = None + with self.assertRaises(FlavorNotFoundException): + self.openstack_connector.get_flavor("not_found") + + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_flavor(self, mock_logger_info): + # Replace with the actual flavor name or ID + expected_flavor = fakes.generate_fake_resource(flavor.Flavor) + + # Mock the get_flavor method to simulate fetching a flavor + self.mock_openstack_connection.get_flavor.return_value = expected_flavor + + # Call the get_flavor method + result_flavor = self.openstack_connector.get_flavor(expected_flavor.name) + + # Assertions + self.assertEqual(result_flavor, expected_flavor) + mock_logger_info.assert_called_with(f"Get flavor {expected_flavor.name}") + self.mock_openstack_connection.get_flavor.assert_called_once_with( + name_or_id=expected_flavor.name, get_extra=True + ) + + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_flavors(self, mock_logger_info): + # Replace with the actual flavors you want to simulate + expected_flavors = list(fakes.generate_fake_resources(flavor.Flavor, count=3)) + + # Mock the list_flavors method to simulate fetching flavors + self.mock_openstack_connection.list_flavors.return_value = expected_flavors + + # Call the get_flavors method + result_flavors = self.openstack_connector.get_flavors() + + # Assertions + self.assertEqual(result_flavors, expected_flavors) + mock_logger_info.assert_any_call("Get Flavors") + mock_logger_info.assert_any_call([flav["name"] for flav in expected_flavors]) + + self.mock_openstack_connection.list_flavors.assert_called_once_with( + get_extra=True + ) + + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_servers_by_bibigrid_id(self, mock_logger_info): + # Replace with the actual Bibigrid ID you want to test + bibigrid_id = "your_bibigrid_id" + + # Replace with the actual servers you want to simulate + expected_servers = list(fakes.generate_fake_resources(flavor.Flavor, count=3)) + + # Mock the list_servers method to simulate fetching servers + self.mock_openstack_connection.list_servers.return_value = expected_servers + + # Call the get_servers_by_bibigrid_id method + result_servers = self.openstack_connector.get_servers_by_bibigrid_id( + bibigrid_id + ) + + # Assertions + self.assertEqual(result_servers, expected_servers) + mock_logger_info.assert_called_with( + f"Get Servery by Bibigrid id: {bibigrid_id}" + ) + self.mock_openstack_connection.list_servers.assert_called_once_with( + filters={"bibigrid_id": bibigrid_id, "name": bibigrid_id} + ) + + @mock.patch( + "simple_vm_client.openstack_connector.openstack_connector.logger.exception" + ) + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_create_snapshot(self, mock_logger_info, mock_logger_exception): + # Replace with the actual parameters you want to test + openstack_id = "your_openstack_id" + name = "your_snapshot_name" + username = "your_username" + base_tags = ["tag1", "tag2"] + description = "your_description" + new_snapshot = fakes.generate_fake_resource(image.Image) + + # Mock the create_image_snapshot and image.add_tag methods + self.mock_openstack_connection.create_image_snapshot.return_value = new_snapshot + self.mock_openstack_connection.image.add_tag.return_value = None + + # Case 1: No exception + result_snapshot_id = self.openstack_connector.create_snapshot( + openstack_id, name, username, base_tags, description + ) + self.assertEqual(result_snapshot_id, new_snapshot.id) + + # Case 2: ConflictException + self.mock_openstack_connection.create_image_snapshot.side_effect = ( + ConflictException(message="Conflict") + ) + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.create_snapshot( + openstack_id, name, username, base_tags, description + ) + mock_logger_exception.assert_called_once_with( + "Create snapshot your_openstack_id failed!" + ) + + # Case 3: OpenStackCloudException + self.mock_openstack_connection.create_image_snapshot.side_effect = ( + OpenStackCloudException(message="Cloud Exception") + ) + with self.assertRaises(DefaultException): + self.openstack_connector.create_snapshot( + openstack_id, name, username, base_tags, description + ) + + def test_delete_image_not_found(self): + self.openstack_connector.openstack_connection.get_image.return_value = None + with self.assertRaises(Exception): + self.openstack_connector.delete_image("not_found") + + @mock.patch( + "simple_vm_client.openstack_connector.openstack_connector.logger.exception" + ) + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_delete_image(self, mock_logger_info, mock_logger_exception): + # Replace with the actual image_id you want to test + fake_image = fakes.generate_fake_resource(image.Image) + + # Mock the get_image and compute.delete_image methods + self.mock_openstack_connection.get_image.return_value = fake_image + self.mock_openstack_connection.compute.delete_image.return_value = None + + # Case 1: No exception + self.openstack_connector.delete_image(fake_image.id) + mock_logger_info.assert_any_call(f"Delete Image {fake_image.id}") + self.mock_openstack_connection.compute.delete_image.assert_called_once_with( + fake_image.id + ) + + # Case 2: Other exceptions + self.mock_openstack_connection.get_image.side_effect = Exception("Some error") + with self.assertRaises(DefaultException): + self.openstack_connector.delete_image(fake_image.id) + mock_logger_exception.assert_called_once_with( + f"Delete Image {fake_image.id} failed!" + ) + + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_get_public_images(self, mock_logger_info): + # Replace with the actual public images you want to test + images = list(fakes.generate_fake_resources(image.Image, count=3)) + images[2].visibility = "private" + + # Mock the image.images() method with filters and extra_info + self.mock_openstack_connection.image.images.return_value = images[:2] + + # Call the get_public_images method + result_images = self.openstack_connector.get_public_images() + + # Assertions + self.assertEqual(result_images, images[:2]) # Exclude the private image + mock_logger_info.assert_any_call("Get public images") + + @patch.object(OpenStackConnector, "get_image") + @patch.object(OpenStackConnector, "get_flavor") + @patch.object(OpenStackConnector, "get_network") + @patch.object(OpenStackConnector, "create_server") + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_add_cluster_machine( + self, + mock_logger_info, + mock_create_server, + mock_get_network, + mock_get_flavor, + mock_get_image, + ): + # Arrange + cluster_id = "123" + cluster_user = "user1" + cluster_group_id = ["group1", "group2"] + image_name = "image1" + flavor_name = "flavor1" + name = "machine1" + key_name = "key1" + batch_idx = 1 + worker_idx = 2 + + # Mock responses from get_image, get_flavor, and get_network + mock_image = MagicMock() + mock_get_image.return_value = mock_image + + mock_flavor = MagicMock() + mock_get_flavor.return_value = mock_flavor + + mock_network = MagicMock() + mock_get_network.return_value = mock_network + + # Mock response from create_server + mock_server = {"id": "server123"} + mock_create_server.return_value = mock_server + + # Act + result = self.openstack_connector.add_cluster_machine( + cluster_id, + cluster_user, + cluster_group_id, + image_name, + flavor_name, + name, + key_name, + batch_idx, + worker_idx, + ) + + # Assert + mock_get_image.assert_called_once_with( + name_or_id=image_name, replace_inactive=True + ) + mock_get_flavor.assert_called_once_with(name_or_id=flavor_name) + mock_get_network.assert_called_once() + mock_create_server.assert_called_once_with( + name=name, + image_id=mock_image.id, + flavor_id=mock_flavor.id, + network_id=mock_network.id, + userdata=self.openstack_connector.DEACTIVATE_UPGRADES_SCRIPT, + key_name=key_name, + metadata={ + "bibigrid-id": cluster_id, + "user": cluster_user, + "worker-batch": str(batch_idx), + "name": name, + "worker-index": str(worker_idx), + }, + security_groups=cluster_group_id, + ) + mock_logger_info.assert_any_call(f"Add machine to {cluster_id}") + + mock_logger_info.assert_any_call(f"Created cluster machine:{mock_server['id']}") + self.assertEqual(result, mock_server["id"]) + + def test_add_udp_security_group_existing_group(self): + # Test when an existing UDP security group is found + server = fakes.generate_fake_resource(Server) + sec_group = fakes.generate_fake_resource(security_group.SecurityGroup) + sec_group.name = server.name + "_udp" + # Mocking an existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + sec_group + ) + # Mocking server security groups + self.openstack_connector.openstack_connection.list_server_security_groups.return_value = [ + sec_group + ] + + # Call the method + self.openstack_connector.add_udp_security_group(server.id) + + # Assertions + self.openstack_connector.openstack_connection.compute.add_security_group_to_server.assert_called_once_with( + server=server.id, security_group=sec_group + ) + + @patch.object(OpenStackConnector, "get_vm_ports") + @patch.object(OpenStackConnector, "create_security_group") + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_add_udp_security_group_new_group( + self, mock_logger_info, mock_create_security_group, mock_get_vm_ports + ): + # Test when a new UDP security group needs to be created + + server = fakes.generate_fake_resource(Server) + sec_group = fakes.generate_fake_resource(security_group.SecurityGroup) + sec_group.name = server.name + "_udp" + udp_port = 30001 + + # Mocking a non-existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + None + ) + self.openstack_connector.openstack_connection.get_server_by_id.return_value = ( + server + ) + # Mocking VM ports + mock_get_vm_ports.return_value = {"udp": udp_port} + mock_create_security_group.return_value = sec_group + self.openstack_connector.get_vm_ports = mock_get_vm_ports + self.openstack_connector.create_security_group = mock_create_security_group + + # Call the method + self.openstack_connector.add_udp_security_group(server.id) + self.openstack_connector.openstack_connection.get_server_by_id.assert_called_once_with( + id=server.id + ) + + # Assertions + mock_create_security_group.assert_called_once_with( + name=sec_group.name, + udp_port=udp_port, + udp=True, + ssh=False, + description="UDP", + ) + self.openstack_connector.openstack_connection.compute.add_security_group_to_server.assert_called_once_with( + server=server.id, security_group=sec_group + ) + mock_logger_info.assert_any_call( + f"Setting up UDP security group for {server.id}" + ) + mock_logger_info.assert_any_call( + (f"Add security group {sec_group.id} to server {server.id}") + ) + + @mock.patch("simple_vm_client.openstack_connector.openstack_connector.logger.info") + def test_add_udp_security_group_already_added(self, mock_logger_info): + # Test when an existing UDP security group is found + server = fakes.generate_fake_resource(Server) + + sec_group = fakes.generate_fake_resource(security_group.SecurityGroup) + sec_group.name = server.name + "_udp" + + # Mocking an existing security group + self.openstack_connector.openstack_connection.get_server_by_id.return_value = ( + server + ) + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + sec_group + ) + # Mocking server security groups + self.openstack_connector.openstack_connection.list_server_security_groups.return_value = [ + sec_group + ] + self.openstack_connector.add_udp_security_group(server.id) + self.openstack_connector.openstack_connection.add_security_group_to_server.assert_not_called() + mock_logger_info.assert_any_call( + f"Setting up UDP security group for {server.id}" + ) + mock_logger_info.assert_any_call( + f"UDP Security group with name {sec_group.name} already exists." + ) + + mock_logger_info.assert_any_call( + f"UDP Security group with name {sec_group.name} already added to server." + ) + + @patch.object(OpenStackConnector, "_get_security_groups_starting_machine") + @patch.object(OpenStackConnector, "_get_volumes_machines_start") + @patch.object(OpenStackConnector, "create_userdata") + @patch.object(OpenStackConnector, "delete_keypair") + def test_start_server_with_playbook( + self, + mock_delete_keypair, + mock_create_userdata, + mock_get_volumes, + mock_get_security_groups_starting_machine, + ): + server = fakes.generate_fake_resource(Server) + server_keypair = fakes.generate_fake_resource(keypair.Keypair) + fake_image = fakes.generate_fake_resource(image.Image) + fake_image.status = "active" + fake_flavor = fakes.generate_fake_resource(flavor.Flavor) + fake_network = fakes.generate_fake_resource(Network) + + # Set up mocks + self.openstack_connector.openstack_connection.create_server.return_value = ( + server + ) + self.openstack_connector.openstack_connection.create_keypair.return_value = ( + server_keypair + ) + mock_get_security_groups_starting_machine.return_value = ["sg1", "sg2"] + self.openstack_connector.openstack_connection.get_image.return_value = ( + fake_image + ) + self.openstack_connector.openstack_connection.get_flavor.return_value = ( + fake_flavor + ) + self.openstack_connector.openstack_connection.network.find_network.return_value = ( + fake_network + ) + mock_get_volumes.return_value = ["volume1", "volume2"] + mock_create_userdata.return_value = "userdata" + + # Set necessary input parameters + flavor_name = fake_flavor.name + image_name = fake_image.name + servername = server.name + metadata = {"project_name": "mock_project", "project_id": "mock_project_id"} + research_environment_metadata = MagicMock() + volume_ids_path_new = [ + {"openstack_id": "volume_id1"}, + {"openstack_id": "volume_id2"}, + ] + volume_ids_path_attach = [{"openstack_id": "volume_id3"}] + additional_keys = ["key1", "key2"] + additional_security_group_ids = ["sg3", "sg4"] + + # Call the method + result = self.openstack_connector.start_server_with_playbook( + flavor_name, + image_name, + servername, + metadata, + research_environment_metadata, + volume_ids_path_new, + volume_ids_path_attach, + additional_keys, + additional_security_group_ids, + ) + + # Assertions + self.openstack_connector.openstack_connection.create_server.assert_called_once_with( + name=server.name, + image=fake_image.id, + flavor=fake_flavor.id, + network=[fake_network.id], + key_name=servername, + meta=metadata, + volumes=["volume1", "volume2"], + userdata="userdata", + security_groups=["sg1", "sg2"], + ) + + mock_create_userdata.assert_called_once_with( + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + additional_keys=additional_keys, + ) + + mock_get_security_groups_starting_machine.assert_called_once_with( + additional_security_group_ids=additional_security_group_ids, + project_name="mock_project", + project_id="mock_project_id", + research_environment_metadata=research_environment_metadata, + ) + + self.openstack_connector.openstack_connection.create_keypair.assert_called_once_with( + name=servername + ) + + mock_get_volumes.assert_called_once_with( + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + ) + + mock_delete_keypair.assert_called_once_with(key_name=server_keypair.name) + + # Check the result + self.assertEqual(result, (server.id, server_keypair.private_key)) + + @patch.object(OpenStackConnector, "_get_security_groups_starting_machine") + @patch.object(OpenStackConnector, "_get_volumes_machines_start") + @patch.object(OpenStackConnector, "create_userdata") + @patch.object(OpenStackConnector, "delete_keypair") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_start_server_with_playbook_exception( + self, + mock_logger_exception, + mock_delete_keypair, + mock_create_userdata, + mock_get_volumes, + mock_get_security_groups_starting_machine, + ): + server = fakes.generate_fake_resource(Server) + server_keypair = fakes.generate_fake_resource(keypair.Keypair) + fake_image = fakes.generate_fake_resource(image.Image) + fake_image.status = "active" + fake_flavor = fakes.generate_fake_resource(flavor.Flavor) + fake_network = fakes.generate_fake_resource(Network) + + # Set up mocks + self.openstack_connector.openstack_connection.create_server.return_value = ( + server + ) + self.openstack_connector.openstack_connection.create_keypair.return_value = ( + server_keypair + ) + mock_get_security_groups_starting_machine.return_value = ["sg1", "sg2"] + self.openstack_connector.openstack_connection.get_image.return_value = ( + fake_image + ) + self.openstack_connector.openstack_connection.get_flavor.return_value = ( + fake_flavor + ) + self.openstack_connector.openstack_connection.network.find_network.return_value = ( + fake_network + ) + mock_get_volumes.side_effect = OpenStackCloudException("Unit Test Error") + flavor_name = fake_flavor.name + image_name = fake_image.name + servername = server.name + metadata = {"project_name": "mock_project", "project_id": "mock_project_id"} + research_environment_metadata = MagicMock() + volume_ids_path_new = [ + {"openstack_id": "volume_id1"}, + {"openstack_id": "volume_id2"}, + ] + volume_ids_path_attach = [{"openstack_id": "volume_id3"}] + additional_keys = ["key1", "key2"] + additional_security_group_ids = ["sg3", "sg4"] + + with self.assertRaises(DefaultException): + self.openstack_connector.start_server_with_playbook( + flavor_name, + image_name, + servername, + metadata, + research_environment_metadata, + volume_ids_path_new, + volume_ids_path_attach, + additional_keys, + additional_security_group_ids, + ) + mock_delete_keypair.assert_called_once_with(key_name=server_keypair.name) + mock_logger_exception.assert_called_once_with( + (f"Start Server {servername} error") + ) + + @patch.object(OpenStackConnector, "_get_default_security_groups") + @patch.object( + OpenStackConnector, "get_or_create_research_environment_security_group" + ) + @patch.object(OpenStackConnector, "get_or_create_project_security_group") + def test_get_security_groups_starting_machine( + self, + mock_get_project_sg, + mock_get_research_env_sg, + mock_get_default_security_groups, + ): + # Set up mocks + fake_default_security_group = fakes.generate_fake_resource( + security_group.SecurityGroup + ) + fake_project_security_group = fakes.generate_fake_resource( + security_group.SecurityGroup + ) + mock_get_default_security_groups.return_value = [fake_default_security_group.id] + mock_get_research_env_sg.return_value = "research_env_sg" + mock_get_project_sg.return_value = fake_project_security_group.id + self.openstack_connector.openstack_connection.get_security_group.side_effect = [ + {"id": "additional_sg1"}, + {"id": "additional_sg2"}, + ] + # Set necessary input parameters + additional_security_group_ids = ["additional_sg1", "additional_sg2"] + project_name = "mock_project" + project_id = "mock_project_id" + research_environment_metadata = MagicMock() + + # Call the method + result = self.openstack_connector._get_security_groups_starting_machine( + additional_security_group_ids, + project_name, + project_id, + research_environment_metadata, + ) + + # Assertions + mock_get_default_security_groups.assert_called_once() + + mock_get_research_env_sg.assert_called_once_with( + resenv_metadata=research_environment_metadata + ) + mock_get_project_sg.assert_called_once_with( + project_name=project_name, project_id=project_id + ) + + self.openstack_connector.openstack_connection.get_security_group.assert_has_calls( + [call(name_or_id="additional_sg1"), call(name_or_id="additional_sg2")] + ) + # Check the result + expected_result = [ + "research_env_sg", + fake_default_security_group.id, + fake_project_security_group.id, + "additional_sg1", + "additional_sg2", + ] + self.assertCountEqual(result, expected_result) + + def test_get_volumes_machines_start(self): + fake_vol_1 = fakes.generate_fake_resource(volume.Volume) + fake_vol_2 = fakes.generate_fake_resource(volume.Volume) + + # Set up mock + self.openstack_connector.openstack_connection.get_volume.side_effect = [ + fake_vol_1, + fake_vol_2, + ] + + # Set necessary input parameters + volume_ids_path_new = [{"openstack_id": fake_vol_1.id}] + volume_ids_path_attach = [{"openstack_id": fake_vol_2.id}] + + # Call the method + result = self.openstack_connector._get_volumes_machines_start( + volume_ids_path_new, volume_ids_path_attach + ) + + # Assertions + self.openstack_connector.openstack_connection.get_volume.assert_has_calls( + [call(name_or_id=fake_vol_1.id), call(name_or_id=fake_vol_2.id)] + ) + + # Check the result + expected_result = [fake_vol_1, fake_vol_2] + self.assertEqual(result, expected_result) + volume_ids_path_new = [] + volume_ids_path_attach = [] + + # Call the method + result = self.openstack_connector._get_volumes_machines_start( + volume_ids_path_new, volume_ids_path_attach + ) + + # Assertions + self.openstack_connector.openstack_connection.get_volume.assert_has_calls([]) + + # Check the result + expected_result = [] + self.assertEqual(result, expected_result) + + @patch.object(OpenStackConnector, "_get_security_groups_starting_machine") + @patch.object(OpenStackConnector, "_get_volumes_machines_start") + @patch.object(OpenStackConnector, "create_userdata") + @patch.object(OpenStackConnector, "delete_keypair") + def test_start_server( + self, + mock_delete_keypair, + mock_create_userdata, + mock_get_volumes, + mock_get_security_groups_starting_machine, + ): + server = fakes.generate_fake_resource(Server) + server_keypair = fakes.generate_fake_resource(keypair.Keypair) + server_keypair.name = server.name + "_mock_project" + fake_image = fakes.generate_fake_resource(image.Image) + fake_image.status = "active" + fake_flavor = fakes.generate_fake_resource(flavor.Flavor) + fake_network = fakes.generate_fake_resource(Network) + + # Set up mocks + self.openstack_connector.openstack_connection.create_server.return_value = ( + server + ) + self.openstack_connector.openstack_connection.create_keypair.return_value = ( + server_keypair + ) + mock_get_security_groups_starting_machine.return_value = ["sg1", "sg2"] + self.openstack_connector.openstack_connection.get_image.return_value = ( + fake_image + ) + self.openstack_connector.openstack_connection.get_flavor.return_value = ( + fake_flavor + ) + self.openstack_connector.openstack_connection.network.find_network.return_value = ( + fake_network + ) + self.openstack_connector.openstack_connection.compute.find_keypair.return_value = ( + server_keypair + ) + self.openstack_connector.openstack_connection.compute.get_keypair.return_value = ( + server_keypair + ) + + mock_get_volumes.return_value = ["volume1", "volume2"] + mock_create_userdata.return_value = "userdata" + + # Set necessary input parameters + flavor_name = fake_flavor.name + image_name = fake_image.name + servername = server.name + metadata = {"project_name": "mock_project", "project_id": "mock_project_id"} + research_environment_metadata = MagicMock() + volume_ids_path_new = [ + {"openstack_id": "volume_id1"}, + {"openstack_id": "volume_id2"}, + ] + volume_ids_path_attach = [{"openstack_id": "volume_id3"}] + additional_keys = ["key1", "key2"] + additional_security_group_ids = ["sg3", "sg4"] + public_key = "public_key" + + # Call the method + result = self.openstack_connector.start_server( + flavor_name=flavor_name, + image_name=image_name, + servername=servername, + metadata=metadata, + research_environment_metadata=research_environment_metadata, + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + additional_keys=additional_keys, + additional_security_group_ids=additional_security_group_ids, + public_key=public_key, + ) + + # Assertions + self.openstack_connector.openstack_connection.create_server.assert_called_once_with( + name=server.name, + image=fake_image.id, + flavor=fake_flavor.id, + network=[fake_network.id], + key_name=server_keypair.name, + meta=metadata, + volumes=["volume1", "volume2"], + userdata="userdata", + security_groups=["sg1", "sg2"], + ) + + mock_create_userdata.assert_called_once_with( + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + additional_keys=additional_keys, + ) + + mock_get_security_groups_starting_machine.assert_called_once_with( + additional_security_group_ids=additional_security_group_ids, + project_name="mock_project", + project_id="mock_project_id", + research_environment_metadata=research_environment_metadata, + ) + + self.openstack_connector.openstack_connection.create_keypair.assert_called_once_with( + name=server_keypair.name, public_key=public_key + ) + + mock_get_volumes.assert_called_once_with( + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + ) + + self.openstack_connector.openstack_connection.get_keypair.assert_called_once_with( + name_or_id=server_keypair.name + ) + mock_delete_keypair.assert_any_call(key_name=server_keypair.name) + + # Check the result + self.assertEqual(result, server.id) + + @patch.object(OpenStackConnector, "_get_security_groups_starting_machine") + @patch.object(OpenStackConnector, "_get_volumes_machines_start") + @patch.object(OpenStackConnector, "create_userdata") + @patch.object(OpenStackConnector, "delete_keypair") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_start_server_exception( + self, + mock_logger_exception, + mock_delete_keypair, + mock_create_userdata, + mock_get_volumes, + mock_get_security_groups_starting_machine, + ): + server = fakes.generate_fake_resource(Server) + server_keypair = fakes.generate_fake_resource(keypair.Keypair) + fake_image = fakes.generate_fake_resource(image.Image) + fake_image.status = "active" + fake_flavor = fakes.generate_fake_resource(flavor.Flavor) + fake_network = fakes.generate_fake_resource(Network) + public_key = "public_key" + + # Set up mocks + self.openstack_connector.openstack_connection.create_server.return_value = ( + server + ) + self.openstack_connector.openstack_connection.create_keypair.return_value = ( + server_keypair + ) + mock_get_security_groups_starting_machine.return_value = ["sg1", "sg2"] + self.openstack_connector.openstack_connection.get_image.return_value = ( + fake_image + ) + self.openstack_connector.openstack_connection.get_flavor.return_value = ( + fake_flavor + ) + self.openstack_connector.openstack_connection.network.find_network.return_value = ( + fake_network + ) + mock_get_volumes.side_effect = OpenStackCloudException("Unit Test Error") + flavor_name = fake_flavor.name + image_name = fake_image.name + servername = server.name + metadata = {"project_name": "mock_project", "project_id": "mock_project_id"} + research_environment_metadata = MagicMock() + volume_ids_path_new = [ + {"openstack_id": "volume_id1"}, + {"openstack_id": "volume_id2"}, + ] + volume_ids_path_attach = [{"openstack_id": "volume_id3"}] + additional_keys = ["key1", "key2"] + additional_security_group_ids = ["sg3", "sg4"] + + with self.assertRaises(DefaultException): + self.openstack_connector.start_server( + flavor_name=flavor_name, + image_name=image_name, + servername=servername, + metadata=metadata, + research_environment_metadata=research_environment_metadata, + volume_ids_path_new=volume_ids_path_new, + volume_ids_path_attach=volume_ids_path_attach, + additional_keys=additional_keys, + additional_security_group_ids=additional_security_group_ids, + public_key=public_key, + ) + mock_logger_exception.assert_any_call((f"Start Server {servername} error")) + + @patch.object(OpenStackConnector, "create_add_keys_script") + @patch.object(OpenStackConnector, "create_mount_init_script") + def test_create_userdata( + self, mock_create_mount_init_script, mock_create_add_keys_script + ): + # Set up mocks + mock_create_add_keys_script.return_value = b"mock_add_keys_script" + mock_create_mount_init_script.return_value = b"mock_mount_script" + + # Set necessary input parameters + volume_ids_path_new = [{"openstack_id": "volume_id_new"}] + volume_ids_path_attach = [{"openstack_id": "volume_id_attach"}] + additional_keys = ["key1", "key2"] + + # Call the method + result = self.openstack_connector.create_userdata( + volume_ids_path_new, volume_ids_path_attach, additional_keys + ) + + # Assertions + mock_create_add_keys_script.assert_called_once_with(keys=additional_keys) + mock_create_mount_init_script.assert_called_once_with( + new_volumes=volume_ids_path_new, attach_volumes=volume_ids_path_attach + ) + + # Check the result + expected_result = ( + b"mock_add_keys_script\n" + + b"#!/bin/bash\npasswd -u ubuntu\n" + + b"\nmock_mount_script" + ) + self.assertEqual(result, expected_result) + + @patch.object(OpenStackConnector, "get_server") + @patch("simple_vm_client.openstack_connector.openstack_connector.sympy.symbols") + @patch("simple_vm_client.openstack_connector.openstack_connector.sympy.sympify") + def test_get_vm_ports(self, mock_sympify, mock_symbols, mock_get_server): + # Set up mocks + mock_server = fakes.generate_fake_resource(server.Server) + mock_server["private_v4"] = "192.168.1.2" + + mock_get_server.return_value = mock_server + mock_sympify.return_value.evalf.return_value = ( + 30258 # Replace with expected values + ) + mock_symbols.side_effect = ["x", "y"] + + # Call the method + result = self.openstack_connector.get_vm_ports(mock_server.id) + + # Assertions + mock_get_server.assert_called_once_with(openstack_id=mock_server.id) + mock_symbols.assert_any_call("x") + mock_symbols.assert_any_call("y") + + mock_sympify.assert_called_with(self.openstack_connector.SSH_PORT_CALCULATION) + mock_sympify.return_value.evalf.assert_called_with(subs={"x": 2, "y": 1}) + + # Check the result + expected_result = { + "port": "30258", + "udp": "30258", + } # Replace with expected values + self.assertEqual(result, expected_result) + + @patch.object(OpenStackConnector, "get_server") + @patch.object(OpenStackConnector, "_validate_server_for_deletion") + @patch.object(OpenStackConnector, "_remove_security_groups_from_server") + def test_delete_server_successful( + self, mock_remove_security_groups, mock_validate_server, mock_get_server + ): + # Arrange + mock_server = fakes.generate_fake_resource(server.Server) + + mock_get_server.return_value = mock_server + # Act + self.openstack_connector.delete_server(mock_server.id) + + # Assert + mock_get_server.assert_called_once_with(openstack_id=mock_server.id) + mock_validate_server.assert_called_once_with(server=mock_server) + mock_remove_security_groups.assert_called_once_with(server=mock_server) + self.openstack_connector.openstack_connection.compute.delete_server.assert_called_once_with( + mock_server.id, force=True + ) + + @patch.object(OpenStackConnector, "get_server") + def test_delete_server_exception(self, mock_get_server): + # Arrange + mock_server = fakes.generate_fake_resource(server.Server) + # Mocking the necessary methods to raise a ConflictException + mock_get_server.side_effect = ConflictException("Conflict") + # Act + + # Act and Assert + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.delete_server(mock_server.id) + + mock_get_server.assert_called_once_with(openstack_id=mock_server.id) + self.openstack_connector.openstack_connection.compute.delete_server.assert_not_called() + + @patch.object(OpenStackConnector, "get_server") + def test_delete_server_not_found_exception(self, mock_get_server): + # Arrange + # Mocking the necessary methods to raise a ConflictException + server_id = "not_found" + mock_get_server.return_value = None + # Act + + # Act and Assert + with self.assertRaises(ServerNotFoundException): + self.openstack_connector.delete_server(server_id) + + mock_get_server.assert_called_once_with(openstack_id=server_id) + self.openstack_connector.openstack_connection.compute.delete_server.assert_not_called() + + def test_validate_server_for_deletion(self): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + + # Act + self.openstack_connector._validate_server_for_deletion(server_mock) + + # Assert + # No exceptions should be raised if the server is found + self.assertTrue(True) + + def test_validate_server_for_deletion_conflict_exception(self): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + server_mock.task_state = "image_pending_upload" + with self.assertRaises(ConflictException): + # Act + self.openstack_connector._validate_server_for_deletion(server_mock) + + def test_remove_security_groups_from_server_no_security_groups(self): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + server_mock.security_groups = None + + # Act + self.openstack_connector._remove_security_groups_from_server(server_mock) + + # Assert + # The method should not raise any exceptions if there are no security groups + self.assertTrue(True) + + @patch.object(OpenStackConnector, "is_security_group_in_use") + def test_remove_security_groups_from_server_with_security_groups( + self, mock_is_security_group_in_use + ): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + fake_groups = list( + fakes.generate_fake_resources(security_group.SecurityGroup, count=4) + ) + fake_groups[2].name = "bibigrid-sec" + server_mock.security_groups = fake_groups + self.openstack_connector.openstack_connection.get_security_group.side_effect = ( + fake_groups + ) + mock_is_security_group_in_use.side_effect = [False, False, True, True] + + # Act + self.openstack_connector._remove_security_groups_from_server(server_mock) + + for group in fake_groups: + self.openstack_connector.openstack_connection.compute.remove_security_group_from_server.assert_any_call( + server=server_mock, security_group=group + ) + + with self.assertRaises(AssertionError): + self.openstack_connector.openstack_connection.delete_security_group.assert_any_call( + fake_groups[2] + ) + self.openstack_connector.openstack_connection.delete_security_group.assert_any_call( + fake_groups[3] + ) + + for group in fake_groups[:2]: + self.openstack_connector.openstack_connection.delete_security_group.assert_any_call( + group + ) + + @patch.object(OpenStackConnector, "get_server") + def test_stop_server_success(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + # Act + self.openstack_connector.stop_server(openstack_id="some_openstack_id") + + # Assert + # Ensure the stop_server method is called with the correct server + self.openstack_connector.openstack_connection.compute.stop_server.assert_called_once_with( + server_mock + ) + + @patch.object(OpenStackConnector, "get_server") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_stop_server_conflict_exception( + self, mock_logger_exception, mock_get_server + ): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + self.openstack_connector.openstack_connection.compute.stop_server.side_effect = ConflictException( + "Unit Test" + ) + # Act + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.stop_server(openstack_id="some_openstack_id") + mock_logger_exception.assert_called_once_with( + "Stop Server some_openstack_id failed!" + ) + + @patch.object(OpenStackConnector, "get_server") + def test_reboot_server_success(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + # Act + self.openstack_connector.reboot_server(server_mock.id, "SOFT") + + # Assert + # Ensure the stop_server method is called with the correct server + self.openstack_connector.openstack_connection.compute.reboot_server.assert_called_once_with( + server_mock, "SOFT" + ) + + @patch.object(OpenStackConnector, "get_server") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_reboot_server_conflict_exception( + self, mock_logger_exception, mock_get_server + ): + self.openstack_connector.openstack_connection.compute.reboot_server.side_effect = ConflictException( + "Unit Test" + ) + # Act + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.reboot_server("some_openstack_id", "SOFT") + mock_logger_exception.assert_called_once_with( + "Reboot Server some_openstack_id failed!" + ) + + @patch.object(OpenStackConnector, "get_server") + def test_reboot_soft_server(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + self.openstack_connector.reboot_soft_server(server_mock.id) + self.openstack_connector.openstack_connection.compute.reboot_server.assert_called_once_with( + server_mock, "SOFT" + ) + + @patch.object(OpenStackConnector, "get_server") + def test_reboot_hard_server(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + self.openstack_connector.reboot_hard_server(server_mock.id) + self.openstack_connector.openstack_connection.compute.reboot_server.assert_called_once_with( + server_mock, "HARD" + ) + + @patch.object(OpenStackConnector, "get_server") + def test_resume_server_success(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + # Act + self.openstack_connector.resume_server(server_mock.id) + + # Assert + # Ensure the stop_server method is called with the correct server + self.openstack_connector.openstack_connection.compute.start_server.assert_called_once_with( + server_mock + ) + + @patch.object(OpenStackConnector, "get_server") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_resume_server_conflict_exception( + self, mock_logger_exception, mock_get_server + ): + self.openstack_connector.openstack_connection.compute.start_server.side_effect = ConflictException( + "Unit Test" + ) + # Act + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.resume_server("some_openstack_id") + mock_logger_exception.assert_called_once_with( + "Resume Server some_openstack_id failed!" + ) + + @patch.object(OpenStackConnector, "_calculate_vm_ports") + @patch.object(OpenStackConnector, "get_image") + @patch.object(OpenStackConnector, "get_flavor") + @patch.object(OpenStackConnector, "netcat") + def test_get_server( + self, mock_netcat, mock_get_flavor, mock_get_image, mock_calculate_ports + ): + # Arrange + openstack_id = "your_openstack_id" + server_mock = fakes.generate_fake_resource(server.Server) + server_mock.vm_state = VmStates.ACTIVE.value + image_mock = fakes.generate_fake_resource(image.Image) + server_mock.image = image_mock + flavor_mock = fakes.generate_fake_resource(flavor.Flavor) + server_mock.flavor = flavor_mock + + # Mocking the methods and attributes + self.openstack_connector.openstack_connection.get_server_by_id.return_value = ( + server_mock + ) + mock_get_image.return_value = image_mock + mock_get_flavor.return_value = flavor_mock + mock_calculate_ports.return_value = (30111, 30111) + mock_netcat.return_value = True # Assuming SSH connection is successful + + # Act + self.openstack_connector.get_server(openstack_id) + + # Assert + self.openstack_connector.openstack_connection.get_server_by_id.assert_called_once_with( + id=openstack_id + ) + mock_calculate_ports.assert_called_once_with(server=server_mock) + mock_netcat.assert_called_once_with( + host=self.openstack_connector.GATEWAY_IP, port=30111 + ) + mock_get_image.assert_called_once_with( + name_or_id=image_mock.id, + ignore_not_active=True, + ignore_not_found=True, + ) + mock_get_flavor.assert_called_once_with(name_or_id=flavor_mock.id) + mock_netcat.return_value = False # Assuming SSH connection is successful + # Act + result_server = self.openstack_connector.get_server(openstack_id) + self.assertEqual( + result_server.task_state, VmTaskStates.CHECKING_SSH_CONNECTION.value + ) + + def test_get_server_not_found(self): + self.openstack_connector.openstack_connection.get_server_by_id.return_value = ( + None + ) + + with self.assertRaises(ServerNotFoundException): + self.openstack_connector.get_server("someid") + + def test_get_server_openstack_exception(self): + self.openstack_connector.openstack_connection.get_server_by_id.side_effect = ( + OpenStackCloudException("UNit Test") + ) + + with self.assertRaises(DefaultException): + self.openstack_connector.get_server("someid") + + @patch.object(OpenStackConnector, "get_server") + def test_set_server_metadata_success(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + metadata = {"data": "123"} + # Act + self.openstack_connector.set_server_metadata(server_mock.id, metadata) + + # Assert + # Ensure the stop_server method is called with the correct server + self.openstack_connector.openstack_connection.compute.set_server_metadata.assert_called_once_with( + server_mock, metadata + ) + + @patch.object(OpenStackConnector, "get_server") + def test_set_server_metadata_exception(self, mock_get_server): + # Arrange + server_mock = fakes.generate_fake_resource(server.Server) + mock_get_server.return_value = server_mock + metadata = {"data": "123"} + self.openstack_connector.openstack_connection.compute.set_server_metadata.side_effect = OpenStackCloudException( + "Unit Tests" + ) + # Act + with self.assertRaises(DefaultException): + self.openstack_connector.set_server_metadata(server_mock.id, metadata) + + @patch.object(OpenStackConnector, "get_server") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_reboot_server_conflict_exception( + self, mock_logger_exception, mock_get_server + ): + self.openstack_connector.openstack_connection.compute.reboot_server.side_effect = ConflictException( + "Unit Test" + ) + # Act + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.reboot_server("some_openstack_id", "SOFT") + mock_logger_exception.assert_called_once_with( + f"Reboot Server some_openstack_id failed!" + ) + + def test_exist_server_true(self): + server_mock = fakes.generate_fake_resource(server.Server) + + self.openstack_connector.openstack_connection.compute.find_server.return_value = ( + server_mock + ) + + result = self.openstack_connector.exist_server(server_mock.name) + self.assertTrue(result) + + def test_exist_server_false(self): + server_mock = fakes.generate_fake_resource(server.Server) + + self.openstack_connector.openstack_connection.compute.find_server.return_value = ( + None + ) + + result = self.openstack_connector.exist_server(server_mock.name) + self.assertFalse(result) + + def test_get_or_create_project_security_group_exists(self): + # Mock the get_security_group method to simulate an existing security group + existing_security_group = fakes.generate_fake_resource( + security_group.SecurityGroup + ) + + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + existing_security_group + ) + + # Call the method + result = self.openstack_connector.get_or_create_project_security_group( + "project_name", "project_id" + ) + + # Assertions + self.assertEqual(result, existing_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_not_called() + + def test_get_or_create_project_security_group_create_new(self): + # Mock the get_security_group method to simulate a non-existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + None + ) + + # Mock the create_security_group method to simulate creating a new security group + new_security_group = fakes.generate_fake_resource(security_group.SecurityGroup) + self.openstack_connector.openstack_connection.create_security_group.return_value = ( + new_security_group + ) + + # Call the method + result = self.openstack_connector.get_or_create_project_security_group( + "project_name", "project_id" + ) + + # Assertions + self.assertEqual(result, new_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_called_once() + + def test_get_or_create_vm_security_group_exist(self): + # Mock the get_security_group method to simulate an existing security group + existing_security_group = fakes.generate_fake_resource( + security_group.SecurityGroup + ) + + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + existing_security_group + ) + + # Call the method + result = self.openstack_connector.get_or_create_vm_security_group("server_id") + + # Assertions + self.assertEqual(result, existing_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_not_called() + + def test_get_or_create_vm_security_group_create_new(self): + # Mock the get_security_group method to simulate a non-existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + None + ) + + # Mock the create_security_group method to simulate creating a new security group + new_security_group = fakes.generate_fake_resource(security_group.SecurityGroup) + self.openstack_connector.openstack_connection.create_security_group.return_value = ( + new_security_group + ) + + # Call the method + result = self.openstack_connector.get_or_create_vm_security_group( + "openstack_id" + ) + + # Assertions + self.assertEqual(result, new_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_called_once() + + def test_get_or_create_research_environment_security_group_exist(self): + # Mock the get_security_group method to simulate an existing security group + existing_security_group = fakes.generate_fake_resource( + security_group.SecurityGroup + ) + + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + existing_security_group + ) + + # Call the method + result = ( + self.openstack_connector.get_or_create_research_environment_security_group( + resenv_metadata=METADATA_EXAMPLE + ) + ) + + # Assertions + self.assertEqual(result, existing_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_not_called() + + def test_get_or_create_research_environment_no_forc_support(self): + # Mock the get_security_group method to simulate a non-existing security group + self.openstack_connector.get_or_create_research_environment_security_group( + resenv_metadata=METADATA_EXAMPLE_NO_FORC + ) + self.openstack_connector.openstack_connection.get_security_group.assert_not_called() + + def test_get_or_create_research_environment_security_group_new(self): + # Mock the get_security_group method to simulate a non-existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + None + ) + + # Mock the create_security_group method to simulate creating a new security group + new_security_group = fakes.generate_fake_resource(security_group.SecurityGroup) + self.openstack_connector.openstack_connection.create_security_group.return_value = ( + new_security_group + ) + + # Call the method + result = ( + self.openstack_connector.get_or_create_research_environment_security_group( + resenv_metadata=METADATA_EXAMPLE + ) + ) + + # Assertions + self.assertEqual(result, new_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_called_once() + + def test_is_security_group_in_use_instances(self): + # Mock the compute.servers method to simulate instances using the security group + instances = [{"id": "instance_id", "name": "instance_name"}] + self.openstack_connector.openstack_connection.compute.servers = MagicMock( + return_value=instances + ) + + # Call the method + result = self.openstack_connector.is_security_group_in_use("security_group_id") + + # Assertions + self.assertTrue(result) + + def test_is_security_group_in_use_ports(self): + # Mock the network.ports method to simulate ports associated with the security group + ports = [{"id": "port_id", "name": "port_name"}] + self.openstack_connector.openstack_connection.compute.servers.return_value = [] + self.openstack_connector.openstack_connection.network.ports.return_value = ports + + # Call the method + result = self.openstack_connector.is_security_group_in_use("security_group_id") + + # Assertions + self.assertTrue(result) + + def test_is_security_group_in_use_load_balancers(self): + # Mock the network.load_balancers method to simulate load balancers associated with the security group + load_balancers = [{"id": "lb_id", "name": "lb_name"}] + self.openstack_connector.openstack_connection.compute.servers.return_value = [] + self.openstack_connector.openstack_connection.network.ports.return_value = [] + + self.openstack_connector.openstack_connection.network.load_balancers.return_value = [ + 1, + 2, + ] + + # Call the method + result = self.openstack_connector.is_security_group_in_use("security_group_id") + + # Assertions + self.assertTrue(result) + + def test_is_security_group_not_in_use(self): + # Mock both compute.servers and network.ports methods to simulate no usage of the security group + self.openstack_connector.openstack_connection.compute.servers = MagicMock( + return_value=[] + ) + self.openstack_connector.openstack_connection.network.ports = MagicMock( + return_value=[] + ) + self.openstack_connector.openstack_connection.network.load_balancers = ( + MagicMock(return_value=[]) + ) + + # Call the method + result = self.openstack_connector.is_security_group_in_use("security_group_id") + + # Assertions + self.assertFalse(result) + + def test_create_security_group_exist(self): + fake_sg = fakes.generate_fake_resource(security_group.SecurityGroup) + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + fake_sg + ) + # Call the method + result = self.openstack_connector.create_security_group( + name=fake_sg.name, + udp_port=1234, + ssh=True, + udp=True, + description=fake_sg.description, + research_environment_metadata=METADATA_EXAMPLE, + ) + self.assertEqual(result, fake_sg) + + def test_create_security_group(self): + # Mock the get_security_group method to simulate non-existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + None + ) + + # Mock the create_security_group method to return a fake SecurityGroup + fake_sg = fakes.generate_fake_resource(security_group.SecurityGroup) + self.openstack_connector.openstack_connection.create_security_group.return_value = ( + fake_sg + ) + + # Call the method + result = self.openstack_connector.create_security_group( + name=fake_sg.name, + udp_port=1234, + ssh=True, + udp=True, + description=fake_sg.description, + research_environment_metadata=METADATA_EXAMPLE, + ) + + # Assertions + self.assertEqual(result, fake_sg) + self.openstack_connector.openstack_connection.create_security_group.assert_called_once_with( + name=fake_sg.name, description=fake_sg.description + ) + self.openstack_connector.openstack_connection.create_security_group_rule.assert_any_call( + direction="ingress", + protocol="udp", + port_range_max=1234, + port_range_min=1234, + secgroup_name_or_id=fake_sg.id, + remote_group_id=self.openstack_connector.GATEWAY_SECURITY_GROUP_ID, + ) + self.openstack_connector.openstack_connection.create_security_group_rule.assert_any_call( + direction="ingress", + protocol="udp", + ethertype="IPv6", + port_range_max=1234, + port_range_min=1234, + secgroup_name_or_id=fake_sg.id, + remote_group_id=self.openstack_connector.GATEWAY_SECURITY_GROUP_ID, + ) + + self.openstack_connector.openstack_connection.create_security_group_rule.assert_any_call( + direction="ingress", + protocol="tcp", + port_range_max=22, + port_range_min=22, + secgroup_name_or_id=fake_sg.id, + remote_group_id=self.openstack_connector.GATEWAY_SECURITY_GROUP_ID, + ) + self.openstack_connector.openstack_connection.create_security_group_rule.assert_any_call( + direction="ingress", + protocol="tcp", + ethertype="IPv6", + port_range_max=22, + port_range_min=22, + secgroup_name_or_id=fake_sg.id, + remote_group_id=self.openstack_connector.GATEWAY_SECURITY_GROUP_ID, + ) + + def test_open_port_range_for_vm_in_project_exception(self): + with self.assertRaises(DefaultException): + self.openstack_connector.open_port_range_for_vm_in_project( + range_start=1000, + range_stop=1000, + openstack_id="wewqeq", + ethertype="IPV7", + protocol="TCP", + ) + + @patch.object(OpenStackConnector, "get_or_create_project_security_group") + @patch.object(OpenStackConnector, "get_or_create_vm_security_group") + @patch.object(OpenStackConnector, "get_server") + @patch("simple_vm_client.openstack_connector.openstack_connector.logger.exception") + def test_open_port_range_for_vm_in_project_conflict_exception( + self, mock_logger_exception, mock_get_server, mock_get_vm_sg, mock_get_proj_sg + ): + fake_server = fakes.generate_fake_resource(server.Server) + + fake_project_sg = fakes.generate_fake_resource(security_group.SecurityGroup) + fake_vm_sg = fakes.generate_fake_resource(security_group.SecurityGroup) + fake_sg_rule = fakes.generate_fake_resource( + security_group_rule.SecurityGroupRule + ) + fake_server.security_groups = [fake_vm_sg, fake_project_sg] + fake_server.metadata = { + "project_name": "fake_project", + "project_id": "fake_project_id", + } + mock_get_server.return_value = fake_server + self.openstack_connector.openstack_connection.create_security_group_rule.return_value = ( + fake_sg_rule + ) + + self.openstack_connector.openstack_connection.create_security_group_rule.side_effect = ConflictException( + "Unit Test" + ) + with self.assertRaises(OpenStackConflictException): + self.openstack_connector.open_port_range_for_vm_in_project( + range_start=1000, range_stop=1000, openstack_id="test" + ) + mock_logger_exception.assert_called_once_with( + f"Could not create security group rule for instance test" + ) + + @patch.object(OpenStackConnector, "get_or_create_project_security_group") + @patch.object(OpenStackConnector, "get_or_create_vm_security_group") + @patch.object(OpenStackConnector, "get_server") + def test_open_port_range_for_vm_in_project( + self, + mock_get_server, + mock_get_vm_sg, + mock_get_proj_sg, + ): + # Mock the get_server_by_id method to return a fake Server + fake_server = fakes.generate_fake_resource(server.Server) + + fake_project_sg = fakes.generate_fake_resource(security_group.SecurityGroup) + fake_vm_sg = fakes.generate_fake_resource(security_group.SecurityGroup) + fake_sg_rule = fakes.generate_fake_resource( + security_group_rule.SecurityGroupRule + ) + fake_server.security_groups = [fake_vm_sg, fake_project_sg] + fake_server.metadata = { + "project_name": "fake_project", + "project_id": "fake_project_id", + } + mock_get_server.return_value = fake_server + + # Mock the get_or_create_project_security_group method to return a fake security group ID + mock_get_proj_sg.return_value = fake_project_sg.id + + # Mock the get_or_create_vm_security_group method to return a fake security group ID + mock_get_vm_sg.return_value = fake_vm_sg.id + + # Mock the create_security_group_rule method to return a fake security group rule + self.openstack_connector.openstack_connection.create_security_group_rule.return_value = ( + fake_sg_rule + ) + + # Call the method + result = self.openstack_connector.open_port_range_for_vm_in_project( + range_start=1000, + range_stop=2000, + openstack_id=fake_server.id, + ethertype="IPv4", + protocol="TCP", + ) + + # Assertions + self.assertEqual(fake_sg_rule, fake_sg_rule) + mock_get_server.assert_called_once_with(openstack_id=fake_server.id) + mock_get_proj_sg.assert_called_once_with( + project_name="fake_project", project_id="fake_project_id" + ) + mock_get_vm_sg.assert_called_once_with(openstack_id=fake_server.id) + self.openstack_connector.openstack_connection.add_server_security_groups.assert_called_once_with( + server=fake_server, security_groups=[fake_vm_sg.id] + ) + + def test_create_or_get_default_ssh_security_group_exists(self): + # Mock the get_security_group method to simulate an existing security group + existing_security_group = fakes.generate_fake_resource( + security_group.SecurityGroup + ) + + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + existing_security_group + ) + + # Call the method + result = self.openstack_connector.create_or_get_default_ssh_security_group() + + # Assertions + self.assertEqual(result.id, existing_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_not_called() + + def test_create_or_get_default_ssh_security_group_create_new(self): + # Mock the get_security_group method to simulate a non-existing security group + self.openstack_connector.openstack_connection.get_security_group.return_value = ( + None + ) + + # Mock the create_security_group method to simulate creating a new security group + new_security_group = fakes.generate_fake_resource(security_group.SecurityGroup) + self.openstack_connector.openstack_connection.create_security_group.return_value = ( + new_security_group + ) + + # Call the method + result = self.openstack_connector.create_or_get_default_ssh_security_group() + + # Assertions + self.assertEqual(result.id, new_security_group.id) + self.openstack_connector.openstack_connection.create_security_group.assert_called_once() + + @patch("simple_vm_client.openstack_connector.openstack_connector.os.path.dirname") + @patch("simple_vm_client.openstack_connector.openstack_connector.os.path.abspath") + @patch("simple_vm_client.openstack_connector.openstack_connector.os.path.join") + @patch( + "simple_vm_client.openstack_connector.openstack_connector.open", + new_callable=unittest.mock.mock_open, + read_data="mock_script_content", + ) + def test_create_mount_init_script( + self, mock_open, mock_join, mock_abspath, mock_dirname + ): + # Mock the relevant parts for os.path operations + mock_abspath.return_value = "/mock/absolute/path" + mock_dirname.return_value = "/mock/directory" + mock_join.return_value = "/mock/join/path" + + # Call the method with sample volume data + result = self.openstack_connector.create_mount_init_script( + new_volumes=[{"openstack_id": "vol_id_1", "path": "/path_1"}], + attach_volumes=[{"openstack_id": "vol_id_2", "path": "/path_2"}], + ) + + # Assertions + self.assertEqual(result, b"mock_script_content") + mock_open.assert_called_once_with("/mock/join/path", "r") + mock_open().read.assert_called_once() + + def test_create_mount_init_script_no_volumes(self): + result = self.openstack_connector.create_mount_init_script( + new_volumes=None, attach_volumes=None + ) + self.assertEqual(result, "") + + def test_create_mount_init_script_no_new_volumes(self): + result = self.openstack_connector.create_mount_init_script( + new_volumes=None, + attach_volumes=[{"openstack_id": "vol_id_1", "path": "/path_1"}], + ) + self.assertIn(b"vol_id_1", result) + + def test_create_mount_init_script_no_attach_volumes(self): + result = self.openstack_connector.create_mount_init_script( + new_volumes=[{"openstack_id": "vol_id_2", "path": "/path_2"}], + attach_volumes=None, + ) + self.assertIn(b"vol_id_2", result) + + def test_delete_security_group_rule_sucess(self): + self.openstack_connector.openstack_connection.delete_security_group_rule.return_value = ( + True + ) + self.openstack_connector.delete_security_group_rule("rule_id") + self.openstack_connector.openstack_connection.delete_security_group_rule.assert_called_once_with( + rule_id="rule_id" + ) + + def test_delete_security_group_rule_failure(self): + self.openstack_connector.openstack_connection.delete_security_group_rule.return_value = ( + False + ) + with self.assertRaises(DefaultException): + self.openstack_connector.delete_security_group_rule("rule_id") + self.openstack_connector.openstack_connection.delete_security_group_rule.assert_called_once_with( + rule_id="rule_id" + ) + + def test_get_gateway_ip(self): + result = self.openstack_connector.get_gateway_ip() + self.assertEqual(result, {"gateway_ip": self.openstack_connector.GATEWAY_IP}) + + def test_get_calculation_values(self): + result = self.openstack_connector.get_calculation_values() + self.assertEqual( + result, + { + "SSH_PORT_CALCULATION": self.openstack_connector.SSH_PORT_CALCULATION, + "UDP_PORT_CALCULATION": self.openstack_connector.UDP_PORT_CALCULATION, + }, + ) + + def test_create_volume_by_volume_snap_exception(self): + fake_source_volume = fakes.generate_fake_resource(volume.Volume) + fake_result_volume = fakes.generate_fake_resource(volume.Volume) + + self.openstack_connector.openstack_connection.block_storage.create_volume.side_effect = ResourceFailure( + "UNit Test" + ) + with self.assertRaises(ResourceNotAvailableException): + self.openstack_connector.create_volume_by_volume_snap( + volume_name=fake_result_volume.name, + metadata={"data": "data"}, + volume_snap_id=fake_source_volume.id, + ) + + def test_create_volume_by_volume_snap(self): + fake_source_volume = fakes.generate_fake_resource(volume.Volume) + fake_result_volume = fakes.generate_fake_resource(volume.Volume) + + self.openstack_connector.openstack_connection.block_storage.create_volume.return_value = ( + fake_result_volume + ) + result = self.openstack_connector.create_volume_by_volume_snap( + volume_name=fake_result_volume.name, + metadata={"data": "data"}, + volume_snap_id=fake_source_volume.id, + ) + self.assertEqual(result, fake_result_volume) + + def test_create_volume_by_source_volume(self): + fake_source_volume = fakes.generate_fake_resource(volume.Volume) + fake_result_volume = fakes.generate_fake_resource(volume.Volume) + self.openstack_connector.openstack_connection.block_storage.create_volume.return_value = ( + fake_result_volume + ) + result = self.openstack_connector.create_volume_by_source_volume( + volume_name=fake_result_volume.name, + metadata={"data": "data"}, + source_volume_id=fake_source_volume.id, + ) + self.assertEqual(result, fake_result_volume) + + def test_create_create_volume_by_source_volume_exception(self): + fake_source_volume = fakes.generate_fake_resource(volume.Volume) + fake_result_volume = fakes.generate_fake_resource(volume.Volume) + + self.openstack_connector.openstack_connection.block_storage.create_volume.side_effect = ResourceFailure( + "UNit Test" + ) + with self.assertRaises(ResourceNotAvailableException): + self.openstack_connector.create_volume_by_source_volume( + volume_name=fake_result_volume.name, + metadata={"data": "data"}, + source_volume_id=fake_source_volume.id, + ) + + @patch( + "simple_vm_client.openstack_connector.openstack_connector.connection.Connection" + ) + def test___init__(self, mock_authorize): + # Mock the relevant parts for file operations and connection + + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + # Call the __init__ method + OpenStackConnector(config_file=temp_file.name) + os.remove(temp_file.name) + # Assertions + + mock_authorize.assert_called_once() + + def test___init__failed_auth(self): + # Mock the relevant parts for file operations and connection + + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + # Call the __init__ method + with self.assertRaises(Exception): + OpenStackConnector(config_file=temp_file.name) + os.remove(temp_file.name) + # Assertions + + @patch.dict( + os.environ, + { + "USE_APPLICATION_CREDENTIALS": "True", + "OS_APPLICATION_CREDENTIAL_ID": "APP_ID", + "OS_APPLICATION_CREDENTIAL_SECRET": "APP_SECRET", + }, + ) + @patch( + "simple_vm_client.openstack_connector.openstack_connector.connection.Connection" + ) + def test___init__os_creds(self, mock_authorize): + with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file: + temp_file.write(CONFIG_DATA) + # Call the __init__ method + OpenStackConnector(config_file=temp_file.name) + os.remove(temp_file.name) + # Assertions + + mock_authorize.assert_called_once() + + +if __name__ == "__main__": + unittest.main() diff --git a/simple_vm_client/test_virtualmachinehandler.py b/simple_vm_client/test_virtualmachinehandler.py new file mode 100644 index 00000000..060b23e4 --- /dev/null +++ b/simple_vm_client/test_virtualmachinehandler.py @@ -0,0 +1,669 @@ +import unittest +from unittest.mock import MagicMock, patch + +from openstack.block_storage.v2 import volume +from openstack.block_storage.v2.snapshot import Snapshot +from openstack.compute.v2 import flavor, server +from openstack.image.v2 import image +from openstack.test import fakes + +from simple_vm_client.VirtualMachineHandler import VirtualMachineHandler + +IMAGES_LIST = list(fakes.generate_fake_resources(image.Image, 3)) +IMAGE = fakes.generate_fake_resource(image.Image) +FLAVORS_LIST = list(fakes.generate_fake_resources(image.Image, 3)) +FLAVOR = fakes.generate_fake_resource(flavor.Flavor) +SERVER_LIST = list(fakes.generate_fake_resources(server.Server, 3)) +SERVER = fakes.generate_fake_resource(server.Server) +VOLUME_LIST = list(fakes.generate_fake_resources(volume.Volume, 3)) +VOLUME = fakes.generate_fake_resource(volume.Volume) +VOL_SNAP = fakes.generate_fake_resource(Snapshot) +OPENSTACK_ID = "vm_id" +METADATA = {"data": "data"} +BIBIGIRD_ID = "Bibigrid_id" +NAME = "UnitTest" +USERNAME = "username" +DESCRIPTION = "desc" +STORAGE = 5 + + +class TestVirtualMachineHandler(unittest.TestCase): + @patch("simple_vm_client.VirtualMachineHandler.OpenStackConnector") + @patch("simple_vm_client.VirtualMachineHandler.BibigridConnector") + @patch("simple_vm_client.VirtualMachineHandler.ForcConnector") + def setUp(self, mock_template, mock_redis, mock_connection_pool): + self.handler = VirtualMachineHandler(config_file="config_path") + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_images(self, converter): + self.handler.openstack_connector.get_images.return_value = IMAGES_LIST + self.handler.get_images() + self.handler.openstack_connector.get_images.assert_called_once() + converter.os_to_thrift_images.assert_called_once_with( + openstack_images=IMAGES_LIST + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_image(self, converter): + self.handler.openstack_connector.get_image.return_value = IMAGE + self.handler.get_image("image_id") + self.handler.openstack_connector.get_image.assert_called_once_with( + name_or_id="image_id", ignore_not_active=False + ) + converter.os_to_thrift_image.assert_called_once_with(openstack_image=IMAGE) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_public_images(self, converter): + self.handler.openstack_connector.get_public_images.return_value = IMAGES_LIST + self.handler.get_public_images() + self.handler.openstack_connector.get_public_images.assert_called_once_with() + converter.os_to_thrift_images.assert_called_once_with( + openstack_images=IMAGES_LIST + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_private_images(self, converter): + self.handler.openstack_connector.get_private_images.return_value = IMAGES_LIST + self.handler.get_private_images() + self.handler.openstack_connector.get_private_images.assert_called_once_with() + converter.os_to_thrift_images.assert_called_once_with( + openstack_images=IMAGES_LIST + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_flavors(self, converter): + self.handler.openstack_connector.get_flavors.return_value = FLAVORS_LIST + self.handler.get_flavors() + self.handler.openstack_connector.get_flavors.assert_called_once_with() + converter.os_to_thrift_flavors.assert_called_once_with( + openstack_flavors=FLAVORS_LIST + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_volume(self, converter): + self.handler.openstack_connector.get_volume.return_value = VOLUME + self.handler.get_volume("volume_id") + self.handler.openstack_connector.get_volume.assert_called_once_with( + name_or_id="volume_id" + ) + converter.os_to_thrift_volume.assert_called_once_with(openstack_volume=VOLUME) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_volumes_by_ids(self, converter): + self.handler.openstack_connector.get_volume.side_effect = VOLUME_LIST + self.handler.get_volumes_by_ids([vol.id for vol in VOLUME_LIST]) + for vol in VOLUME_LIST: + self.handler.openstack_connector.get_volume.assert_any_call( + name_or_id=vol.id + ) + converter.os_to_thrift_volume.assert_any_call(openstack_volume=vol) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_resize_volume(self, converter): + self.handler.resize_volume("id", 5) + self.handler.openstack_connector.resize_volume.asser_called_once_with("id", 5) + + def test_get_gateway_ip(self): + self.handler.get_gateway_ip() + self.handler.openstack_connector.get_gateway_ip.assert_called_once() + + def test_get_calculation_values(self): + self.handler.get_calculation_values() + self.handler.openstack_connector.get_calculation_values.assert_called_once() + + def test_import_keypair(self): + key_name = "key" + pub_key = "pub" + self.handler.import_keypair(keyname=key_name, public_key=pub_key) + self.handler.openstack_connector.import_keypair.assert_called_once_with( + keyname=key_name, public_key=pub_key + ) + + def test_exist_server(self) -> bool: + name = "test" + self.handler.exist_server(name=name) + self.handler.openstack_connector.exist_server.assert_called_once_with(name=name) + + def test_get_vm_ports(self): + openstack_id = "vm_id" + self.handler.get_vm_ports(openstack_id=openstack_id) + self.handler.openstack_connector.get_vm_ports.assert_called_once_with( + openstack_id=openstack_id + ) + + def test_stop_server(self): + openstack_id = "vm_id" + self.handler.stop_server(openstack_id=openstack_id) + self.handler.openstack_connector.stop_server.assert_called_once_with( + openstack_id=openstack_id + ) + + def test_delete_server(self) -> None: + self.handler.delete_server(openstack_id=OPENSTACK_ID) + self.handler.openstack_connector.delete_server.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + + def test_reboot_hard_server(self) -> None: + self.handler.reboot_hard_server(openstack_id=OPENSTACK_ID) + self.handler.openstack_connector.reboot_hard_server.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + + def test_reboot_soft_server(self) -> None: + self.handler.reboot_soft_server(openstack_id=OPENSTACK_ID) + self.handler.openstack_connector.reboot_soft_server.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + + def test_resume_server(self) -> None: + self.handler.resume_server(openstack_id=OPENSTACK_ID) + self.handler.openstack_connector.resume_server.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + + def test_set_server_metadata(self): + self.handler.set_server_metadata(openstack_id=OPENSTACK_ID, metadata=METADATA) + self.handler.openstack_connector.set_server_metadata.assert_called_once_with( + openstack_id=OPENSTACK_ID, metadata=METADATA + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_server(self, converter): + self.handler.openstack_connector.get_server.return_value = SERVER + self.handler.forc_connector.get_playbook_status.return_value = SERVER + + self.handler.get_server(openstack_id=OPENSTACK_ID) + self.handler.openstack_connector.get_server.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + self.handler.forc_connector.get_playbook_status.assert_called_once_with( + server=SERVER + ) + converter.os_to_thrift_server.assert_called_once_with(openstack_server=SERVER) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_servers(self, converter): + self.handler.openstack_connector.get_servers.return_value = SERVER_LIST + self.handler.forc_connector.get_playbook_status.side_effect = SERVER_LIST + self.handler.get_servers() + for svr in SERVER_LIST: + self.handler.forc_connector.get_playbook_status.assert_any_call(server=svr) + + converter.os_to_thrift_servers.assert_any_call(openstack_servers=SERVER_LIST) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_servers_by_ids(self, converter): + ids = [serv.id for serv in SERVER_LIST] + self.handler.openstack_connector.get_servers_by_ids.return_value = SERVER_LIST + self.handler.get_servers_by_ids(server_ids=ids) + + self.handler.openstack_connector.get_servers_by_ids.assert_called_once_with( + ids=ids + ) + converter.os_to_thrift_servers.assert_any_call(openstack_servers=SERVER_LIST) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_servers_by_bibigrid_id(self, converter): + self.handler.openstack_connector.get_servers_by_bibigrid_id.return_value = ( + SERVER_LIST + ) + self.handler.get_servers_by_bibigrid_id(bibigrid_id=BIBIGIRD_ID) + + self.handler.openstack_connector.get_servers_by_bibigrid_id.assert_called_once_with( + bibigrid_id=BIBIGIRD_ID + ) + converter.os_to_thrift_servers.assert_called_once_with( + openstack_servers=SERVER_LIST + ) + + def test_get_playbook_logs(self): + self.handler.get_playbook_logs(openstack_id=OPENSTACK_ID) + self.handler.forc_connector.get_playbook_logs.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + + def test_has_forc(self): + self.handler.has_forc() + self.handler.forc_connector.has_forc.assert_called_once() + + def test_get_forc_url(self): + self.handler.get_forc_url() + self.handler.forc_connector.get_forc_access_url.assert_called_once() + + def test_create_snapshot(self): + self.handler.create_snapshot( + openstack_id=OPENSTACK_ID, + name=NAME, + username=USERNAME, + base_tags=[], + description=DESCRIPTION, + ) + self.handler.openstack_connector.create_snapshot.assert_called_once_with( + openstack_id=OPENSTACK_ID, + name=NAME, + username=USERNAME, + base_tags=[], + description=DESCRIPTION, + ) + + def test_delete_image(self) -> None: + self.handler.delete_image(image_id=OPENSTACK_ID) + self.handler.openstack_connector.delete_image.assert_called_once_with( + image_id=OPENSTACK_ID + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_create_volume(self, converter): + self.handler.openstack_connector.create_volume.return_value = VOLUME + self.handler.create_volume( + volume_name=NAME, volume_storage=STORAGE, metadata=METADATA + ) + self.handler.openstack_connector.create_volume.assert_called_once_with( + volume_name=NAME, volume_storage=STORAGE, metadata=METADATA + ) + converter.os_to_thrift_volume.assert_called_once_with(openstack_volume=VOLUME) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_create_volume_by_source_volume(self, converter): + self.handler.openstack_connector.create_volume_by_source_volume.return_value = ( + VOLUME + ) + self.handler.create_volume_by_source_volume( + source_volume_id=OPENSTACK_ID, volume_name=NAME, metadata=METADATA + ) + self.handler.openstack_connector.create_volume_by_source_volume.assert_called_once_with( + source_volume_id=OPENSTACK_ID, volume_name=NAME, metadata=METADATA + ) + converter.os_to_thrift_volume.assert_called_once_with(openstack_volume=VOLUME) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_create_volume_by_volume_snap(self, converter): + self.handler.openstack_connector.create_volume_by_volume_snap.return_value = ( + VOLUME + ) + self.handler.create_volume_by_volume_snap( + volume_snap_id=OPENSTACK_ID, volume_name=NAME, metadata=METADATA + ) + self.handler.openstack_connector.create_volume_by_volume_snap.assert_called_once_with( + volume_snap_id=OPENSTACK_ID, volume_name=NAME, metadata=METADATA + ) + converter.os_to_thrift_volume.assert_called_once_with(openstack_volume=VOLUME) + + def test_create_volume_snapshot(self): + self.handler.create_volume_snapshot( + volume_id=OPENSTACK_ID, name=NAME, description=DESCRIPTION + ) + self.handler.openstack_connector.create_volume_snapshot.assert_called_once_with( + volume_id=OPENSTACK_ID, name=NAME, description=DESCRIPTION + ) + + @patch("simple_vm_client.VirtualMachineHandler.thrift_converter") + def test_get_volume_snapshot(self, converter): + self.handler.openstack_connector.get_volume_snapshot.return_value = VOL_SNAP + self.handler.get_volume_snapshot(snapshot_id=OPENSTACK_ID) + converter.os_to_thrift_volume_snapshot.assert_called_once_with( + openstack_snapshot=VOL_SNAP + ) + + def test_delete_volume_snapshot(self): + self.handler.delete_volume_snapshot(snapshot_id=OPENSTACK_ID) + self.handler.openstack_connector.delete_volume_snapshot.assert_called_once_with( + snapshot_id=OPENSTACK_ID + ) + + def test_detach_volume(self): + self.handler.detach_volume(volume_id=OPENSTACK_ID, server_id=OPENSTACK_ID) + self.handler.openstack_connector.detach_volume.assert_called_once_with( + volume_id=OPENSTACK_ID, server_id=OPENSTACK_ID + ) + + def test_delete_volume(self): + self.handler.delete_volume(volume_id=OPENSTACK_ID) + self.handler.openstack_connector.delete_volume.assert_called_once_with( + volume_id=OPENSTACK_ID + ) + + def test_attach_volume_to_server(self): + self.handler.attach_volume_to_server( + openstack_id=OPENSTACK_ID, volume_id=OPENSTACK_ID + ) + self.handler.openstack_connector.attach_volume_to_server.assert_called_once_with( + openstack_id=OPENSTACK_ID, volume_id=OPENSTACK_ID + ) + + def test_get_limits(self): + self.handler.get_limits() + self.handler.openstack_connector.get_limits.assert_called_once() + + def test_create_backend(self): + self.handler.create_backend( + owner=USERNAME, + user_key_url=USERNAME, + template=USERNAME, + upstream_url=USERNAME, + ) + self.handler.forc_connector.create_backend.assert_called_once_with( + owner=USERNAME, + user_key_url=USERNAME, + template=USERNAME, + upstream_url=USERNAME, + ) + + def test_delete_backend(self): + self.handler.delete_backend(id=OPENSTACK_ID) + self.handler.forc_connector.delete_backend.assert_called_once_with( + backend_id=OPENSTACK_ID + ) + + def test_get_backends(self): + self.handler.get_backends() + self.handler.forc_connector.get_backends.assert_called_once() + + def test_get_backends_by_owner(self): + self.handler.get_backends_by_owner(owner=USERNAME) + self.handler.forc_connector.get_backends_by_owner.assert_called_once_with( + owner=USERNAME + ) + + def test_get_backends_by_template(self): + self.handler.get_backends_by_template(template=USERNAME) + self.handler.forc_connector.get_backends_by_template.assert_called_once_with( + template=USERNAME + ) + + def test_get_backend_by_id(self): + self.handler.get_backend_by_id(id=OPENSTACK_ID) + self.handler.forc_connector.get_backend_by_id.assert_called_once_with( + id=OPENSTACK_ID + ) + + def test_add_user_to_backend(self): + self.handler.add_user_to_backend(backend_id=OPENSTACK_ID, user_id=USERNAME) + self.handler.forc_connector.add_user_to_backend.assert_called_once_with( + backend_id=OPENSTACK_ID, user_id=USERNAME + ) + + def test_get_users_from_backend(self): + self.handler.get_users_from_backend(backend_id=OPENSTACK_ID) + self.handler.forc_connector.get_users_from_backend.assert_called_once_with( + backend_id=OPENSTACK_ID + ) + + def test_delete_user_from_backend(self): + self.handler.delete_user_from_backend(backend_id=OPENSTACK_ID, user_id=USERNAME) + self.handler.forc_connector.delete_user_from_backend.assert_called_once_with( + backend_id=OPENSTACK_ID, user_id=USERNAME + ) + + def test_get_allowed_templates(self): + self.handler.get_allowed_templates() + self.handler.forc_connector.template.get_allowed_templates.assert_called_once() + + def test_delete_security_group_rule(self): + self.handler.delete_security_group_rule(openstack_id=OPENSTACK_ID) + self.handler.openstack_connector.delete_security_group_rule.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + + def test_open_port_range_for_vm_in_project(self): + self.handler.open_port_range_for_vm_in_project( + range_start=1000, range_stop=1000, openstack_id=OPENSTACK_ID + ) + self.handler.openstack_connector.open_port_range_for_vm_in_project.assert_called_once_with( + range_start=1000, + range_stop=1000, + openstack_id=OPENSTACK_ID, + ethertype="IPv4", + protocol="TCP", + ) + + def test_add_udp_security_group(self): + self.handler.add_udp_security_group(server_id=OPENSTACK_ID) + self.handler.openstack_connector.add_udp_security_group.assert_called_once_with( + server_id=OPENSTACK_ID + ) + + def test_start_server_with_res(self): + self.handler.forc_connector.get_metadata_by_research_environment.return_value = ( + "res_metadata" + ) + + self.handler.start_server( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + public_key="pub", + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + additional_keys=[], + research_environment="de", + additional_security_group_ids=[], + ) + self.handler.openstack_connector.start_server.assert_called_once_with( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + public_key="pub", + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + additional_keys=[], + research_environment_metadata="res_metadata", + additional_security_group_ids=[], + ) + + def test_start_server(self): + self.handler.start_server( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + public_key="pub", + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + additional_keys=[], + research_environment="", + additional_security_group_ids=[], + ) + self.handler.openstack_connector.start_server.assert_called_once_with( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + public_key="pub", + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + additional_keys=[], + research_environment_metadata=None, + additional_security_group_ids=[], + ) + + def test_start_server_with_custom_key(self): + self.handler.openstack_connector.start_server_with_playbook.return_value = ( + SERVER.id, + "priv", + ) + self.handler.start_server_with_custom_key( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + research_environment="", + additional_security_group_ids=[], + ) + self.handler.openstack_connector.start_server_with_playbook.assert_called_once_with( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + additional_security_group_ids=[], + research_environment_metadata=None, + ) + self.handler.forc_connector.set_vm_wait_for_playbook.assert_called_once_with( + openstack_id=SERVER.id, private_key="priv", name=SERVER.name + ) + + def test_start_server_with_custom_key_and_res(self): + self.handler.openstack_connector.start_server_with_playbook.return_value = ( + SERVER.id, + "priv", + ) + self.handler.forc_connector.get_metadata_by_research_environment.return_value = ( + "res_metadata" + ) + self.handler.start_server_with_custom_key( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + research_environment="de", + additional_security_group_ids=[], + ) + self.handler.openstack_connector.start_server_with_playbook.assert_called_once_with( + flavor_name=FLAVOR.name, + image_name=IMAGE.name, + servername=SERVER.name, + metadata=METADATA, + volume_ids_path_new=[], + volume_ids_path_attach=[], + additional_security_group_ids=[], + research_environment_metadata="res_metadata", + ) + self.handler.forc_connector.set_vm_wait_for_playbook.assert_called_once_with( + openstack_id=SERVER.id, private_key="priv", name=SERVER.name + ) + + def test_create_and_deploy_playbook(self): + self.handler.openstack_connector.get_vm_ports.return_value = { + "port": str(20), + "udp": str(25), + } + self.handler.openstack_connector.get_gateway_ip.return_value = { + "gateway_ip": "192.168.0.1" + } + self.handler.openstack_connector.CLOUD_SITE = "bielefeld" + + self.handler.create_and_deploy_playbook( + public_key="pub", + openstack_id=OPENSTACK_ID, + conda_packages=[], + research_environment_template=USERNAME, + apt_packages=[], + create_only_backend=False, + base_url=USERNAME, + ) + + self.handler.openstack_connector.get_vm_ports.assert_called_once_with( + openstack_id=OPENSTACK_ID + ) + self.handler.openstack_connector.get_gateway_ip.assert_called_once() + self.handler.forc_connector.create_and_deploy_playbook.assert_called_once_with( + public_key="pub", + openstack_id=OPENSTACK_ID, + conda_packages=[], + research_environment_template=USERNAME, + apt_packages=[], + port=20, + cloud_site="bielefeld", + ip="192.168.0.1", + create_only_backend=False, + base_url=USERNAME, + ) + + def test_is_bibigrid_available(self): + self.handler.is_bibigrid_available() + self.handler.bibigrid_connector.is_bibigrid_available.assert_called_once() + + def test_get_cluster_info(self): + self.handler.get_cluster_info(cluster_id=OPENSTACK_ID) + self.handler.bibigrid_connector.get_cluster_info.assert_called_once_with( + cluster_id=OPENSTACK_ID + ) + + def test_get_cluster_status(self): + self.handler.get_cluster_status(cluster_id=OPENSTACK_ID) + self.handler.bibigrid_connector.get_cluster_status.assert_called_once_with( + cluster_id=OPENSTACK_ID + ) + + def test_start_cluster(self): + master = MagicMock() + worker_instances = [MagicMock()] + self.handler.start_cluster( + public_key="pub", + master_instance=master, + worker_instances=worker_instances, + user=USERNAME, + ) + self.handler.bibigrid_connector.start_cluster.assert_called_once_with( + public_key="pub", + master_instance=master, + worker_instances=worker_instances, + user=USERNAME, + ) + + def test_terminate_cluster(self): + self.handler.terminate_cluster(cluster_id=OPENSTACK_ID) + self.handler.bibigrid_connector.terminate_cluster.assert_called_once_with( + cluster_id=OPENSTACK_ID + ) + + def test_add_cluster_machine(self): + self.handler.add_cluster_machine( + cluster_id=OPENSTACK_ID, + cluster_user=USERNAME, + cluster_group_id=["test"], + image_name=IMAGE.name, + flavor_name=FLAVOR.name, + name=NAME, + key_name=NAME, + batch_idx=1, + worker_idx=1, + ) + self.handler.openstack_connector.add_cluster_machine.assert_called_once_with( + cluster_id=OPENSTACK_ID, + cluster_user=USERNAME, + cluster_group_id=["test"], + image_name=IMAGE.name, + flavor_name=FLAVOR.name, + name=NAME, + key_name=NAME, + batch_idx=1, + worker_idx=1, + ) + + def test_keyboard_interrupt_handler_playbooks(self): + mock_stop_a = MagicMock() + mock_stop_b = MagicMock() + mock_stop_c = MagicMock() + + self.handler.forc_connector._active_playbooks = { + "a": mock_stop_a, + "b": mock_stop_b, + "c": mock_stop_c, + } + self.handler.forc_connector.redis_connection.hget.side_effect = [ + "a".encode("utf-8"), + "b".encode("utf-8"), + "c".encode("utf-8"), + ] + with self.assertRaises(SystemExit): + self.handler.keyboard_interrupt_handler_playbooks() + for key in self.handler.forc_connector._active_playbooks.keys(): + self.handler.openstack_connector.delete_keypair.assert_any_call( + key_name=key + ) + self.handler.openstack_connector.delete_server.assert_any_call( + openstack_id=key + ) + mock_stop_a.stop.assert_called_once() + mock_stop_b.stop.assert_called_once() + mock_stop_c.stop.assert_called_once() diff --git a/simple_vm_client/ttypes.py b/simple_vm_client/ttypes.py index d1230a8d..e1a24eba 100644 --- a/simple_vm_client/ttypes.py +++ b/simple_vm_client/ttypes.py @@ -1,18 +1,18 @@ # -# Autogenerated by Thrift Compiler (0.16.0) +# Autogenerated by Thrift Compiler (0.19.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # # options string: py # -import sys - +from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, TApplicationException from thrift.protocol.TProtocol import TProtocolException -from thrift.Thrift import TException, TType -from thrift.transport import TTransport from thrift.TRecursive import fix_spec +import sys + +from thrift.transport import TTransport all_structs = [] @@ -27,14 +27,8 @@ class Backend(object): """ - def __init__( - self, - id=None, - owner=None, - location_url=None, - template=None, - template_version=None, - ): + + def __init__(self, id=None, owner=None, location_url=None, template=None, template_version=None,): self.id = id self.owner = owner self.location_url = location_url @@ -42,11 +36,7 @@ def __init__( self.template_version = template_version def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -61,38 +51,22 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.owner = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.owner = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.location_url = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.location_url = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.template = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.template = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.template_version = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.template_version = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -102,44 +76,28 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("Backend") + oprot.writeStructBegin('Backend') if self.id is not None: - oprot.writeFieldBegin("id", TType.I64, 1) + oprot.writeFieldBegin('id', TType.I64, 1) oprot.writeI64(self.id) oprot.writeFieldEnd() if self.owner is not None: - oprot.writeFieldBegin("owner", TType.STRING, 2) - oprot.writeString( - self.owner.encode("utf-8") if sys.version_info[0] == 2 else self.owner - ) + oprot.writeFieldBegin('owner', TType.STRING, 2) + oprot.writeString(self.owner.encode('utf-8') if sys.version_info[0] == 2 else self.owner) oprot.writeFieldEnd() if self.location_url is not None: - oprot.writeFieldBegin("location_url", TType.STRING, 3) - oprot.writeString( - self.location_url.encode("utf-8") - if sys.version_info[0] == 2 - else self.location_url - ) + oprot.writeFieldBegin('location_url', TType.STRING, 3) + oprot.writeString(self.location_url.encode('utf-8') if sys.version_info[0] == 2 else self.location_url) oprot.writeFieldEnd() if self.template is not None: - oprot.writeFieldBegin("template", TType.STRING, 4) - oprot.writeString( - self.template.encode("utf-8") - if sys.version_info[0] == 2 - else self.template - ) + oprot.writeFieldBegin('template', TType.STRING, 4) + oprot.writeString(self.template.encode('utf-8') if sys.version_info[0] == 2 else self.template) oprot.writeFieldEnd() if self.template_version is not None: - oprot.writeFieldBegin("template_version", TType.STRING, 5) - oprot.writeString( - self.template_version.encode("utf-8") - if sys.version_info[0] == 2 - else self.template_version - ) + oprot.writeFieldBegin('template_version', TType.STRING, 5) + oprot.writeString(self.template_version.encode('utf-8') if sys.version_info[0] == 2 else self.template_version) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -148,8 +106,9 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -175,20 +134,8 @@ class ResearchEnvironmentTemplate(object): """ - def __init__( - self, - template_name=None, - title=None, - description=None, - logo_url=None, - info_url=None, - port=None, - incompatible_versions=None, - is_maintained=None, - information_for_display=None, - min_ram=0, - min_cores=0, - ): + + def __init__(self, template_name=None, title=None, description=None, logo_url=None, info_url=None, port=None, incompatible_versions=None, is_maintained=None, information_for_display=None, min_ram=0, min_cores=0,): self.template_name = template_name self.title = title self.description = description @@ -206,11 +153,7 @@ def __init__( self.min_cores = min_cores def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -220,47 +163,27 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.template_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.template_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.title = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.title = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.logo_url = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.logo_url = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.info_url = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.info_url = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: @@ -273,11 +196,7 @@ def read(self, iprot): self.incompatible_versions = [] (_etype3, _size0) = iprot.readListBegin() for _i4 in range(_size0): - _elem5 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem5 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.incompatible_versions.append(_elem5) iprot.readListEnd() else: @@ -292,16 +211,8 @@ def read(self, iprot): self.information_for_display = {} (_ktype7, _vtype8, _size6) = iprot.readMapBegin() for _i10 in range(_size6): - _key11 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val12 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key11 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val12 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.information_for_display[_key11] = _val12 iprot.readMapEnd() else: @@ -323,86 +234,58 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ResearchEnvironmentTemplate") + oprot.writeStructBegin('ResearchEnvironmentTemplate') if self.template_name is not None: - oprot.writeFieldBegin("template_name", TType.STRING, 1) - oprot.writeString( - self.template_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.template_name - ) + oprot.writeFieldBegin('template_name', TType.STRING, 1) + oprot.writeString(self.template_name.encode('utf-8') if sys.version_info[0] == 2 else self.template_name) oprot.writeFieldEnd() if self.title is not None: - oprot.writeFieldBegin("title", TType.STRING, 2) - oprot.writeString( - self.title.encode("utf-8") if sys.version_info[0] == 2 else self.title - ) + oprot.writeFieldBegin('title', TType.STRING, 2) + oprot.writeString(self.title.encode('utf-8') if sys.version_info[0] == 2 else self.title) oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 3) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 3) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() if self.logo_url is not None: - oprot.writeFieldBegin("logo_url", TType.STRING, 4) - oprot.writeString( - self.logo_url.encode("utf-8") - if sys.version_info[0] == 2 - else self.logo_url - ) + oprot.writeFieldBegin('logo_url', TType.STRING, 4) + oprot.writeString(self.logo_url.encode('utf-8') if sys.version_info[0] == 2 else self.logo_url) oprot.writeFieldEnd() if self.info_url is not None: - oprot.writeFieldBegin("info_url", TType.STRING, 5) - oprot.writeString( - self.info_url.encode("utf-8") - if sys.version_info[0] == 2 - else self.info_url - ) + oprot.writeFieldBegin('info_url', TType.STRING, 5) + oprot.writeString(self.info_url.encode('utf-8') if sys.version_info[0] == 2 else self.info_url) oprot.writeFieldEnd() if self.port is not None: - oprot.writeFieldBegin("port", TType.I32, 6) + oprot.writeFieldBegin('port', TType.I32, 6) oprot.writeI32(self.port) oprot.writeFieldEnd() if self.incompatible_versions is not None: - oprot.writeFieldBegin("incompatible_versions", TType.LIST, 7) + oprot.writeFieldBegin('incompatible_versions', TType.LIST, 7) oprot.writeListBegin(TType.STRING, len(self.incompatible_versions)) for iter13 in self.incompatible_versions: - oprot.writeString( - iter13.encode("utf-8") if sys.version_info[0] == 2 else iter13 - ) + oprot.writeString(iter13.encode('utf-8') if sys.version_info[0] == 2 else iter13) oprot.writeListEnd() oprot.writeFieldEnd() if self.is_maintained is not None: - oprot.writeFieldBegin("is_maintained", TType.BOOL, 8) + oprot.writeFieldBegin('is_maintained', TType.BOOL, 8) oprot.writeBool(self.is_maintained) oprot.writeFieldEnd() if self.information_for_display is not None: - oprot.writeFieldBegin("information_for_display", TType.MAP, 9) - oprot.writeMapBegin( - TType.STRING, TType.STRING, len(self.information_for_display) - ) + oprot.writeFieldBegin('information_for_display', TType.MAP, 9) + oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.information_for_display)) for kiter14, viter15 in self.information_for_display.items(): - oprot.writeString( - kiter14.encode("utf-8") if sys.version_info[0] == 2 else kiter14 - ) - oprot.writeString( - viter15.encode("utf-8") if sys.version_info[0] == 2 else viter15 - ) + oprot.writeString(kiter14.encode('utf-8') if sys.version_info[0] == 2 else kiter14) + oprot.writeString(viter15.encode('utf-8') if sys.version_info[0] == 2 else viter15) oprot.writeMapEnd() oprot.writeFieldEnd() if self.min_ram is not None: - oprot.writeFieldBegin("min_ram", TType.I32, 10) + oprot.writeFieldBegin('min_ram', TType.I32, 10) oprot.writeI32(self.min_ram) oprot.writeFieldEnd() if self.min_cores is not None: - oprot.writeFieldBegin("min_cores", TType.I32, 11) + oprot.writeFieldBegin('min_cores', TType.I32, 11) oprot.writeI32(self.min_cores) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -412,8 +295,9 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -433,14 +317,8 @@ class CondaPackage(object): """ - def __init__( - self, - build=None, - build_number=None, - name=None, - version=None, - home=None, - ): + + def __init__(self, build=None, build_number=None, name=None, version=None, home=None,): self.build = build self.build_number = build_number self.name = name @@ -448,11 +326,7 @@ def __init__( self.home = home def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -462,47 +336,27 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.build = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.build = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.build_number = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.build_number = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.version = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.version = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.home = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.home = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -512,44 +366,28 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("CondaPackage") + oprot.writeStructBegin('CondaPackage') if self.build is not None: - oprot.writeFieldBegin("build", TType.STRING, 1) - oprot.writeString( - self.build.encode("utf-8") if sys.version_info[0] == 2 else self.build - ) + oprot.writeFieldBegin('build', TType.STRING, 1) + oprot.writeString(self.build.encode('utf-8') if sys.version_info[0] == 2 else self.build) oprot.writeFieldEnd() if self.build_number is not None: - oprot.writeFieldBegin("build_number", TType.STRING, 2) - oprot.writeString( - self.build_number.encode("utf-8") - if sys.version_info[0] == 2 - else self.build_number - ) + oprot.writeFieldBegin('build_number', TType.STRING, 2) + oprot.writeString(self.build_number.encode('utf-8') if sys.version_info[0] == 2 else self.build_number) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 3) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 3) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.version is not None: - oprot.writeFieldBegin("version", TType.STRING, 4) - oprot.writeString( - self.version.encode("utf-8") - if sys.version_info[0] == 2 - else self.version - ) + oprot.writeFieldBegin('version', TType.STRING, 4) + oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version) oprot.writeFieldEnd() if self.home is not None: - oprot.writeFieldBegin("home", TType.STRING, 5) - oprot.writeString( - self.home.encode("utf-8") if sys.version_info[0] == 2 else self.home - ) + oprot.writeFieldBegin('home', TType.STRING, 5) + oprot.writeString(self.home.encode('utf-8') if sys.version_info[0] == 2 else self.home) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -558,8 +396,9 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -583,18 +422,8 @@ class ClusterInfo(object): """ - def __init__( - self, - launch_date=None, - group_id=None, - network_id=None, - public_ip=None, - subnet_id=None, - user=None, - inst_counter=None, - cluster_id=None, - key_name=None, - ): + + def __init__(self, launch_date=None, group_id=None, network_id=None, public_ip=None, subnet_id=None, user=None, inst_counter=None, cluster_id=None, key_name=None,): self.launch_date = launch_date self.group_id = group_id self.network_id = network_id @@ -606,11 +435,7 @@ def __init__( self.key_name = key_name def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -620,56 +445,32 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.launch_date = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.launch_date = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.group_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.group_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.network_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.network_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.public_ip = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.public_ip = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.subnet_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.subnet_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: if ftype == TType.STRING: - self.user = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.user = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 7: @@ -679,20 +480,12 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 8: if ftype == TType.STRING: - self.cluster_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.cluster_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 9: if ftype == TType.STRING: - self.key_name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.key_name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -702,76 +495,44 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ClusterInfo") + oprot.writeStructBegin('ClusterInfo') if self.launch_date is not None: - oprot.writeFieldBegin("launch_date", TType.STRING, 1) - oprot.writeString( - self.launch_date.encode("utf-8") - if sys.version_info[0] == 2 - else self.launch_date - ) + oprot.writeFieldBegin('launch_date', TType.STRING, 1) + oprot.writeString(self.launch_date.encode('utf-8') if sys.version_info[0] == 2 else self.launch_date) oprot.writeFieldEnd() if self.group_id is not None: - oprot.writeFieldBegin("group_id", TType.STRING, 2) - oprot.writeString( - self.group_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.group_id - ) + oprot.writeFieldBegin('group_id', TType.STRING, 2) + oprot.writeString(self.group_id.encode('utf-8') if sys.version_info[0] == 2 else self.group_id) oprot.writeFieldEnd() if self.network_id is not None: - oprot.writeFieldBegin("network_id", TType.STRING, 3) - oprot.writeString( - self.network_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.network_id - ) + oprot.writeFieldBegin('network_id', TType.STRING, 3) + oprot.writeString(self.network_id.encode('utf-8') if sys.version_info[0] == 2 else self.network_id) oprot.writeFieldEnd() if self.public_ip is not None: - oprot.writeFieldBegin("public_ip", TType.STRING, 4) - oprot.writeString( - self.public_ip.encode("utf-8") - if sys.version_info[0] == 2 - else self.public_ip - ) + oprot.writeFieldBegin('public_ip', TType.STRING, 4) + oprot.writeString(self.public_ip.encode('utf-8') if sys.version_info[0] == 2 else self.public_ip) oprot.writeFieldEnd() if self.subnet_id is not None: - oprot.writeFieldBegin("subnet_id", TType.STRING, 5) - oprot.writeString( - self.subnet_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.subnet_id - ) + oprot.writeFieldBegin('subnet_id', TType.STRING, 5) + oprot.writeString(self.subnet_id.encode('utf-8') if sys.version_info[0] == 2 else self.subnet_id) oprot.writeFieldEnd() if self.user is not None: - oprot.writeFieldBegin("user", TType.STRING, 6) - oprot.writeString( - self.user.encode("utf-8") if sys.version_info[0] == 2 else self.user - ) + oprot.writeFieldBegin('user', TType.STRING, 6) + oprot.writeString(self.user.encode('utf-8') if sys.version_info[0] == 2 else self.user) oprot.writeFieldEnd() if self.inst_counter is not None: - oprot.writeFieldBegin("inst_counter", TType.I32, 7) + oprot.writeFieldBegin('inst_counter', TType.I32, 7) oprot.writeI32(self.inst_counter) oprot.writeFieldEnd() if self.cluster_id is not None: - oprot.writeFieldBegin("cluster_id", TType.STRING, 8) - oprot.writeString( - self.cluster_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.cluster_id - ) + oprot.writeFieldBegin('cluster_id', TType.STRING, 8) + oprot.writeString(self.cluster_id.encode('utf-8') if sys.version_info[0] == 2 else self.cluster_id) oprot.writeFieldEnd() if self.key_name is not None: - oprot.writeFieldBegin("key_name", TType.STRING, 9) - oprot.writeString( - self.key_name.encode("utf-8") - if sys.version_info[0] == 2 - else self.key_name - ) + oprot.writeFieldBegin('key_name', TType.STRING, 9) + oprot.writeString(self.key_name.encode('utf-8') if sys.version_info[0] == 2 else self.key_name) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -780,8 +541,9 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -804,17 +566,8 @@ class Volume(object): """ - def __init__( - self, - id=None, - name=None, - description=None, - status=None, - created_at=None, - device=None, - size=None, - server_id=None, - ): + + def __init__(self, id=None, name=None, description=None, status=None, created_at=None, device=None, size=None, server_id=None,): self.id = id self.name = name self.description = description @@ -825,11 +578,7 @@ def __init__( self.server_id = server_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -839,56 +588,32 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.status = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.status = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.created_at = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.created_at = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: if ftype == TType.STRING: - self.device = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.device = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 7: @@ -898,11 +623,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 8: if ftype == TType.STRING: - self.server_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.server_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -912,62 +633,40 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("Volume") + oprot.writeStructBegin('Volume') if self.id is not None: - oprot.writeFieldBegin("id", TType.STRING, 1) - oprot.writeString( - self.id.encode("utf-8") if sys.version_info[0] == 2 else self.id - ) + oprot.writeFieldBegin('id', TType.STRING, 1) + oprot.writeString(self.id.encode('utf-8') if sys.version_info[0] == 2 else self.id) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 2) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 2) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 3) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 3) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() if self.status is not None: - oprot.writeFieldBegin("status", TType.STRING, 4) - oprot.writeString( - self.status.encode("utf-8") if sys.version_info[0] == 2 else self.status - ) + oprot.writeFieldBegin('status', TType.STRING, 4) + oprot.writeString(self.status.encode('utf-8') if sys.version_info[0] == 2 else self.status) oprot.writeFieldEnd() if self.created_at is not None: - oprot.writeFieldBegin("created_at", TType.STRING, 5) - oprot.writeString( - self.created_at.encode("utf-8") - if sys.version_info[0] == 2 - else self.created_at - ) + oprot.writeFieldBegin('created_at', TType.STRING, 5) + oprot.writeString(self.created_at.encode('utf-8') if sys.version_info[0] == 2 else self.created_at) oprot.writeFieldEnd() if self.device is not None: - oprot.writeFieldBegin("device", TType.STRING, 6) - oprot.writeString( - self.device.encode("utf-8") if sys.version_info[0] == 2 else self.device - ) + oprot.writeFieldBegin('device', TType.STRING, 6) + oprot.writeString(self.device.encode('utf-8') if sys.version_info[0] == 2 else self.device) oprot.writeFieldEnd() if self.size is not None: - oprot.writeFieldBegin("size", TType.I32, 7) + oprot.writeFieldBegin('size', TType.I32, 7) oprot.writeI32(self.size) oprot.writeFieldEnd() if self.server_id is not None: - oprot.writeFieldBegin("server_id", TType.STRING, 8) - oprot.writeString( - self.server_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.server_id - ) + oprot.writeFieldBegin('server_id', TType.STRING, 8) + oprot.writeString(self.server_id.encode('utf-8') if sys.version_info[0] == 2 else self.server_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -976,8 +675,9 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -1001,16 +701,8 @@ class Snapshot(object): """ - def __init__( - self, - id=None, - name=None, - description=None, - status=None, - created_at=None, - size=None, - volume_id=None, - ): + + def __init__(self, id=None, name=None, description=None, status=None, created_at=None, size=None, volume_id=None,): self.id = id self.name = name self.description = description @@ -1020,11 +712,7 @@ def __init__( self.volume_id = volume_id def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -1034,47 +722,27 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.status = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.status = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.created_at = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.created_at = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: @@ -1084,11 +752,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 7: if ftype == TType.STRING: - self.volume_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.volume_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -1098,56 +762,36 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("Snapshot") + oprot.writeStructBegin('Snapshot') if self.id is not None: - oprot.writeFieldBegin("id", TType.STRING, 1) - oprot.writeString( - self.id.encode("utf-8") if sys.version_info[0] == 2 else self.id - ) + oprot.writeFieldBegin('id', TType.STRING, 1) + oprot.writeString(self.id.encode('utf-8') if sys.version_info[0] == 2 else self.id) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 2) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 2) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 3) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 3) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() if self.status is not None: - oprot.writeFieldBegin("status", TType.STRING, 4) - oprot.writeString( - self.status.encode("utf-8") if sys.version_info[0] == 2 else self.status - ) + oprot.writeFieldBegin('status', TType.STRING, 4) + oprot.writeString(self.status.encode('utf-8') if sys.version_info[0] == 2 else self.status) oprot.writeFieldEnd() if self.created_at is not None: - oprot.writeFieldBegin("created_at", TType.STRING, 5) - oprot.writeString( - self.created_at.encode("utf-8") - if sys.version_info[0] == 2 - else self.created_at - ) + oprot.writeFieldBegin('created_at', TType.STRING, 5) + oprot.writeString(self.created_at.encode('utf-8') if sys.version_info[0] == 2 else self.created_at) oprot.writeFieldEnd() if self.size is not None: - oprot.writeFieldBegin("size", TType.I32, 6) + oprot.writeFieldBegin('size', TType.I32, 6) oprot.writeI32(self.size) oprot.writeFieldEnd() if self.volume_id is not None: - oprot.writeFieldBegin("volume_id", TType.STRING, 7) - oprot.writeString( - self.volume_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.volume_id - ) + oprot.writeFieldBegin('volume_id', TType.STRING, 7) + oprot.writeString(self.volume_id.encode('utf-8') if sys.version_info[0] == 2 else self.volume_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -1156,8 +800,9 @@ def validate(self): return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -1180,15 +825,8 @@ class Flavor(object): """ - def __init__( - self, - vcpus=None, - ram=None, - disk=None, - name=None, - description=None, - ephemeral_disk=None, - ): + + def __init__(self, vcpus=None, ram=None, disk=None, name=None, description=None, ephemeral_disk=None,): self.vcpus = vcpus self.ram = ram self.disk = disk @@ -1197,11 +835,7 @@ def __init__( self.ephemeral_disk = ephemeral_disk def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -1226,20 +860,12 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: @@ -1254,39 +880,31 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("Flavor") + oprot.writeStructBegin('Flavor') if self.vcpus is not None: - oprot.writeFieldBegin("vcpus", TType.I32, 1) + oprot.writeFieldBegin('vcpus', TType.I32, 1) oprot.writeI32(self.vcpus) oprot.writeFieldEnd() if self.ram is not None: - oprot.writeFieldBegin("ram", TType.I32, 2) + oprot.writeFieldBegin('ram', TType.I32, 2) oprot.writeI32(self.ram) oprot.writeFieldEnd() if self.disk is not None: - oprot.writeFieldBegin("disk", TType.I32, 3) + oprot.writeFieldBegin('disk', TType.I32, 3) oprot.writeI32(self.disk) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 4) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 4) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 5) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 5) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() if self.ephemeral_disk is not None: - oprot.writeFieldBegin("ephemeral_disk", TType.I32, 6) + oprot.writeFieldBegin('ephemeral_disk', TType.I32, 6) oprot.writeI32(self.ephemeral_disk) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -1294,18 +912,19 @@ def write(self, oprot): def validate(self): if self.vcpus is None: - raise TProtocolException(message="Required field vcpus is unset!") + raise TProtocolException(message='Required field vcpus is unset!') if self.ram is None: - raise TProtocolException(message="Required field ram is unset!") + raise TProtocolException(message='Required field ram is unset!') if self.disk is None: - raise TProtocolException(message="Required field disk is unset!") + raise TProtocolException(message='Required field disk is unset!') if self.name is None: - raise TProtocolException(message="Required field name is unset!") + raise TProtocolException(message='Required field name is unset!') return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -1333,20 +952,8 @@ class Image(object): """ - def __init__( - self, - name=None, - min_disk=None, - min_ram=None, - status=None, - created_at=None, - updated_at=None, - openstack_id=None, - description=None, - tags=None, - is_snapshot=None, - os_version=None, - ): + + def __init__(self, name=None, min_disk=None, min_ram=None, status=None, created_at=None, updated_at=None, openstack_id=None, description=None, tags=None, is_snapshot=None, os_version=None,): self.name = name self.min_disk = min_disk self.min_ram = min_ram @@ -1360,11 +967,7 @@ def __init__( self.os_version = os_version def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -1374,11 +977,7 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: @@ -1393,47 +992,27 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.status = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.status = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.created_at = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.created_at = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: if ftype == TType.STRING: - self.updated_at = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.updated_at = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 7: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 8: if ftype == TType.STRING: - self.description = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.description = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 9: @@ -1441,11 +1020,7 @@ def read(self, iprot): self.tags = [] (_etype19, _size16) = iprot.readListBegin() for _i20 in range(_size16): - _elem21 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _elem21 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.tags.append(_elem21) iprot.readListEnd() else: @@ -1457,11 +1032,7 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 11: if ftype == TType.STRING: - self.os_version = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.os_version = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -1471,105 +1042,78 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("Image") + oprot.writeStructBegin('Image') if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 1) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 1) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.min_disk is not None: - oprot.writeFieldBegin("min_disk", TType.I32, 2) + oprot.writeFieldBegin('min_disk', TType.I32, 2) oprot.writeI32(self.min_disk) oprot.writeFieldEnd() if self.min_ram is not None: - oprot.writeFieldBegin("min_ram", TType.I32, 3) + oprot.writeFieldBegin('min_ram', TType.I32, 3) oprot.writeI32(self.min_ram) oprot.writeFieldEnd() if self.status is not None: - oprot.writeFieldBegin("status", TType.STRING, 4) - oprot.writeString( - self.status.encode("utf-8") if sys.version_info[0] == 2 else self.status - ) + oprot.writeFieldBegin('status', TType.STRING, 4) + oprot.writeString(self.status.encode('utf-8') if sys.version_info[0] == 2 else self.status) oprot.writeFieldEnd() if self.created_at is not None: - oprot.writeFieldBegin("created_at", TType.STRING, 5) - oprot.writeString( - self.created_at.encode("utf-8") - if sys.version_info[0] == 2 - else self.created_at - ) + oprot.writeFieldBegin('created_at', TType.STRING, 5) + oprot.writeString(self.created_at.encode('utf-8') if sys.version_info[0] == 2 else self.created_at) oprot.writeFieldEnd() if self.updated_at is not None: - oprot.writeFieldBegin("updated_at", TType.STRING, 6) - oprot.writeString( - self.updated_at.encode("utf-8") - if sys.version_info[0] == 2 - else self.updated_at - ) + oprot.writeFieldBegin('updated_at', TType.STRING, 6) + oprot.writeString(self.updated_at.encode('utf-8') if sys.version_info[0] == 2 else self.updated_at) oprot.writeFieldEnd() if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 7) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 7) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.description is not None: - oprot.writeFieldBegin("description", TType.STRING, 8) - oprot.writeString( - self.description.encode("utf-8") - if sys.version_info[0] == 2 - else self.description - ) + oprot.writeFieldBegin('description', TType.STRING, 8) + oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description) oprot.writeFieldEnd() if self.tags is not None: - oprot.writeFieldBegin("tags", TType.LIST, 9) + oprot.writeFieldBegin('tags', TType.LIST, 9) oprot.writeListBegin(TType.STRING, len(self.tags)) for iter22 in self.tags: - oprot.writeString( - iter22.encode("utf-8") if sys.version_info[0] == 2 else iter22 - ) + oprot.writeString(iter22.encode('utf-8') if sys.version_info[0] == 2 else iter22) oprot.writeListEnd() oprot.writeFieldEnd() if self.is_snapshot is not None: - oprot.writeFieldBegin("is_snapshot", TType.BOOL, 10) + oprot.writeFieldBegin('is_snapshot', TType.BOOL, 10) oprot.writeBool(self.is_snapshot) oprot.writeFieldEnd() if self.os_version is not None: - oprot.writeFieldBegin("os_version", TType.STRING, 11) - oprot.writeString( - self.os_version.encode("utf-8") - if sys.version_info[0] == 2 - else self.os_version - ) + oprot.writeFieldBegin('os_version', TType.STRING, 11) + oprot.writeString(self.os_version.encode('utf-8') if sys.version_info[0] == 2 else self.os_version) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() def validate(self): if self.name is None: - raise TProtocolException(message="Required field name is unset!") + raise TProtocolException(message='Required field name is unset!') if self.min_disk is None: - raise TProtocolException(message="Required field min_disk is unset!") + raise TProtocolException(message='Required field min_disk is unset!') if self.min_ram is None: - raise TProtocolException(message="Required field min_ram is unset!") + raise TProtocolException(message='Required field min_ram is unset!') if self.status is None: - raise TProtocolException(message="Required field status is unset!") + raise TProtocolException(message='Required field status is unset!') if self.openstack_id is None: - raise TProtocolException(message="Required field openstack_id is unset!") + raise TProtocolException(message='Required field openstack_id is unset!') if self.tags is None: - raise TProtocolException(message="Required field tags is unset!") + raise TProtocolException(message='Required field tags is unset!') return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -1598,21 +1142,8 @@ class VM(object): """ - def __init__( - self, - flavor=None, - image=None, - metadata=None, - project_id=None, - keyname=None, - openstack_id=None, - name=None, - created_at=None, - floating_ip=None, - fixed_ip=None, - task_state=None, - vm_state=None, - ): + + def __init__(self, flavor=None, image=None, metadata=None, project_id=None, keyname=None, openstack_id=None, name=None, created_at=None, floating_ip=None, fixed_ip=None, task_state=None, vm_state=None,): self.flavor = flavor self.image = image self.metadata = metadata @@ -1627,11 +1158,7 @@ def __init__( self.vm_state = vm_state def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -1656,99 +1183,55 @@ def read(self, iprot): self.metadata = {} (_ktype24, _vtype25, _size23) = iprot.readMapBegin() for _i27 in range(_size23): - _key28 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) - _val29 = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + _key28 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() + _val29 = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() self.metadata[_key28] = _val29 iprot.readMapEnd() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.STRING: - self.project_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.project_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.STRING: - self.keyname = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.keyname = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 6: if ftype == TType.STRING: - self.openstack_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.openstack_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 7: if ftype == TType.STRING: - self.name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 8: if ftype == TType.STRING: - self.created_at = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.created_at = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 9: if ftype == TType.STRING: - self.floating_ip = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.floating_ip = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 10: if ftype == TType.STRING: - self.fixed_ip = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.fixed_ip = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 11: if ftype == TType.STRING: - self.task_state = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.task_state = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 12: if ftype == TType.STRING: - self.vm_state = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.vm_state = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -1758,122 +1241,83 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("VM") + oprot.writeStructBegin('VM') if self.flavor is not None: - oprot.writeFieldBegin("flavor", TType.STRUCT, 1) + oprot.writeFieldBegin('flavor', TType.STRUCT, 1) self.flavor.write(oprot) oprot.writeFieldEnd() if self.image is not None: - oprot.writeFieldBegin("image", TType.STRUCT, 2) + oprot.writeFieldBegin('image', TType.STRUCT, 2) self.image.write(oprot) oprot.writeFieldEnd() if self.metadata is not None: - oprot.writeFieldBegin("metadata", TType.MAP, 3) + oprot.writeFieldBegin('metadata', TType.MAP, 3) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.metadata)) for kiter30, viter31 in self.metadata.items(): - oprot.writeString( - kiter30.encode("utf-8") if sys.version_info[0] == 2 else kiter30 - ) - oprot.writeString( - viter31.encode("utf-8") if sys.version_info[0] == 2 else viter31 - ) + oprot.writeString(kiter30.encode('utf-8') if sys.version_info[0] == 2 else kiter30) + oprot.writeString(viter31.encode('utf-8') if sys.version_info[0] == 2 else viter31) oprot.writeMapEnd() oprot.writeFieldEnd() if self.project_id is not None: - oprot.writeFieldBegin("project_id", TType.STRING, 4) - oprot.writeString( - self.project_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.project_id - ) + oprot.writeFieldBegin('project_id', TType.STRING, 4) + oprot.writeString(self.project_id.encode('utf-8') if sys.version_info[0] == 2 else self.project_id) oprot.writeFieldEnd() if self.keyname is not None: - oprot.writeFieldBegin("keyname", TType.STRING, 5) - oprot.writeString( - self.keyname.encode("utf-8") - if sys.version_info[0] == 2 - else self.keyname - ) + oprot.writeFieldBegin('keyname', TType.STRING, 5) + oprot.writeString(self.keyname.encode('utf-8') if sys.version_info[0] == 2 else self.keyname) oprot.writeFieldEnd() if self.openstack_id is not None: - oprot.writeFieldBegin("openstack_id", TType.STRING, 6) - oprot.writeString( - self.openstack_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.openstack_id - ) + oprot.writeFieldBegin('openstack_id', TType.STRING, 6) + oprot.writeString(self.openstack_id.encode('utf-8') if sys.version_info[0] == 2 else self.openstack_id) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 7) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 7) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() if self.created_at is not None: - oprot.writeFieldBegin("created_at", TType.STRING, 8) - oprot.writeString( - self.created_at.encode("utf-8") - if sys.version_info[0] == 2 - else self.created_at - ) + oprot.writeFieldBegin('created_at', TType.STRING, 8) + oprot.writeString(self.created_at.encode('utf-8') if sys.version_info[0] == 2 else self.created_at) oprot.writeFieldEnd() if self.floating_ip is not None: - oprot.writeFieldBegin("floating_ip", TType.STRING, 9) - oprot.writeString( - self.floating_ip.encode("utf-8") - if sys.version_info[0] == 2 - else self.floating_ip - ) + oprot.writeFieldBegin('floating_ip', TType.STRING, 9) + oprot.writeString(self.floating_ip.encode('utf-8') if sys.version_info[0] == 2 else self.floating_ip) oprot.writeFieldEnd() if self.fixed_ip is not None: - oprot.writeFieldBegin("fixed_ip", TType.STRING, 10) - oprot.writeString( - self.fixed_ip.encode("utf-8") - if sys.version_info[0] == 2 - else self.fixed_ip - ) + oprot.writeFieldBegin('fixed_ip', TType.STRING, 10) + oprot.writeString(self.fixed_ip.encode('utf-8') if sys.version_info[0] == 2 else self.fixed_ip) oprot.writeFieldEnd() if self.task_state is not None: - oprot.writeFieldBegin("task_state", TType.STRING, 11) - oprot.writeString( - self.task_state.encode("utf-8") - if sys.version_info[0] == 2 - else self.task_state - ) + oprot.writeFieldBegin('task_state', TType.STRING, 11) + oprot.writeString(self.task_state.encode('utf-8') if sys.version_info[0] == 2 else self.task_state) oprot.writeFieldEnd() if self.vm_state is not None: - oprot.writeFieldBegin("vm_state", TType.STRING, 12) - oprot.writeString( - self.vm_state.encode("utf-8") - if sys.version_info[0] == 2 - else self.vm_state - ) + oprot.writeFieldBegin('vm_state', TType.STRING, 12) + oprot.writeString(self.vm_state.encode('utf-8') if sys.version_info[0] == 2 else self.vm_state) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() def validate(self): if self.keyname is None: - raise TProtocolException(message="Required field keyname is unset!") + raise TProtocolException(message='Required field keyname is unset!') if self.openstack_id is None: - raise TProtocolException(message="Required field openstack_id is unset!") + raise TProtocolException(message='Required field openstack_id is unset!') if self.name is None: - raise TProtocolException(message="Required field name is unset!") + raise TProtocolException(message='Required field name is unset!') if self.created_at is None: - raise TProtocolException(message="Required field created_at is unset!") + raise TProtocolException(message='Required field created_at is unset!') if self.fixed_ip is None: - raise TProtocolException(message="Required field fixed_ip is unset!") + raise TProtocolException(message='Required field fixed_ip is unset!') if self.vm_state is None: - raise TProtocolException(message="Required field vm_state is unset!") + raise TProtocolException(message='Required field vm_state is unset!') return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -1891,22 +1335,14 @@ class ClusterInstance(object): """ - def __init__( - self, - type=None, - image=None, - count=None, - ): + + def __init__(self, type=None, image=None, count=None,): self.type = type self.image = image self.count = count def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -1916,20 +1352,12 @@ def read(self, iprot): break if fid == 1: if ftype == TType.STRING: - self.type = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.type = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.image = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.image = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: @@ -1944,25 +1372,19 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ClusterInstance") + oprot.writeStructBegin('ClusterInstance') if self.type is not None: - oprot.writeFieldBegin("type", TType.STRING, 1) - oprot.writeString( - self.type.encode("utf-8") if sys.version_info[0] == 2 else self.type - ) + oprot.writeFieldBegin('type', TType.STRING, 1) + oprot.writeString(self.type.encode('utf-8') if sys.version_info[0] == 2 else self.type) oprot.writeFieldEnd() if self.image is not None: - oprot.writeFieldBegin("image", TType.STRING, 2) - oprot.writeString( - self.image.encode("utf-8") if sys.version_info[0] == 2 else self.image - ) + oprot.writeFieldBegin('image', TType.STRING, 2) + oprot.writeString(self.image.encode('utf-8') if sys.version_info[0] == 2 else self.image) oprot.writeFieldEnd() if self.count is not None: - oprot.writeFieldBegin("count", TType.I32, 3) + oprot.writeFieldBegin('count', TType.I32, 3) oprot.writeI32(self.count) oprot.writeFieldEnd() oprot.writeFieldStop() @@ -1970,14 +1392,15 @@ def write(self, oprot): def validate(self): if self.type is None: - raise TProtocolException(message="Required field type is unset!") + raise TProtocolException(message='Required field type is unset!') if self.image is None: - raise TProtocolException(message="Required field image is unset!") + raise TProtocolException(message='Required field image is unset!') return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -1997,22 +1420,14 @@ class PlaybookResult(object): """ - def __init__( - self, - status=None, - stdout=None, - stderr=None, - ): + + def __init__(self, status=None, stdout=None, stderr=None,): self.status = status self.stdout = stdout self.stderr = stderr def read(self, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and self.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: iprot._fast_decode(self, iprot, [self.__class__, self.thrift_spec]) return iprot.readStructBegin() @@ -2027,20 +1442,12 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - self.stdout = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.stdout = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - self.stderr = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + self.stderr = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2050,42 +1457,37 @@ def read(self, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("PlaybookResult") + oprot.writeStructBegin('PlaybookResult') if self.status is not None: - oprot.writeFieldBegin("status", TType.I32, 1) + oprot.writeFieldBegin('status', TType.I32, 1) oprot.writeI32(self.status) oprot.writeFieldEnd() if self.stdout is not None: - oprot.writeFieldBegin("stdout", TType.STRING, 2) - oprot.writeString( - self.stdout.encode("utf-8") if sys.version_info[0] == 2 else self.stdout - ) + oprot.writeFieldBegin('stdout', TType.STRING, 2) + oprot.writeString(self.stdout.encode('utf-8') if sys.version_info[0] == 2 else self.stdout) oprot.writeFieldEnd() if self.stderr is not None: - oprot.writeFieldBegin("stderr", TType.STRING, 3) - oprot.writeString( - self.stderr.encode("utf-8") if sys.version_info[0] == 2 else self.stderr - ) + oprot.writeFieldBegin('stderr', TType.STRING, 3) + oprot.writeString(self.stderr.encode('utf-8') if sys.version_info[0] == 2 else self.stderr) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() def validate(self): if self.status is None: - raise TProtocolException(message="Required field status is unset!") + raise TProtocolException(message='Required field status is unset!') if self.stdout is None: - raise TProtocolException(message="Required field stdout is unset!") + raise TProtocolException(message='Required field stdout is unset!') if self.stderr is None: - raise TProtocolException(message="Required field stderr is unset!") + raise TProtocolException(message='Required field stderr is unset!') return def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2103,17 +1505,11 @@ class ResourceNotFoundException(TException): """ - def __init__( - self, - message=None, - resource_type=None, - name_or_id=None, - ): - super(ResourceNotFoundException, self).__setattr__("message", message) - super(ResourceNotFoundException, self).__setattr__( - "resource_type", resource_type - ) - super(ResourceNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, resource_type=None, name_or_id=None,): + super(ResourceNotFoundException, self).__setattr__('message', message) + super(ResourceNotFoundException, self).__setattr__('resource_type', resource_type) + super(ResourceNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2122,21 +1518,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.resource_type, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.resource_type, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2148,29 +1534,17 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - resource_type = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + resource_type = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2185,34 +1559,20 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ResourceNotFoundException") + oprot.writeStructBegin('ResourceNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.resource_type is not None: - oprot.writeFieldBegin("resource_type", TType.STRING, 2) - oprot.writeString( - self.resource_type.encode("utf-8") - if sys.version_info[0] == 2 - else self.resource_type - ) + oprot.writeFieldBegin('resource_type', TType.STRING, 2) + oprot.writeString(self.resource_type.encode('utf-8') if sys.version_info[0] == 2 else self.resource_type) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 3) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 3) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2224,8 +1584,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2241,11 +1602,9 @@ class ResourceNotAvailableException(TException): """ - def __init__( - self, - message=None, - ): - super(ResourceNotAvailableException, self).__setattr__("message", message) + + def __init__(self, message=None,): + super(ResourceNotAvailableException, self).__setattr__('message', message) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2254,15 +1613,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash((self.message,)) + return hash(self.__class__) ^ hash((self.message, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2272,11 +1627,7 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2289,18 +1640,12 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ResourceNotAvailableException") + oprot.writeStructBegin('ResourceNotAvailableException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2312,8 +1657,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2330,13 +1676,10 @@ class TemplateNotFoundException(TException): """ - def __init__( - self, - message=None, - template=None, - ): - super(TemplateNotFoundException, self).__setattr__("message", message) - super(TemplateNotFoundException, self).__setattr__("template", template) + + def __init__(self, message=None, template=None,): + super(TemplateNotFoundException, self).__setattr__('message', message) + super(TemplateNotFoundException, self).__setattr__('template', template) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2345,20 +1688,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.template, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.template, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2369,20 +1703,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - template = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + template = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2396,26 +1722,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("TemplateNotFoundException") + oprot.writeStructBegin('TemplateNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.template is not None: - oprot.writeFieldBegin("template", TType.STRING, 2) - oprot.writeString( - self.template.encode("utf-8") - if sys.version_info[0] == 2 - else self.template - ) + oprot.writeFieldBegin('template', TType.STRING, 2) + oprot.writeString(self.template.encode('utf-8') if sys.version_info[0] == 2 else self.template) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2427,8 +1743,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2445,13 +1762,10 @@ class NameAlreadyUsedException(TException): """ - def __init__( - self, - message=None, - name=None, - ): - super(NameAlreadyUsedException, self).__setattr__("message", message) - super(NameAlreadyUsedException, self).__setattr__("name", name) + + def __init__(self, message=None, name=None,): + super(NameAlreadyUsedException, self).__setattr__('message', message) + super(NameAlreadyUsedException, self).__setattr__('name', name) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2460,20 +1774,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2484,20 +1789,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2511,24 +1808,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("NameAlreadyUsedException") + oprot.writeStructBegin('NameAlreadyUsedException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name is not None: - oprot.writeFieldBegin("name", TType.STRING, 2) - oprot.writeString( - self.name.encode("utf-8") if sys.version_info[0] == 2 else self.name - ) + oprot.writeFieldBegin('name', TType.STRING, 2) + oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2540,8 +1829,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2558,13 +1848,10 @@ class ServerNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(ServerNotFoundException, self).__setattr__("message", message) - super(ServerNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(ServerNotFoundException, self).__setattr__('message', message) + super(ServerNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2573,20 +1860,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2597,20 +1875,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2624,26 +1894,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ServerNotFoundException") + oprot.writeStructBegin('ServerNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2655,8 +1915,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2673,15 +1934,10 @@ class SecurityGroupRuleNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(SecurityGroupRuleNotFoundException, self).__setattr__("message", message) - super(SecurityGroupRuleNotFoundException, self).__setattr__( - "name_or_id", name_or_id - ) + + def __init__(self, message=None, name_or_id=None,): + super(SecurityGroupRuleNotFoundException, self).__setattr__('message', message) + super(SecurityGroupRuleNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2690,20 +1946,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2714,20 +1961,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2741,26 +1980,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("SecurityGroupRuleNotFoundException") + oprot.writeStructBegin('SecurityGroupRuleNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2772,8 +2001,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2790,13 +2020,10 @@ class FlavorNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(FlavorNotFoundException, self).__setattr__("message", message) - super(FlavorNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(FlavorNotFoundException, self).__setattr__('message', message) + super(FlavorNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2805,20 +2032,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2829,20 +2047,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2856,26 +2066,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("FlavorNotFoundException") + oprot.writeStructBegin('FlavorNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -2887,8 +2087,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -2905,13 +2106,10 @@ class VolumeNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(VolumeNotFoundException, self).__setattr__("message", message) - super(VolumeNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(VolumeNotFoundException, self).__setattr__('message', message) + super(VolumeNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -2920,20 +2118,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -2944,20 +2133,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -2971,26 +2152,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("VolumeNotFoundException") + oprot.writeStructBegin('VolumeNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3002,8 +2173,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3020,13 +2192,10 @@ class SnapshotNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(SnapshotNotFoundException, self).__setattr__("message", message) - super(SnapshotNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(SnapshotNotFoundException, self).__setattr__('message', message) + super(SnapshotNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3035,20 +2204,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3059,20 +2219,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3086,26 +2238,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("SnapshotNotFoundException") + oprot.writeStructBegin('SnapshotNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3117,8 +2259,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3135,13 +2278,10 @@ class ImageNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(ImageNotFoundException, self).__setattr__("message", message) - super(ImageNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(ImageNotFoundException, self).__setattr__('message', message) + super(ImageNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3150,20 +2290,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3174,20 +2305,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3201,26 +2324,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ImageNotFoundException") + oprot.writeStructBegin('ImageNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3232,8 +2345,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3250,13 +2364,10 @@ class ClusterNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(ClusterNotFoundException, self).__setattr__("message", message) - super(ClusterNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(ClusterNotFoundException, self).__setattr__('message', message) + super(ClusterNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3265,20 +2376,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3289,20 +2391,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3316,26 +2410,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("ClusterNotFoundException") + oprot.writeStructBegin('ClusterNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3347,8 +2431,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3365,13 +2450,10 @@ class BackendNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(BackendNotFoundException, self).__setattr__("message", message) - super(BackendNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(BackendNotFoundException, self).__setattr__('message', message) + super(BackendNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3380,20 +2462,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3404,20 +2477,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3431,26 +2496,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("BackendNotFoundException") + oprot.writeStructBegin('BackendNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3462,8 +2517,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3480,13 +2536,10 @@ class PlaybookNotFoundException(TException): """ - def __init__( - self, - message=None, - name_or_id=None, - ): - super(PlaybookNotFoundException, self).__setattr__("message", message) - super(PlaybookNotFoundException, self).__setattr__("name_or_id", name_or_id) + + def __init__(self, message=None, name_or_id=None,): + super(PlaybookNotFoundException, self).__setattr__('message', message) + super(PlaybookNotFoundException, self).__setattr__('name_or_id', name_or_id) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3495,20 +2548,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash( - ( - self.message, - self.name_or_id, - ) - ) + return hash(self.__class__) ^ hash((self.message, self.name_or_id, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3519,20 +2563,12 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.STRING: - name_or_id = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + name_or_id = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3546,26 +2582,16 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("PlaybookNotFoundException") + oprot.writeStructBegin('PlaybookNotFoundException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() if self.name_or_id is not None: - oprot.writeFieldBegin("name_or_id", TType.STRING, 2) - oprot.writeString( - self.name_or_id.encode("utf-8") - if sys.version_info[0] == 2 - else self.name_or_id - ) + oprot.writeFieldBegin('name_or_id', TType.STRING, 2) + oprot.writeString(self.name_or_id.encode('utf-8') if sys.version_info[0] == 2 else self.name_or_id) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3577,8 +2603,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3594,11 +2621,9 @@ class DefaultException(TException): """ - def __init__( - self, - message=None, - ): - super(DefaultException, self).__setattr__("message", message) + + def __init__(self, message=None,): + super(DefaultException, self).__setattr__('message', message) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3607,15 +2632,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash((self.message,)) + return hash(self.__class__) ^ hash((self.message, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3625,11 +2646,7 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3642,18 +2659,12 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("DefaultException") + oprot.writeStructBegin('DefaultException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3665,8 +2676,9 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ @@ -3684,11 +2696,9 @@ class OpenStackConflictException(TException): """ - def __init__( - self, - message=None, - ): - super(OpenStackConflictException, self).__setattr__("message", message) + + def __init__(self, message=None,): + super(OpenStackConflictException, self).__setattr__('message', message) def __setattr__(self, *args): raise TypeError("can't modify immutable instance") @@ -3697,15 +2707,11 @@ def __delattr__(self, *args): raise TypeError("can't modify immutable instance") def __hash__(self): - return hash(self.__class__) ^ hash((self.message,)) + return hash(self.__class__) ^ hash((self.message, )) @classmethod def read(cls, iprot): - if ( - iprot._fast_decode is not None - and isinstance(iprot.trans, TTransport.CReadableTransport) - and cls.thrift_spec is not None - ): + if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and cls.thrift_spec is not None: return iprot._fast_decode(None, iprot, [cls, cls.thrift_spec]) iprot.readStructBegin() message = None @@ -3715,11 +2721,7 @@ def read(cls, iprot): break if fid == 1: if ftype == TType.STRING: - message = ( - iprot.readString().decode("utf-8", errors="replace") - if sys.version_info[0] == 2 - else iprot.readString() - ) + message = iprot.readString().decode('utf-8', errors='replace') if sys.version_info[0] == 2 else iprot.readString() else: iprot.skip(ftype) else: @@ -3732,18 +2734,12 @@ def read(cls, iprot): def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: - oprot.trans.write( - oprot._fast_encode(self, [self.__class__, self.thrift_spec]) - ) + oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin("OpenStackConflictException") + oprot.writeStructBegin('OpenStackConflictException') if self.message is not None: - oprot.writeFieldBegin("message", TType.STRING, 1) - oprot.writeString( - self.message.encode("utf-8") - if sys.version_info[0] == 2 - else self.message - ) + oprot.writeFieldBegin('message', TType.STRING, 1) + oprot.writeString(self.message.encode('utf-8') if sys.version_info[0] == 2 else self.message) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -3755,875 +2751,226 @@ def __str__(self): return repr(self) def __repr__(self): - L = ["%s=%r" % (key, value) for key, value in self.__dict__.items()] - return "%s(%s)" % (self.__class__.__name__, ", ".join(L)) + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.items()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) def __eq__(self, other): return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ def __ne__(self, other): return not (self == other) - - all_structs.append(Backend) Backend.thrift_spec = ( None, # 0 - ( - 1, - TType.I64, - "id", - None, - None, - ), # 1 - ( - 2, - TType.STRING, - "owner", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "location_url", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "template", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "template_version", - "UTF8", - None, - ), # 5 + (1, TType.I64, 'id', None, None, ), # 1 + (2, TType.STRING, 'owner', 'UTF8', None, ), # 2 + (3, TType.STRING, 'location_url', 'UTF8', None, ), # 3 + (4, TType.STRING, 'template', 'UTF8', None, ), # 4 + (5, TType.STRING, 'template_version', 'UTF8', None, ), # 5 ) all_structs.append(ResearchEnvironmentTemplate) ResearchEnvironmentTemplate.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "template_name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "title", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "description", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "logo_url", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "info_url", - "UTF8", - None, - ), # 5 - ( - 6, - TType.I32, - "port", - None, - None, - ), # 6 - ( - 7, - TType.LIST, - "incompatible_versions", - (TType.STRING, "UTF8", False), - None, - ), # 7 - ( - 8, - TType.BOOL, - "is_maintained", - None, - None, - ), # 8 - ( - 9, - TType.MAP, - "information_for_display", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 9 - ( - 10, - TType.I32, - "min_ram", - None, - 0, - ), # 10 - ( - 11, - TType.I32, - "min_cores", - None, - 0, - ), # 11 + (1, TType.STRING, 'template_name', 'UTF8', None, ), # 1 + (2, TType.STRING, 'title', 'UTF8', None, ), # 2 + (3, TType.STRING, 'description', 'UTF8', None, ), # 3 + (4, TType.STRING, 'logo_url', 'UTF8', None, ), # 4 + (5, TType.STRING, 'info_url', 'UTF8', None, ), # 5 + (6, TType.I32, 'port', None, None, ), # 6 + (7, TType.LIST, 'incompatible_versions', (TType.STRING, 'UTF8', False), None, ), # 7 + (8, TType.BOOL, 'is_maintained', None, None, ), # 8 + (9, TType.MAP, 'information_for_display', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 9 + (10, TType.I32, 'min_ram', None, 0, ), # 10 + (11, TType.I32, 'min_cores', None, 0, ), # 11 ) all_structs.append(CondaPackage) CondaPackage.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "build", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "build_number", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "name", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "version", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "home", - "UTF8", - None, - ), # 5 + (1, TType.STRING, 'build', 'UTF8', None, ), # 1 + (2, TType.STRING, 'build_number', 'UTF8', None, ), # 2 + (3, TType.STRING, 'name', 'UTF8', None, ), # 3 + (4, TType.STRING, 'version', 'UTF8', None, ), # 4 + (5, TType.STRING, 'home', 'UTF8', None, ), # 5 ) all_structs.append(ClusterInfo) ClusterInfo.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "launch_date", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "group_id", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "network_id", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "public_ip", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "subnet_id", - "UTF8", - None, - ), # 5 - ( - 6, - TType.STRING, - "user", - "UTF8", - None, - ), # 6 - ( - 7, - TType.I32, - "inst_counter", - None, - None, - ), # 7 - ( - 8, - TType.STRING, - "cluster_id", - "UTF8", - None, - ), # 8 - ( - 9, - TType.STRING, - "key_name", - "UTF8", - None, - ), # 9 + (1, TType.STRING, 'launch_date', 'UTF8', None, ), # 1 + (2, TType.STRING, 'group_id', 'UTF8', None, ), # 2 + (3, TType.STRING, 'network_id', 'UTF8', None, ), # 3 + (4, TType.STRING, 'public_ip', 'UTF8', None, ), # 4 + (5, TType.STRING, 'subnet_id', 'UTF8', None, ), # 5 + (6, TType.STRING, 'user', 'UTF8', None, ), # 6 + (7, TType.I32, 'inst_counter', None, None, ), # 7 + (8, TType.STRING, 'cluster_id', 'UTF8', None, ), # 8 + (9, TType.STRING, 'key_name', 'UTF8', None, ), # 9 ) all_structs.append(Volume) Volume.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "description", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "status", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "created_at", - "UTF8", - None, - ), # 5 - ( - 6, - TType.STRING, - "device", - "UTF8", - None, - ), # 6 - ( - 7, - TType.I32, - "size", - None, - None, - ), # 7 - ( - 8, - TType.STRING, - "server_id", - "UTF8", - None, - ), # 8 + (1, TType.STRING, 'id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'description', 'UTF8', None, ), # 3 + (4, TType.STRING, 'status', 'UTF8', None, ), # 4 + (5, TType.STRING, 'created_at', 'UTF8', None, ), # 5 + (6, TType.STRING, 'device', 'UTF8', None, ), # 6 + (7, TType.I32, 'size', None, None, ), # 7 + (8, TType.STRING, 'server_id', 'UTF8', None, ), # 8 ) all_structs.append(Snapshot) Snapshot.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "id", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "description", - "UTF8", - None, - ), # 3 - ( - 4, - TType.STRING, - "status", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "created_at", - "UTF8", - None, - ), # 5 - ( - 6, - TType.I32, - "size", - None, - None, - ), # 6 - ( - 7, - TType.STRING, - "volume_id", - "UTF8", - None, - ), # 7 + (1, TType.STRING, 'id', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name', 'UTF8', None, ), # 2 + (3, TType.STRING, 'description', 'UTF8', None, ), # 3 + (4, TType.STRING, 'status', 'UTF8', None, ), # 4 + (5, TType.STRING, 'created_at', 'UTF8', None, ), # 5 + (6, TType.I32, 'size', None, None, ), # 6 + (7, TType.STRING, 'volume_id', 'UTF8', None, ), # 7 ) all_structs.append(Flavor) Flavor.thrift_spec = ( None, # 0 - ( - 1, - TType.I32, - "vcpus", - None, - None, - ), # 1 - ( - 2, - TType.I32, - "ram", - None, - None, - ), # 2 - ( - 3, - TType.I32, - "disk", - None, - None, - ), # 3 - ( - 4, - TType.STRING, - "name", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "description", - "UTF8", - None, - ), # 5 - ( - 6, - TType.I32, - "ephemeral_disk", - None, - None, - ), # 6 + (1, TType.I32, 'vcpus', None, None, ), # 1 + (2, TType.I32, 'ram', None, None, ), # 2 + (3, TType.I32, 'disk', None, None, ), # 3 + (4, TType.STRING, 'name', 'UTF8', None, ), # 4 + (5, TType.STRING, 'description', 'UTF8', None, ), # 5 + (6, TType.I32, 'ephemeral_disk', None, None, ), # 6 ) all_structs.append(Image) Image.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "name", - "UTF8", - None, - ), # 1 - ( - 2, - TType.I32, - "min_disk", - None, - None, - ), # 2 - ( - 3, - TType.I32, - "min_ram", - None, - None, - ), # 3 - ( - 4, - TType.STRING, - "status", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "created_at", - "UTF8", - None, - ), # 5 - ( - 6, - TType.STRING, - "updated_at", - "UTF8", - None, - ), # 6 - ( - 7, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 7 - ( - 8, - TType.STRING, - "description", - "UTF8", - None, - ), # 8 - ( - 9, - TType.LIST, - "tags", - (TType.STRING, "UTF8", False), - None, - ), # 9 - ( - 10, - TType.BOOL, - "is_snapshot", - None, - None, - ), # 10 - ( - 11, - TType.STRING, - "os_version", - "UTF8", - None, - ), # 11 + (1, TType.STRING, 'name', 'UTF8', None, ), # 1 + (2, TType.I32, 'min_disk', None, None, ), # 2 + (3, TType.I32, 'min_ram', None, None, ), # 3 + (4, TType.STRING, 'status', 'UTF8', None, ), # 4 + (5, TType.STRING, 'created_at', 'UTF8', None, ), # 5 + (6, TType.STRING, 'updated_at', 'UTF8', None, ), # 6 + (7, TType.STRING, 'openstack_id', 'UTF8', None, ), # 7 + (8, TType.STRING, 'description', 'UTF8', None, ), # 8 + (9, TType.LIST, 'tags', (TType.STRING, 'UTF8', False), None, ), # 9 + (10, TType.BOOL, 'is_snapshot', None, None, ), # 10 + (11, TType.STRING, 'os_version', 'UTF8', None, ), # 11 ) all_structs.append(VM) VM.thrift_spec = ( None, # 0 - ( - 1, - TType.STRUCT, - "flavor", - [Flavor, None], - None, - ), # 1 - ( - 2, - TType.STRUCT, - "image", - [Image, None], - None, - ), # 2 - ( - 3, - TType.MAP, - "metadata", - (TType.STRING, "UTF8", TType.STRING, "UTF8", False), - None, - ), # 3 - ( - 4, - TType.STRING, - "project_id", - "UTF8", - None, - ), # 4 - ( - 5, - TType.STRING, - "keyname", - "UTF8", - None, - ), # 5 - ( - 6, - TType.STRING, - "openstack_id", - "UTF8", - None, - ), # 6 - ( - 7, - TType.STRING, - "name", - "UTF8", - None, - ), # 7 - ( - 8, - TType.STRING, - "created_at", - "UTF8", - None, - ), # 8 - ( - 9, - TType.STRING, - "floating_ip", - "UTF8", - None, - ), # 9 - ( - 10, - TType.STRING, - "fixed_ip", - "UTF8", - None, - ), # 10 - ( - 11, - TType.STRING, - "task_state", - "UTF8", - None, - ), # 11 - ( - 12, - TType.STRING, - "vm_state", - "UTF8", - None, - ), # 12 + (1, TType.STRUCT, 'flavor', [Flavor, None], None, ), # 1 + (2, TType.STRUCT, 'image', [Image, None], None, ), # 2 + (3, TType.MAP, 'metadata', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 3 + (4, TType.STRING, 'project_id', 'UTF8', None, ), # 4 + (5, TType.STRING, 'keyname', 'UTF8', None, ), # 5 + (6, TType.STRING, 'openstack_id', 'UTF8', None, ), # 6 + (7, TType.STRING, 'name', 'UTF8', None, ), # 7 + (8, TType.STRING, 'created_at', 'UTF8', None, ), # 8 + (9, TType.STRING, 'floating_ip', 'UTF8', None, ), # 9 + (10, TType.STRING, 'fixed_ip', 'UTF8', None, ), # 10 + (11, TType.STRING, 'task_state', 'UTF8', None, ), # 11 + (12, TType.STRING, 'vm_state', 'UTF8', None, ), # 12 ) all_structs.append(ClusterInstance) ClusterInstance.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "type", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "image", - "UTF8", - None, - ), # 2 - ( - 3, - TType.I32, - "count", - None, - None, - ), # 3 + (1, TType.STRING, 'type', 'UTF8', None, ), # 1 + (2, TType.STRING, 'image', 'UTF8', None, ), # 2 + (3, TType.I32, 'count', None, None, ), # 3 ) all_structs.append(PlaybookResult) PlaybookResult.thrift_spec = ( None, # 0 - ( - 1, - TType.I32, - "status", - None, - None, - ), # 1 - ( - 2, - TType.STRING, - "stdout", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "stderr", - "UTF8", - None, - ), # 3 + (1, TType.I32, 'status', None, None, ), # 1 + (2, TType.STRING, 'stdout', 'UTF8', None, ), # 2 + (3, TType.STRING, 'stderr', 'UTF8', None, ), # 3 ) all_structs.append(ResourceNotFoundException) ResourceNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "resource_type", - "UTF8", - None, - ), # 2 - ( - 3, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 3 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'resource_type', 'UTF8', None, ), # 2 + (3, TType.STRING, 'name_or_id', 'UTF8', None, ), # 3 ) all_structs.append(ResourceNotAvailableException) ResourceNotAvailableException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 ) all_structs.append(TemplateNotFoundException) TemplateNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "template", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'template', 'UTF8', None, ), # 2 ) all_structs.append(NameAlreadyUsedException) NameAlreadyUsedException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name', 'UTF8', None, ), # 2 ) all_structs.append(ServerNotFoundException) ServerNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(SecurityGroupRuleNotFoundException) SecurityGroupRuleNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(FlavorNotFoundException) FlavorNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(VolumeNotFoundException) VolumeNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(SnapshotNotFoundException) SnapshotNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(ImageNotFoundException) ImageNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(ClusterNotFoundException) ClusterNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(BackendNotFoundException) BackendNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(PlaybookNotFoundException) PlaybookNotFoundException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 - ( - 2, - TType.STRING, - "name_or_id", - "UTF8", - None, - ), # 2 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 + (2, TType.STRING, 'name_or_id', 'UTF8', None, ), # 2 ) all_structs.append(DefaultException) DefaultException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 ) all_structs.append(OpenStackConflictException) OpenStackConflictException.thrift_spec = ( None, # 0 - ( - 1, - TType.STRING, - "message", - "UTF8", - None, - ), # 1 + (1, TType.STRING, 'message', 'UTF8', None, ), # 1 ) fix_spec(all_structs) del all_structs diff --git a/simple_vm_client/util/logger.py b/simple_vm_client/util/logger.py index 5850cb7b..2dfc78b9 100644 --- a/simple_vm_client/util/logger.py +++ b/simple_vm_client/util/logger.py @@ -17,6 +17,11 @@ def setup_custom_logger(name): handler = logging.StreamHandler() handler.setFormatter(formatter) + # Create the log directory if it does not exist + log_dir = os.path.dirname(LOG_FILE) + if not os.path.exists(log_dir): + os.makedirs(log_dir) + file_handler = RotatingFileHandler( maxBytes=LOG_MAX_BYTES, backupCount=LOG_BACKUP_COUNT, filename=LOG_FILE ) diff --git a/simple_vm_client/util/test_thrift_converter.py b/simple_vm_client/util/test_thrift_converter.py new file mode 100644 index 00000000..33196ad7 --- /dev/null +++ b/simple_vm_client/util/test_thrift_converter.py @@ -0,0 +1,265 @@ +import unittest +from unittest.mock import patch + +from openstack.block_storage.v2.snapshot import Snapshot as OpenStackVolumeSnapshot +from openstack.block_storage.v3.volume import Volume as OpenStackVolume +from openstack.compute.v2.flavor import Flavor as OpenStackFlavor +from openstack.compute.v2.server import Server as OpenStackServer +from openstack.image.v2.image import Image as OpenStackImage +from openstack.test import fakes + +from simple_vm_client.ttypes import VM, Flavor, Image, Snapshot, Volume +from simple_vm_client.util import thrift_converter +from simple_vm_client.util.state_enums import VmStates + + +class TestThriftConverter(unittest.TestCase): + def test_os_to_thrift_image(self): + openstack_image = fakes.generate_fake_resource(OpenStackImage) + result_image = thrift_converter.os_to_thrift_image( + openstack_image=openstack_image + ) + properties = openstack_image.get("properties") + if not properties: + properties = {} + self.assertIsInstance(result_image, Image) + self.assertEqual(result_image.name, openstack_image.name) + self.assertEqual(result_image.min_disk, openstack_image.min_disk) + self.assertEqual(result_image.min_ram, openstack_image.min_ram) + self.assertEqual(result_image.status, openstack_image.status) + self.assertEqual(result_image.created_at, openstack_image.created_at) + self.assertEqual(result_image.updated_at, openstack_image.updated_at) + self.assertEqual(result_image.os_version, openstack_image.os_version) + self.assertEqual(result_image.openstack_id, openstack_image.id) + self.assertEqual(result_image.description, properties.get("description", "")) + self.assertEqual(result_image.tags, openstack_image.tags) + self.assertFalse(result_image.is_snapshot) + + def test_os_to_thrift_images(self): + openstack_images: list[OpenStackImage] = list( + fakes.generate_fake_resources(OpenStackImage, count=3) + ) + result_images: list[Image] = thrift_converter.os_to_thrift_images( + openstack_images=openstack_images + ) + self.assertEqual(len(result_images), len(openstack_images)) + for result_image, openstack_image in zip(result_images, openstack_images): + properties = openstack_image.get("properties") + if not properties: + properties = {} + self.assertIsInstance(result_image, Image) + self.assertEqual(result_image.name, openstack_image.name) + self.assertEqual(result_image.min_disk, openstack_image.min_disk) + self.assertEqual(result_image.min_ram, openstack_image.min_ram) + self.assertEqual(result_image.status, openstack_image.status) + self.assertEqual(result_image.created_at, openstack_image.created_at) + self.assertEqual(result_image.updated_at, openstack_image.updated_at) + self.assertEqual(result_image.os_version, openstack_image.os_version) + self.assertEqual(result_image.openstack_id, openstack_image.id) + self.assertEqual( + result_image.description, properties.get("description", "") + ) + self.assertEqual(result_image.tags, openstack_image.tags) + self.assertFalse(result_image.is_snapshot) + + def test_os_to_thrift_flavor(self): + openstack_flavor: OpenStackFlavor = fakes.generate_fake_resource( + OpenStackFlavor + ) + result_flavor: Flavor = thrift_converter.os_to_thrift_flavor( + openstack_flavor=openstack_flavor + ) + self.assertIsInstance(result_flavor, Flavor) + self.assertEqual(result_flavor.vcpus, openstack_flavor.vcpus) + self.assertEqual(result_flavor.ram, openstack_flavor.ram) + self.assertEqual(result_flavor.disk, openstack_flavor.disk) + self.assertEqual(result_flavor.name, openstack_flavor.name) + self.assertEqual(result_flavor.ephemeral_disk, openstack_flavor.ephemeral) + self.assertEqual(result_flavor.description, openstack_flavor.description or "") + + def test_os_to_thrift_flavors(self): + openstack_flavors: list[OpenStackFlavor] = list( + fakes.generate_fake_resources(OpenStackFlavor, count=3) + ) + result_flavors: list[Flavor] = thrift_converter.os_to_thrift_flavors( + openstack_flavors=openstack_flavors + ) + self.assertEqual(len(result_flavors), len(openstack_flavors)) + for result_flavor, openstack_flavor in zip(result_flavors, openstack_flavors): + self.assertIsInstance(result_flavor, Flavor) + self.assertEqual(result_flavor.vcpus, openstack_flavor.vcpus) + self.assertEqual(result_flavor.ram, openstack_flavor.ram) + self.assertEqual(result_flavor.disk, openstack_flavor.disk) + self.assertEqual(result_flavor.name, openstack_flavor.name) + self.assertEqual(result_flavor.ephemeral_disk, openstack_flavor.ephemeral) + self.assertEqual( + result_flavor.description, openstack_flavor.description or "" + ) + + def test_os_to_thrift_volume_none(self): + result_volume: Volume = thrift_converter.os_to_thrift_volume( + openstack_volume=None + ) + self.assertIsInstance(result_volume, Volume) + self.assertEqual(result_volume.status, VmStates.NOT_FOUND) + + def test_os_to_thrift_volume_without_device(self): + openstack_volume: OpenStackVolume = fakes.generate_fake_resource( + OpenStackVolume + ) + openstack_volume["attachments"] = None + result_volume: Volume = thrift_converter.os_to_thrift_volume( + openstack_volume=openstack_volume + ) + self.assertIsInstance(result_volume, Volume) + + self.assertEqual(result_volume.device, None) + self.assertEqual(result_volume.server_id, None) + + def test_os_to_thrift_volume_with_device(self): + openstack_volume: OpenStackVolume = fakes.generate_fake_resource( + OpenStackVolume + ) + device = "/dev/vdb" + server_id = "1234" + openstack_volume["attachments"] = [{"device": device, "server_id": server_id}] + result_volume: Volume = thrift_converter.os_to_thrift_volume( + openstack_volume=openstack_volume + ) + self.assertIsInstance(result_volume, Volume) + self.assertEqual(result_volume.status, openstack_volume.status) + self.assertEqual(result_volume.id, openstack_volume.id) + self.assertEqual(result_volume.name, openstack_volume.name) + self.assertEqual(result_volume.description, openstack_volume.description) + self.assertEqual(result_volume.size, openstack_volume.size) + self.assertEqual(result_volume.device, device) + self.assertEqual(result_volume.server_id, server_id) + + def test_os_to_thrift_volume(self): + openstack_volume: OpenStackVolume = fakes.generate_fake_resource( + OpenStackVolume + ) + + result_volume: Volume = thrift_converter.os_to_thrift_volume( + openstack_volume=openstack_volume + ) + + device = None + server_id = None + self.assertIsInstance(result_volume, Volume) + self.assertEqual(result_volume.status, openstack_volume.status) + self.assertEqual(result_volume.id, openstack_volume.id) + self.assertEqual(result_volume.name, openstack_volume.name) + self.assertEqual(result_volume.description, openstack_volume.description) + self.assertEqual(result_volume.size, openstack_volume.size) + self.assertEqual(result_volume.device, device) + self.assertEqual(result_volume.server_id, server_id) + + def test_os_to_thrift_volume_snapshot_none(self): + result_volume_snapshot: Snapshot = ( + thrift_converter.os_to_thrift_volume_snapshot(openstack_snapshot=None) + ) + self.assertIsInstance(result_volume_snapshot, Snapshot) + self.assertEqual(result_volume_snapshot.status, VmStates.NOT_FOUND) + + def test_os_to_thrift_volume_snapshot(self): + openstack_volume_snapshot: OpenStackVolumeSnapshot = ( + fakes.generate_fake_resource(OpenStackVolumeSnapshot) + ) + result_volume_snapshot: Snapshot = ( + thrift_converter.os_to_thrift_volume_snapshot( + openstack_snapshot=openstack_volume_snapshot + ) + ) + self.assertIsInstance(result_volume_snapshot, Snapshot) + self.assertEqual( + result_volume_snapshot.status, openstack_volume_snapshot.status + ) + self.assertEqual(result_volume_snapshot.id, openstack_volume_snapshot.id) + self.assertEqual(result_volume_snapshot.name, openstack_volume_snapshot.name) + self.assertEqual( + result_volume_snapshot.description, openstack_volume_snapshot.description + ) + self.assertEqual( + result_volume_snapshot.created_at, openstack_volume_snapshot.created_at + ) + self.assertEqual(result_volume_snapshot.size, openstack_volume_snapshot.size) + self.assertEqual( + result_volume_snapshot.volume_id, openstack_volume_snapshot.volume_id + ) + + def test_os_to_thrift_server_no_image_and_addresses(self): + openstack_server = fakes.generate_fake_resource(OpenStackServer) + openstack_flavor: OpenStackFlavor = fakes.generate_fake_resource( + OpenStackFlavor + ) + openstack_server.flavor = openstack_flavor + floating_ip = "127.0.0.1" + fixed = "192.168.0.1" + openstack_server.addresses = { + "network": [ + {"OS-EXT-IPS:type": "floating", "addr": floating_ip}, + {"OS-EXT-IPS:type": "fixed", "addr": fixed}, + ] + } + openstack_server.image = None + result_server: VM = thrift_converter.os_to_thrift_server( + openstack_server=openstack_server + ) + self.assertIsInstance(result_server, VM) + self.assertIsInstance(result_server.flavor, Flavor) + self.assertEqual(result_server.image, None) + self.assertEqual(result_server.fixed_ip, fixed) + self.assertEqual(result_server.floating_ip, floating_ip) + + def test_os_to_thrift_server(self): + openstack_server = fakes.generate_fake_resource(OpenStackServer) + openstack_flavor: OpenStackFlavor = fakes.generate_fake_resource( + OpenStackFlavor + ) + openstack_image = fakes.generate_fake_resource(OpenStackImage) + + openstack_server.flavor = openstack_flavor + openstack_server.image = openstack_image + + result_server: VM = thrift_converter.os_to_thrift_server( + openstack_server=openstack_server + ) + self.assertIsInstance(result_server, VM) + self.assertIsInstance(result_server.flavor, Flavor) + self.assertIsInstance(result_server.image, Image) + self.assertEqual(result_server.metadata, openstack_server.metadata) + self.assertEqual(result_server.project_id, openstack_server.project_id) + self.assertEqual(result_server.keyname, openstack_server.key_name) + self.assertEqual(result_server.name, openstack_server.name) + self.assertEqual(result_server.created_at, openstack_server.created_at) + self.assertEqual(result_server.task_state, openstack_server.task_state) + self.assertEqual(result_server.vm_state, openstack_server.vm_state) + + @patch("simple_vm_client.util.thrift_converter.logger") + def test_os_to_trhift_server_none(self, mock_logger): + result_server: VM = thrift_converter.os_to_thrift_server(openstack_server=None) + self.assertEqual(result_server.vm_state, VmStates.NOT_FOUND) + mock_logger.info.assert_called_once_with("Openstack server not found") + + def test_os_to_thrift_servers(self): + openstack_servers: list[OpenStackFlavor] = list( + fakes.generate_fake_resources(OpenStackServer, count=3) + ) + for openstack_server in openstack_servers: + openstack_flavor: OpenStackFlavor = fakes.generate_fake_resource( + OpenStackFlavor + ) + openstack_image = fakes.generate_fake_resource(OpenStackImage) + + openstack_server.flavor = openstack_flavor + openstack_server.image = openstack_image + + result_servers: VM = thrift_converter.os_to_thrift_servers( + openstack_servers=openstack_servers + ) + self.assertEqual(len(result_servers), len(openstack_servers)) + + +if __name__ == "__main__": + unittest.main() diff --git a/simple_vm_client/util/thrift_converter.py b/simple_vm_client/util/thrift_converter.py index 98ca0705..8af1177d 100644 --- a/simple_vm_client/util/thrift_converter.py +++ b/simple_vm_client/util/thrift_converter.py @@ -1,15 +1,14 @@ from __future__ import annotations -import logging - from openstack.block_storage.v2.snapshot import Snapshot as OpenStack_Snapshot from openstack.block_storage.v2.volume import Volume as OpenStack_Volume from openstack.compute.v2.flavor import Flavor as OpenStack_Flavor from openstack.compute.v2.image import Image as OpenStack_Image from openstack.compute.v2.server import Server as OpenStack_Server -from ttypes import VM, Flavor, Image, Snapshot, Volume -from util.logger import setup_custom_logger -from util.state_enums import VmStates + +from simple_vm_client.ttypes import VM, Flavor, Image, Snapshot, Volume +from simple_vm_client.util.logger import setup_custom_logger +from simple_vm_client.util.state_enums import VmStates logger = setup_custom_logger(__name__) @@ -61,12 +60,15 @@ def os_to_thrift_flavors(openstack_flavors: list[OpenStack_Flavor]) -> list[Flav def os_to_thrift_volume(openstack_volume: OpenStack_Volume) -> Volume: if not openstack_volume: return Volume(status=VmStates.NOT_FOUND) - if openstack_volume.get("attachments"): - device = openstack_volume.attachments[0]["device"] - server_id = openstack_volume.attachments[0]["server_id"] - else: - device = None - server_id = None + attachments = openstack_volume.attachments + device = None + server_id = None + if attachments: + try: + device = openstack_volume.attachments[0]["device"] + server_id = openstack_volume.attachments[0]["server_id"] + except Exception: + pass volume = Volume( status=openstack_volume.status, id=openstack_volume.id, @@ -97,12 +99,11 @@ def os_to_thrift_volume_snapshot(openstack_snapshot: OpenStack_Snapshot) -> Snap def os_to_thrift_server(openstack_server: OpenStack_Server) -> VM: if not openstack_server: - logging.info("Openstack server not found") + logger.info("Openstack server not found") return VM(vm_state=VmStates.NOT_FOUND) fixed_ip = "" floating_ip = "" - flavor = os_to_thrift_flavor(openstack_flavor=openstack_server.flavor) if openstack_server.image: image = os_to_thrift_image(openstack_image=openstack_server.image) @@ -110,7 +111,6 @@ def os_to_thrift_server(openstack_server: OpenStack_Server) -> VM: image = None for values in openstack_server.addresses.values(): for address in values: - if address["OS-EXT-IPS:type"] == "floating": floating_ip = address["addr"] elif address["OS-EXT-IPS:type"] == "fixed":