Package: pyedgeconnect
Aruba Edge Connect Python SDKThis package is a python wrapper for leveraging the API for Aruba
Orchestrator and Edge Connect SDWAN systems.API's are documented via Swagger directly on Orchestrator and
Edge Connect web interfaces under "Support > Rest API"Many, but not all API functions have been implemented yet. Development
is underway to continue to add further functions.InstallPython VersionNote:Requires Python 3.7+Once Python 3.7+ is installed on the system, it's recommended to use a
virtual environment to install the package to.In the directory you'd like to write your project/script, setup a python
virtual environment with the desired python version and activate it. This
is important if you have other versions of python installed on your
system.:~$python3.9-mvenvmy_new_project:~$sourcemy_new_project/bin/activate(my_new_project):~$python--versionPython3.9.13Now you are ready to install the package and run your python code.Note:Going forward, these commands assume you're within a Python 3.7+ venv, or Python 3.7+ is the exclusive Python version installed in regard to referencing the use ofpip. If that is not the case, you can specifically appendpython3.x -mahead of thepip install ...Install from PyPI$pipinstallpyedgeconnect...$piplistPackageVersion-------------------------------------------------------------......pyedgeconnectx.y.z......Install from GitHubTo install the most recent version of pyedgeconnect, open an
interactive shell and run:$pipinstallgit+https://github.com/aruba/pyedgeconnect...$piplistPackageVersion-------------------------------------------------------------......pyedgeconnectx.y.z......To install a specific branch use the @branch syntax$pipinstallgit+https://github.com/aruba/pyedgeconnect@<branch_name>...# Install the Development branch$pipinstallgit+https://github.com/aruba/pyedgeconnect@development...Install dev optionsFor editing the code and general testing you can specify the[dev]extras which will include ["black", "flake8", "flake8-rst-docstrings",
"isort", "sphinx", "sphinx_rtd_theme"]To install from the remote repo with the[dev]extras option use the
following syntax:$pipinstallpyedgeconnect[dev]or$pipinstallgit+https://github.com/aruba/pyedgeconnect#egg=pyedgeconnect[dev]DocsDocs are viewable onRead the DocsTo build the documentation locally, clone the repository, install with[dev]option
to include sphinx and related packages, then in the docs directory runmake htmlgitclonehttps://github.com/aruba/pyedgeconnect.gitcdedgeconnect-pythonpipinstall.[dev]cddocsmakehtmlUsageOrchestrator ClassImport the Orchestrator class to your script.frompyedgeconnectimportOrchestratorTo initialize an Orchestrator you must pass the url of the Orchestrator
(IP or FQDN).Note:If you're connecting to an Orchestrator without a valid certificate you'll want to set theverify_sslparamter toFalsewhen instantiating Orchestrator to ignore certificate warnings/errors.orch_url='10.1.1.100'orch_url='orchestrator.example.com'orch=Orchestrator(orch_url,verify_ssl=False)Now you can call the login function to connect to Orchestrator with a
username and password:orch_user='admin'orch_pw='change_me'orch.login(orch_user,orch_pw)orch.logout()Another option is to pass an API Key on init to make authenticated calls
without having to call login/logout functionsorch_url='orchestrator.example.com'orch=Orchestrator(orch_url,api_key='xxx')Edge Connect ClassfrompyedgeconnectimportEdgeConnectTo initialize an Edge Connect you must pass the url of the Edge Connect
(IP or FQDN).Note:If you're connecting to an Edge Connect without a valid certificate you'll want to set theverify_sslparamter toFalsewhen instantiating EdgeConnect to ignore certificate warnings/errors.ecos_url='10.2.30.50'ecos_url='edgeconnect.example.com'ec=EdgeConnect(ecos_url,verify_ssl=False)Now you can call the login function to connect to Edge Connect with a
username and password:ecos_user='admin'ecos_pw='admin'ec.login(ecos_user,ecos_pw)ec.logout()LoggingBy default, Orchestrator and EdgeConnect classes will not log calls
and/or errors to file or console. When instantiating Orchestrator
or EdgeConnect classes follow the below settings to enable logging
options:Logging to a local file: set thelog_fileparameter toTrue. This will create ./logging/sp_orch.log or
./logging/sp_ecos.log relative to where python is launched for calls
that are performed.Logging to the console: set thelog_consoleparameter toTrueBy default, successful API calls (e.g. returning HTTP 200/204 etc.) will
not log response text to avoid logging sensitive data. To include
response text in log messages, set thelog_successparameter toTrue.Warning:Iflog_fileandlog_successare set toTrueresponse text from successful API calls will be logged to the local log file. Some responses can include sensitive data that you may not wish to retain in the log files.orch_url='orchestrator.example.com'orch=Orchestrator(orch_url,log_file=True,log_console=True)# orecos_url='10.2.30.50'ec=EdgeConnect(ecos_url,log_success=True)Example CodeIn theExamplesdirectory you can find scripts leveraging
the Orchestrator class demonstrating some usescreate_user.pycreates a new read-only user on Orchestrator and returns the
configured detailsprint_appliance_info.pyretrieves all appliances, retrieves detailed attributes of the
appliances, and prints details in a table formatrun_packet_capture.pyruns a tcpdump packet capture on a specified appliance, once
completed, uploads to Orchestrator for user retrievalpreconfig.pyuses a CSV file as source data to generate Edge Connect YAML
preconfig from a Jinja templateThis is an alpha productThis package is still very new. This is made explicit by the "Alpha"
trove classifier, as well as by the "a" in the version number.Until
the package becomes stable, you should expect some formatting and/or
syntax to change in the future.LicenseMITContributing to pyedgeconnectAdding more modules and API functions are prioritized as needed for use.
There is not currently support for reviewing external PR's as maintenance
is best effort by the authors.Open anissueto track any/all suggestions/fixes/additions.
Please don't file an issue to ask a question.As this code is in early stages there are larger changes that may be
discussed in regards to overall structure, error handling, logging, etc.
Suggestions for these topics can be raised via issue or contacting the
authors.See contribution details atContributingRelease NotesRelease notes are located indocs/source/release-notesdirectoryhereAuthorsAuthored by Zach Camara, email atzachary.camara@hpe.com