cancel
Showing results forĀ 
Search instead forĀ 
Did you mean:Ā 

What are my options for EXOS Network Management Automation

What are my options for EXOS Network Management Automation

Tim_Black
New Contributor II
Hello, my team has developed an automated system for testing my company's networked products. I am in the process of integrating this system with EXOS switches, so that our tests will be able to track which switch ports are connected to which Devices Under Test (DUTs), and provide an API (in python) to facilitate making runtime configuration changes to the switches and their individual ports. We are planning to use the Management port of all switches to provide a dedicated backdoor in case a test makes an error in the switch configuration.

Before I just go off and implement a solution based on the EXOS telnet command interface, I am looking to the community for advice on whether this is the "best" switch interface to use for this purpose, what the alternatives and pros and cons of each are.

I am only aware of the SNMP alternative. I have not considered it very seriously yet because we are using these switches for, among other things, AVB media transport and monitoring, and the last I checked, the MIB does not yet support AVB-related interfaces, e.g. MSRP/MVRP and stream status.

Thanks for your consideration,
Tim
14 REPLIES 14

To reset the switch to a base configuration, you can use the combination of "unconfigure switch all" (results in a reboot into an empty configuration) and a file named "default.xsf" (will be executed if a switch starts without config) that adds management port configuration and user credentials.

Tim_Black
New Contributor II
Thanks Stephane. So it sounds like I made a good decision to use JSONRPC for my automation-centric needs. So far it's working great, but in the extreme switch python package that I've provided for my team, I've so far only implemented control for "enable/disable port" and "enable/disable inline-power ports" so far. We will eventually also be needing to create vlans, and read statistics from the switch, but with the jsonrpc, it looks elegant and simple.

I'm curious about your internal work (the demo-tool you mention) to generalize the pushing configuration to switches via jsonrpc interface. How doess your demo tool model configuration changes? Are they represented by just a sequence of CLI commands?

Right now, we are only toggling ports from our test automation, however we will shortly be needing to implement more complicated dynamic configuration changes, which will happen during the setup phase of a particular test suite. Is it appropriate in this case to model these as a simple sequence of CLI commands that get executed? Is there a "reset switch" command that you would you recommend we prepend to the command sequence to ensure the same starting point each time?

We are using the OOB Mgmt port, BTW, to ensure we maintain connectivity during these operations.

In a "DevOps" mindset approach, restconf and jsonrpc are interesting, and jsonrpc is currently a more complete approach as you have all CLI accessible, by definition (as you send CLI commands). You have the json output of the CLI commands. Internally, I had made a demo-tool with a web front-end that allows to program groups of switches using Python from a linux host (OoB mgmt network preferred). Very easy and fast to do. Did it in Python, and if you are an experienced programmer with a large scale network, golang would be a better choice.

As for XMC, yes this is Extreme Management Center. With recent releases (8.1+) you have Python scripting integrated. That's nice if you have older switches that cannot upgrade to 21.1+ (for jsonrpc) or some other vendor switches. XMC would manage for you access to the devices, just handle in your code the type of platform (XMC provides variable for that too). With the coming 8.2 version, Workflows will be also provided in XMC. So you'll be able to have several scripts running with conditional gateways, alarm trigerring, etc.

Tim_Black
New Contributor II
I ended up just copying the jsonrpc.py file from EXOS_Apps for now to our internal repo, since that was all that was required. It works great! We'll look into using the entire repos when our needs get more complicated. Thanks.

Tim_Black
New Contributor II
Thanks James. From [filter_by]=all&topic-reply-list[settings][reply_id]=19790751#reply_19790751]this [filter_by]=all&topic-reply-list[settings][reply_id]=19790751#reply_19790751]thread, I learned about EXOS' jsonrpc and restapi support, as well as the proper link to the python getting started guide.and the EXOS API Documentation Root which you also found.

The latter link (like your https://api.extremenetworks.com link) pretty much summarizes what I'm looking for: the currently available options for remote, programmatic control and management of EXOS switches. XMC is not there but that's appropriate since it's not really intended for remote applications integrating with switches. (And if it were intended for this, I can't imagine a scenario in which someone would choose to use XMC over one of the supported APIs.)

I will follow up soon on that thread you linked to to see if any of the APIs have added support for introspecting AVB, MSRP, SVRP, GPTP info in the last 3 years. As you saw in your search, I'm not finding anything specific about these interfaces, and I think the expectation is that, e.g. using JSONRPC, you're supposed to just use jsonrpc.cli() to invoke the remote "show msrp streams" command and then your remote app gets the response back as a nice tidy json structure.

Cheers, and thanks!
GTM-P2G8KFN