{ "info": { "author": "Mateus Interciso", "author_email": "minterciso@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Automation Anywhere Python API Integration\n\n## About\nThis Python module is used to talk to Automation Anywhere 10.5.x and start Tasks on selected machines.\nWhat it does is basically call the Automation Anywhere REST API 2 times:\n1. To login\n2. To execute the task\n\nAutomation Anywhere does have a basic check if the task was \"asked to be deployed\" \nsuccessfully, albeit very simple, it's still better then nothing.\n\n## Install\nThere are some minimum dependencies:\n\n pip install pyodbc>=4.0 sqlalchemy>=1.3 requests>=2.21 \n\nAfter installing them, you can proceed with the installation:\n\n pip install automation_anywhere\n\n## Usage\nAs is, for the version 10.5.x, the API usage is basically:\n\n\n from automation_anywhere import base\n import logging\n\n logging.basicConfig(level=logging.DEBUG)\n\n try:\n aa = base.Executor(host='localhost', protocol='http', port=8080, username='bot_user', password='bot_password')\n aa.deploy_task(task='My Tasks\\\\Task1.atmx', client='BOTRUNNER01')\n except Exception as error:\n print(error)\n raise\n\n\nThe errors mainly come from the requests() that we create witht the JSON,\nand while there are some errors from the Automation Anywhere side, they get back\n mainly as \"Internal Error\", unless it's username/password issues.\n\n### What about task status?\nThe Automation Anywhere API (at least on version 10) does not return the task status, it only\nreturns the *deploy* status. Knowing that I did a little reverse engineering on the \ndatabase, and came up with some simple queries that can check the status of the task.\n\nThere are a few caveats and warnings that you should know, before using this:\n1) It'll block the execution, making it a sync execution, instead of async\n2) You need to configure the ODBC directly for the Control Room database\n3) There'll be a lot of queries to get the correct task ID, and status\n4) This simply **does not** works on V11\n5) This works, but it wasn't tested a lot, so there may be some bugs\n\nIf you want to, here's an example on how to use it\n\n from automation_anywhere import base\n import logging\n\n logging.basicConfig(level=logging.DEBUG)\n\n try:\n aa = base.Executor(host='localhost', protocol='http', port=8080, username='bot_user', password='bot_password')\n aa.database_options = {\n 'DSN': 'CR_ODBC_LINK',\n 'username': 'username',\n 'password': 'password'\n }\n aa.set_check_status(True)\n if aa.deploy_task(task='My Tasks\\\\Task1.atmx', client='BOTRUNNER01') is False:\n logging.info('Task deploy or execution failed!')\n logging.info('Task return information:')\n logging.info('Status : {status}'.format(status=aa.task_status['status']))\n logging.info('Complete: {complete}'.format(complete=aa.task_status['complete']))\n logging.info('Error : {error}'.format(error=aa.task_status['error']))\n except Exception as error:\n print(error)\n raise\n## Known issues\nThere's one big thing that needs to be taken account of, always: the Control Room\nCredential Vault must be opened. If not, the Control Room API is unable\nto deploy the task. The Automation Anywhere API however will return this simply\nas an \"Internal Error\", so when this happens you need to go to the Control Room's\nAudit Log and check for the error.\n\nFrom our experience, 90% of the time the error is \"Credential Vault not open\". For \nfixing this the user simply has to login as admin on the \"Control Room\", so if you\nuse an admin user to check all those things, congratulations, by checking it you\nalready fixed it.\n\nThere is however an API call for checking if the Credential Vault is open or not, \nhowever this has proven extremely unreliable and there's no official documentation\nfor it, so I haven't added it here. Maybe on v11 of Automation Anywhere this is\nexecuting better.\n\n## About v11 of Automation Anywhere\nWhile I was developing this simple Python module, Automation Anywhere released\nthe v11 of it's software. It has a lot of new and shiny things, however I wasn't\nable to test it so far. That basically means that this *should* work, but I'll \nnever guarantee it, until I've tested it.\n\n## Todo\nWhile I don't have a timeline (remember I'm *pro bono* here) there's a few things\nI want to do (in no specific order):\n* Test on v11\n* Increase the ease of use of this module \n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/minterciso/pyAutomationAnywhere", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "automation-anywhere", "package_url": "https://pypi.org/project/automation-anywhere/", "platform": "", "project_url": "https://pypi.org/project/automation-anywhere/", "project_urls": { "Homepage": "https://github.com/minterciso/pyAutomationAnywhere" }, "release_url": "https://pypi.org/project/automation-anywhere/1.1/", "requires_dist": [ "pyodbc (>=4.0.26)", "requests (>=2.21.0)", "sqlalchemy (>=1.3.1)" ], "requires_python": "", "summary": "A Python Package to deploy tasks on Automation Anywhere v10.5", "version": "1.1" }, "last_serial": 5005273, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "bd5fd7317d11da6aea212fd8e1f39dc3", "sha256": "716a2a5d3c90d45dd29b74158d467d52ad333e449779b63a50c39dfad2936e10" }, "downloads": -1, "filename": "automation_anywhere-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bd5fd7317d11da6aea212fd8e1f39dc3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8095, "upload_time": "2019-03-29T22:19:05", "url": "https://files.pythonhosted.org/packages/b1/b9/8744f2dc0b4084d68f64a195326e3d641058f07f31a27dad15244ebc6261/automation_anywhere-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "623e8d612b6e9be2ffeb80314d888cff", "sha256": "26b78a25f1aaa02853c608578564d4410401fe27aa61342a58faafb8bc04271f" }, "downloads": -1, "filename": "automation_anywhere-1.1.tar.gz", "has_sig": false, "md5_digest": "623e8d612b6e9be2ffeb80314d888cff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6618, "upload_time": "2019-03-29T22:19:08", "url": "https://files.pythonhosted.org/packages/a5/54/2f9aaa685b614470d7b67d64e4219bc125d004e9cae35ce56bfb5211ac82/automation_anywhere-1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bd5fd7317d11da6aea212fd8e1f39dc3", "sha256": "716a2a5d3c90d45dd29b74158d467d52ad333e449779b63a50c39dfad2936e10" }, "downloads": -1, "filename": "automation_anywhere-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bd5fd7317d11da6aea212fd8e1f39dc3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8095, "upload_time": "2019-03-29T22:19:05", "url": "https://files.pythonhosted.org/packages/b1/b9/8744f2dc0b4084d68f64a195326e3d641058f07f31a27dad15244ebc6261/automation_anywhere-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "623e8d612b6e9be2ffeb80314d888cff", "sha256": "26b78a25f1aaa02853c608578564d4410401fe27aa61342a58faafb8bc04271f" }, "downloads": -1, "filename": "automation_anywhere-1.1.tar.gz", "has_sig": false, "md5_digest": "623e8d612b6e9be2ffeb80314d888cff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6618, "upload_time": "2019-03-29T22:19:08", "url": "https://files.pythonhosted.org/packages/a5/54/2f9aaa685b614470d7b67d64e4219bc125d004e9cae35ce56bfb5211ac82/automation_anywhere-1.1.tar.gz" } ] }