{"id":18825314,"url":"https://github.com/grycap/im-client","last_synced_at":"2026-03-04T13:00:30.659Z","repository":{"id":20589234,"uuid":"23869948","full_name":"grycap/im-client","owner":"grycap","description":"IM - Infrastructure Manager client","archived":false,"fork":false,"pushed_at":"2026-02-27T17:07:19.000Z","size":622,"stargazers_count":6,"open_issues_count":1,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-02-27T21:37:19.185Z","etag":null,"topics":["cloud-computing","contextualization","virtual-infrastructures"],"latest_commit_sha":null,"homepage":"http://www.grycap.upv.es/im","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grycap.png","metadata":{"files":{"readme":"README.md","changelog":"changelog","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-09-10T10:10:22.000Z","updated_at":"2026-02-27T17:04:41.000Z","dependencies_parsed_at":"2024-12-05T16:20:23.731Z","dependency_job_id":"e39638af-1f12-48d0-b987-4bdb34f065f8","html_url":"https://github.com/grycap/im-client","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/grycap/im-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grycap%2Fim-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grycap%2Fim-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grycap%2Fim-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grycap%2Fim-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grycap","download_url":"https://codeload.github.com/grycap/im-client/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grycap%2Fim-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30081037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T12:28:08.313Z","status":"ssl_error","status_checked_at":"2026-03-04T12:27:28.210Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-computing","contextualization","virtual-infrastructures"],"created_at":"2024-11-08T00:59:04.352Z","updated_at":"2026-03-04T13:00:30.623Z","avatar_url":"https://github.com/grycap.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IM - Infrastructure Manager client\n\n[![PyPI](https://img.shields.io/pypi/v/im-client.svg)](https://pypi.org/project/im-client)\n[![Tests](https://github.com/grycap/im-client/actions/workflows/main.yaml/badge.svg)](https://github.com/grycap/im-client/actions/workflows/main.yaml)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/c74628a2fc134c2683d3fc57b571ce09)](https://www.codacy.com/gh/grycap/im-client/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=grycap/im-client\u0026amp;utm_campaign=Badge_Grade)\n[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/c74628a2fc134c2683d3fc57b571ce09)](https://www.codacy.com/app/micafer/im-client?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=grycap/im-client\u0026utm_campaign=Badge_Coverage)\n[![License](https://img.shields.io/badge/license-GPL%20v3.0-brightgreen.svg)](LICENSE)\n[![Docs](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://imdocs.readthedocs.io/en/latest/client.html)\n[![SQAaaS badge](https://img.shields.io/badge/sqaaas%20software-gold-yellow)](https://eu.badgr.com/public/assertions/Zonx9GHHRiSxDVtabutm7g)\n\nIM is a tool that ease the access and the usability of IaaS clouds by\nautomating the VMI selection, deployment, configuration, software installation,\nmonitoring and update of Virtual Appliances. It supports APIs from a large\nnumber of virtual platforms, making user applications cloud-agnostic. In\naddition it integrates a contextualization system to enable the installation\nand configuration of all the user required applications providing the user with\na fully functional infrastructure.\n\n```sh\nUsage: im_client \\\n         [-r|--restapi-url \u003curl\u003e] \\\n         [-v|--verify-ssl] \\\n         [-a|--auth_file \u003cfilename\u003e] \\\n         operation op_parameters\n```\n\n## Achievements\n\n[![SQAaaS badge](https://github.com/EOSC-synergy/SQAaaS/raw/master/badges/badges_150x116/badge_software_gold.png)](https://eu.badgr.com/public/assertions/Zonx9GHHRiSxDVtabutm7g \"SQAaaS gold badge achieved\")\n\nThis software has received a gold badge according to the\n[Software Quality Baseline criteria](https://github.com/indigo-dc/sqa-baseline)\ndefined by the [EOSC-Synergy](https://www.eosc-synergy.eu) project.\n\n## 1 INSTALLATION\n\n### 1.1 REQUISITES\n\nIM is based on python, so Python 3 or higher runtime and standard\nlibrary must be installed in the system.\n\nIt is also required the [RADL parser](https://github.com/grycap/radl),\navailable in pip as the 'RADL' package. It is also required the Python\n[Requests library](http://docs.python-requests.org/)\navailable as 'python-requests' in O.S. packages or 'requests' in pip.\n\n### 1.2 INSTALLING\n\n#### 1.2.1 FROM PIP\n\nYou only have to call the install command of the pip tool with the IM-client\npackage.\n\n```sh\npip install IM-client\n```\n\n#### 1.2.2 IM-Client Docker image\n\nThe IM Client has an official Docker container image available in Github\nContainer Registry that can be used instead of installing the CLI. You can\ndownload it by typing:\n\n```sh\nsudo docker pull ghcr.io/grycap/im-client\n```\n\nYou can exploit all the potential of the IM Client as if you download the CLI\nand run it on your computer:\n\n```sh\ndocker run --rm -ti -v \"$PWD:/tmp/im\" ghcr.io/grycap/im-client \\\n      -r https://server.com:8800 -a /tmp/im/auth.dat list\ndocker run --rm -ti -v \"$PWD:/tmp/im\" ghcr.io/grycap/im-client \\\n      -r https://server.com:8800 -a /tmp/im/auth.dat create /tmp/im/somefile.radl\n```\n\n### 1.3 CONFIGURATION\n\nTo avoid typing the parameters in all the client calls. The user can define a\nconfig file \"im_client.cfg\" in the current directory or a file \".im_client.cfg\"\nin their home directory. In the config file the user can specify the following\nparameters:\n\n```sh\n[im_client]\nrestapi_url=http://localhost:8800\nauth_file=auth.dat\n```\n\n#### 1.3.1 AUTH FILE\n\nThe authorization file stores in plain text the credentials to access the\ncloud providers, the IM service and the VMRC service. Each line of the file\nis composed by pairs of key and value separated by semicolon, and refers to a\nsingle credential. The key and value should be separated by \" = \", that is\n**an equals sign preceded and followed by one white space at least**, like\nthis:\n\n```sh\nid = id_value ; type = zzzz ; username = xxxx ; password = yyyy\n```\n\nRemember that the **InfrastructureManager auth line is mandatory**, like this:\n\n```sh\nid = im ; type = InfrastructureManager ; username = xxxx ; password = yyyy\n```\n\nor using an OIDC token:\n\n```sh\nid = im ; type = InfrastructureManager ; token = xxxxxx\n```\n\nValues can contain \"=\", and \"\\\\n\" is replaced by carriage return. The available\nkeys are:\n\n* ``type`` indicates the service that refers the credential. The services\n  supported are ``InfrastructureManager``, ``VMRC``, ``OpenNebula``, ``EC2``\n  , ``FogBow``, ``OpenStack``, ``OCCI``, ``LibCloud``, ``Docker``, ``GCE``,\n  ``Azure``, ``AzureClassic`` and ``Kubernetes``.\n\n* ``username`` indicates the user name associated to the credential. In EC2\n  it refers to the *Access Key ID*. In GCE it refers to *Service Account's\n  Email Address*.\n\n* ``password`` indicates the password associated to the credential. In EC2\n  it refers to the *Secret Access Key*. In GCE it refers to *Service  Private\n  Key* (either in JSON or PKCS12 formats). See how to get it and how to extract\n  the private key file from\n  [here](https://cloud.google.com/storage/docs/authentication#service_accounts).\n  In OpenStack sites using 3.x_oidc_access_token authentication it indicates\n  the OIDC access token.\n\n* ``tenant`` indicates the tenant associated to the credential.\n  This field is only used in the OpenStack plugin.\n\n* ``host`` indicates the address of the access point to the cloud provider.\n  This field is not used in IM, GCE, Azure, and EC2 credentials.\n\n* ``proxy`` indicates the content of the proxy file associated to the\n  credential. To refer to a file you must use the function\n  \"file(/tmp/proxyfile.pem)\" as shown in the example.\n  This field is used in the OCCI and OpenStack plugins.\n\n* ``project`` indicates the project name associated to the credential.\n  This field is only used in the GCE plugin.\n\n* ``public_key`` indicates the content of the public key file associated to\n  the credential. To refer to a file you must use the function \"file(cert.pem)\"\n  as shown in the example. This field is used in the Azure Classic and Docker\n  plugins. For Azure Classic see how to get it\n  [here](https://msdn.microsoft.com/en-us/library/azure/gg551722.aspx).\n\n* ``private_key`` indicates the content of the private key file associated to\n  the credential. To refer to a file you must use the function \"file(key.pem)\"\n  as shown in the example. This field is used in the Azure Classic and Docker\n  plugins. For Azure Classic see how to get it\n  [here](https://msdn.microsoft.com/en-us/library/azure/gg551722.aspx).\n\n* ``id`` associates an identifier to the credential. The identifier should be\n  used as the label in the *deploy* section in the RADL.\n\n* ``subscription_id`` indicates the subscription_id name associated to the\n  credential. This field is only used in the Azure and Azure Classic plugins.\n  To create a user to use the Azure (ARM) plugin check the documentation of\n  the Azure python SDK:\n  [here](https://azure-sdk-for-python.readthedocs.io/en/latest/quickstart_authentication.html#using-ad-user-password)\n\n* ``token`` indicates the OpenID token associated to the credential. This\n  field is used in the OCCI and also to authenticate with the\n  InfrastructureManager. To refer to the output of a command you must\n  use the function \"command(command)\" as shown in the examples.\n\n##### OpenStack addicional fields\n\nOpenStack has a set of addicional fields to access a cloud site:\n\n* ``auth_version`` the auth version used to connect with the Keystone server.\n  The possible values are: ``2.0_password`` or ``3.X_password``. The default\n  value is ``2.0_password``.\n\n* ``base_url`` base URL to the OpenStack API endpoint. By default, the\n  connector obtains API endpoint URL from the server catalog, but if this\n  argument is provided, this step is skipped and the provided value is used\n  directly. The value is: `http://cloud_server.com:8774/v2/\u003ctenant_id\u003e`.\n  \n* ``service_region`` the region of the cloud site (case sensitive). It is used\n  to obtain  the API endpoint URL. The default value is: ``RegionOne``.\n\n* ``service_name`` the service name used to obtain the API endpoint URL.\n  The default value is: ``Compute``.\n\n* ``auth_token`` token which is used for authentication. If this argument is\n  provided, normal authentication flow is skipped and the OpenStack API\n  endpoint is directly hit with the provided token. Normal authentication\n  flow involves hitting the auth service (Keystone) with the provided username\n  and password and requesting an authentication token.\n\nAn example of the auth file:\n\n\u003c!-- markdownlint-disable MD013 --\u003e\n```sh\n# OpenNebula site\nid = one; type = OpenNebula; host = osenserver:2633; username = user; password = pass\n# OpenStack site using standard user, password, tenant format\nid = ost; type = OpenStack; host = https://ostserver:5000; username = user; password = pass; tenant = tenant\n# OpenStack site using VOMS proxy authentication\nid = ostvoms; type = OpenStack; proxy = file(/tmp/proxy.pem); host = https://keystone:5000; tenant = tname\n# OpenStack site using OIDC authentication for EGI Sites\nid = ost; type = OpenStack; host = https://ostserver:5000; username = egi.eu; tenant = openid; password = command(oidc-token OIDC_ACCOUNT); auth_version = 3.x_oidc_access_token; domain = project_name_or_id\n# IM auth data\nid = im; type = InfrastructureManager; username = user; password = pass\n# VMRC auth data\nid = vmrc; type = VMRC; host = http://server:8080/vmrc; username = user; password = pass\n# EC2 auth data\nid = ec2; type = EC2; username = ACCESS_KEY; password = SECRET_KEY\n# Google compute auth data\nid = gce; type = GCE; username = username.apps.googleusercontent.com; password = pass; project = projectname\n# Docker site with certificates\nid = docker; type = Docker; host = http://host:2375; public_key = file(/tmp/cert.pem); private_key = file(/tmp/key.pem)\n# Docker site without SSL security\nid = docker; type = Docker; host = http://host:2375\n# OCCI VOMS site auth data\nid = occi; type = OCCI; proxy = file(/tmp/proxy.pem); host = https://server.com:11443\n# OCCI OIDC site auth data\nid = occi; type = OCCI; token = token; host = https://server.com:11443\n# Azure (RM) site auth data\nid = azure; type = Azure; subscription_id = subscription-id; username = user@domain.com; password = pass\n# Kubernetes site auth data\nid = kub; type = Kubernetes; host = http://server:8080; username = user; password = pass\n# FogBow auth data\nid = fog; type = FogBow; host = http://server:8182; proxy = file(/tmp/proxy.pem)\n# Azure Classic auth data\nid = azurecla; type = AzureClassic; subscription_id = subscription_id; public_key = file(/tmp/cert.pem); private_key = file(/tmp/key.pem)\n```\n\u003c!-- markdownlint-enable MD013 --\u003e\n\n### 1.4 INVOCATION\n\nThe program`im_client` is called like this:\n\n```sh\nUsage: im_client.py \\\n         [-r|--restapi-url \u003curl\u003e] \\\n         [-v|--verify-ssl] \\\n         [-a|--auth_file \u003cfilename\u003e] \\\n         operation op_parameters\n```\n\n* option:: -r|--rest-url url\n\n   URL to the REST API on the IM service.\n   This option or the `-u` one must be specified.\n\n* option:: -v|--verify-ssl\n\n   Verify the certificates of the SSL connection.\n   The default value is `False`,\n\n* option: -a|--auth_file filename\n\n   Path to the authorization file, see [here](https://imdocs.readthedocs.io/en/latest/client.html#authorization-file).\n   This option is compulsory.\n\n* option: -f|--force\n\n   Force the deletion of the infrastructure. Only for destroy operation.\n   The default value is `False`.\n\n* option: -q|--quiet\n\n   Work in quiet mode. Avoid all unnecessary prints.\n   The default value is `False`.\n\n* option: -n|--name\n\n   Show/use Infrastructure name in the selected operation.\n   In case of list operation it will show the name of each infrastructure\n   (if available). In other operations if this flag is set the user should\n   specify the name of the infrastructure instead of the ID.\n   The default value is `False`.\n\n* operation:\n\n   ``list [filter]``:\n      List the infrastructure IDs created by the user. The ``filter`` parameter\n      is optional and is a regex that will be used to filter the list of\n      infrastructures.\n\n   ``create \u003cradlfile\u003e [async_flag]``\n      Create an infrastructure using RADL specified in the file with path\n      ``radlfile``. The ``async_flag`` parameter is optional\n      and is a flag to specify if the creation call will wait the resources\n      to be created or return immediately the id of the infrastructure.\n\n   ``destroy \u003cinfId\u003e``\n      Destroy the infrastructure with ID ``infId``.\n\n   ``getinfo \u003cinfId\u003e``\n      Show the information about all the virtual machines associated to the\n      infrastructure with ID ``infId``.\n\n   ``getcontmsg \u003cinfId\u003e``\n      Show the contextualization message of the infrastructure with ID\n      ``infId``.\n\n   ``getstate \u003cinfId\u003e``\n      Show the state of the infrastructure with ID ``infId``.\n\n   ``getoutputs \u003cinfId\u003e``\n      Show the outputs of infrastructure with ID ``infId``\n      (Only in case of TOSCA docs with REST API).\n\n   ``getvminfo \u003cinfId\u003e \u003cvmId\u003e``\n      Show the information associated to the virtual machine with ID ``vmId``\n      associated to the infrastructure with ID ``infId``.\n\n   ``getvmcontmsg \u003cinfId\u003e \u003cvmId\u003e``\n      Show the contextualization message of the virtual machine with ID\n      ``vmId`` associated to the infrastructure with ID ``infId``.\n\n   ``addresource \u003cinfId\u003e \u003cradlfile\u003e [ctxt_flag]``\n      Add to infrastructure with ID ``infId`` the resources specifies in the\n      RADL file with path ``radlfile``. The ``ctxt_flag`` parameter is optional\n      and is a flag to specify if the contextualization step will be launched\n      just after the VM addition. If not specified the contextualization step\n      will be launched.\n\n   ``removeresource \u003cinfId\u003e \u003cvmId\u003e [ctxt_flag]``\n      Destroy the virtual machine with ID ``vmId`` in the infrastructure with\n      ID ``infId``. The ``ctxt_flag`` parameter is optional\n      and is a flag to specify if the contextualization step will be launched\n      just after the VM addition. If not specified the contextualization step\n      will be launched.\n\n   ``start \u003cinfId\u003e``\n      Resume all the virtual machines associated to the infrastructure with ID\n      ``infId``, stopped previously by the operation ``stop``.\n\n   ``stop \u003cinfId\u003e``\n      Stop (but not remove) the virtual machines associated to the\n      infrastructure with ID ``infId``.\n\n   ``alter \u003cinfId\u003e \u003cvmId\u003e \u003cradlfile\u003e``\n      Modify the specification of the virtual machine with ID ``vmId``\n      associated to the infrastructure with ID ``vmId``, using the RADL\n      specification in file with path ``radlfile``.\n\n   ``reconfigure \u003cinfId\u003e [radl_file] [vm_list]``\n      Reconfigure the infrastructure with ID ``infId`` and also update the\n      configuration data. The last  ``vm_list`` parameter is optional\n      and is a list integers specifying the IDs of the VMs to reconfigure.\n      If not specified all the VMs will be reconfigured.\n\n   ``startvm \u003cinfId\u003e \u003cvmId\u003e``\n      Resume the specified virtual machine ``vmId`` associated to the\n      infrastructure with ID ``infId``, stopped previously by the operation\n      ``stop``.\n\n   ``stopvm \u003cinfId\u003e \u003cvmId\u003e``\n      Stop (but not remove) the specified virtual machine ``vmId`` associated\n      to the infrastructure with ID infrastructure with ID ``infId``.\n\n   ``rebootvm \u003cinfId\u003e \u003cvmId\u003e``\n      Reboot the specified virtual machine ``vmId`` associated to the\n      infrastructure with ID ``infId``.\n\n   ``sshvm \u003cinfId\u003e \u003cvmId\u003e [show_only] [command]``\n      Connect with SSH with the specified virtual machine ``vmId`` associated to\n      infrastructure with ID ``infId``. In case that the specified VM does not\n      have public IP the client will try to connect using the virtual machine\n      with ID ``0`` as SSH proxy. The ``show_only`` parameter is optional\n      and is a flag to specify if ssh command will only be shown in stdout\n      instead of executed. The ``command`` parameter is optional and enables\n      the execution of a particular command in the VM.\n\n   ``ssh \u003cinfId\u003e [show_only] [command]``\n      Connect with SSH with the virtual machine with ID ``0`` associated to\n      infrastructure with ID ``infId``.\n      The ``show_only`` parameter is optional\n      and is a flag to specify if ssh command will only be shown in stdout\n      instead of executed. The ``command`` parameter is optional and enables\n      the execution of a particular command in the VM.\n\n   ``get \u003cinfId\u003e \u003cshow_only\u003e \u003csrc\u003e \u003cdst\u003e``\n      Copy with SCP from the virtual machine with ID ``0`` associated to\n      infrastructure with ID ``infId``. The ``show_only`` parameter\n      is a flag to specify if ssh command will only be shown in stdout\n      instead of executed. The ``scr`` parameneter is the path of the file\n      in the remote VM, ``dst`` is the path on the local machine.\n\n   ``getvm \u003cinfId\u003e \u003cvmId\u003e \u003cshow_only\u003e \u003csrc\u003e \u003cdst\u003e``\n      Copy with SCP from the specified virtual machine ``vmId`` associated to\n      infrastructure with ID ``infId``. In case that the specified VM does not\n      have public IP the client will try to connect using the virtual machine\n      with ID ``0`` as SSH proxy. The ``show_only`` parameter\n      is a flag to specify if ssh command will only be shown in stdout\n      instead of executed. The ``scr`` parameneter is the path of the file\n      in the remote VM, ``dst`` is the path on the local machine.\n\n   ``put \u003cinfId\u003e \u003cshow_only\u003e \u003csrc\u003e \u003cdst\u003e``\n      Copy with SCP to the virtual machine with ID ``0`` associated to\n      infrastructure with ID ``infId``. The ``show_only`` parameter\n      is a flag to specify if ssh command will only be shown in stdout\n      instead of executed. The ``scr`` parameneter is the path of the file\n      in the local file, ``dst`` is the path on the remote VM.\n\n   ``putvm \u003cinfId\u003e \u003cvmId\u003e \u003cshow_only\u003e \u003csrc\u003e \u003cdst\u003e``\n      Copy with SCP to the specified virtual machine ``vmId`` associated to\n      infrastructure with ID ``infId``. In case that the specified VM does not\n      have public IP the client will try to connect using the virtual machine\n      with ID ``0`` as SSH proxy. The ``show_only`` parameter\n      is a flag to specify if ssh command will only be shown in stdout\n      instead of executed. The ``scr`` parameneter is the path of the file\n      in the local file, ``dst`` is the path on the remote VM.\n\n   ``export \u003cinfId\u003e [delete]``\n      Export the data of the infrastructure with ID ``infId``. The ``delete``\n      parameter is optional and is a flag to specify if the infrastructure\n      will be deleted from the IM service (the VMs are not deleted).\n\n   ``import \u003cjson_file\u003e``\n      Import the data of an infrastructure previously exported with the\n      previous function. The ``json_file`` is a file with the data generated\n      with the  ``export`` function.\n\n   ``wait \u003cinfId\u003e \u003cmaxTime\u003e``\n      Wait the infrastructure with ID ``infId`` to be be in a final state\n      (\"configured\", \"unconfigured\" or \"failed\"). It has an optional parameter\n      ``maxTime`` with the max time to wait. It returns 0 if the infrastructure\n      ends with a \"configured\" state or 1 otherwise.\n\n   ``create_wait_outputs \u003cradlfile\u003e``\n      This operation is a combination of the create, wait and getoutputs\n      functions. First it creates the infrastructure using the specified\n      ``inputfile``, then waits for it to be configured, and finally gets the\n      TOSCA outputs. In case of failure in then infrastructure creation step\n      only the error message will be returned. The results will be returned to\n      stdout in json format::\n\n```json\n         {\"infid\": \"ID\", \"error\": \"Error message\"}\n```\n\n   ``change_auth \u003cinfId\u003e \u003cnewAuthFile\u003e [overwrite]``\n      This operation enables to change the owner of infrastructure with ID\n      ``infId`` using the authentication data from file ``newAuthFile``.\n      The ``overwrite`` parameter is optional and is a flag to specify if the\n      authentication data will be overwrited or will be appended. The default\n      value is 0.\n\n### 1.5 PYTHON CLIENT\n\nIMClient can also be used as a Python library to access IM (since version\n1.7.0):\n\n```py\n   from imclient import IMClient\n\n   auth = IMClient.read_auth_data(\"/path/auth.dat\")\n   client = IMClient.init_client(\"https://im.egi.eu/im\", auth)\n   inf_desc = \"\"\"\n      network public (outbound = 'yes')\n\n      system node (\n      cpu.count\u003e=2 and\n      memory.size\u003e=4g and\n      net_interface.0.connection = 'public' and\n      disk.0.os.name='linux' and\n      disk.0.image.url = 'appdb://SCAI/egi.ubuntu.20.04?vo.access.egi.eu'\n      )\n\n      configure wn (\n      @begin\n      ---\n      - tasks:\n         - debug: msg=\"Configured!\"\n      @end\n      )\n\n      deploy node 1\n   \"\"\"\n   success, inf_id = client.create(inf_desc)\n   ...\n   success, err = client.destroy(inf_id)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrycap%2Fim-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrycap%2Fim-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrycap%2Fim-client/lists"}