Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Expose unicon connection API through Genie. #198

Open
RFC2516 opened this issue Jan 23, 2023 · 3 comments
Open

[Feature Request] Expose unicon connection API through Genie. #198

RFC2516 opened this issue Jan 23, 2023 · 3 comments
Assignees

Comments

@RFC2516
Copy link

RFC2516 commented Jan 23, 2023

Feature Request

I would like to not be restricted to using a testbed file in my PyATS usage. The reason for this is because my environment is ephemeral. The connection details change from environment to environment. I personally would prefer not to create an intermediary script, and I suspect others would too, that writes the testbed script after ingesting local environment details. In my opinion a yaml testbed file is ideal for human to programmatic interaction, however a yaml testbed file is not ideal for environmental discovery and programmatic interaction. Such as workflow again in my opinion should remain in the python script. I also acknowledge the Netbox Plugin but it is simply not practical for local development environment.

Current Examples:

$ python
>>> from unicon import Connection
>>> dev = Connection(hostname='R1', start=['ssh admin@clab-bgp-R1'], credentials={'default': {'username': 'admin', 'password': 'admin'}}, os='iosxe')
>>> (omitted output for brevity)
>>> 
>>> dev. # tab tab to expose auto-complete options
Display all 101 possibilities? (y or n)
dev.acquire(                    dev.connection_type             dev.guestshell(                 dev.log                         dev.parse_spawn_command(        dev.release(                    dev.state_machine_class(
dev.add_service(                dev.context                     dev.hostname                    dev.log_buffer                  dev.patch_service_attributes(   dev.reload(                     dev.subcommand_list(
dev.alias                       dev.copy(                       dev.init_config_commands        dev.log_file(                   dev.ping(                       dev.role                        dev.switchto(
(omitted output for brevity)
>>> # This object is missing methods from the other pyATS family of libraries such as "parsed" from Genie.

vs.

$ python
>>> from genie import testbed
>>>
>>> testbed. # tab tab to expose auto-complete options
testbed.Genie(  testbed.load(
>>>
>>> tb = testbed.load('testbed.yaml')
>>>
>>> device = tb.devices['R1']
>>> device.connect()
>>> (output omitted for brevity)
>>> device. # tab tab to expose auto-complete options
Display all 159 possibilities? (y or n)
device.CFG_TOPOLOGY_CLASS                device.custom                            device.init_state_machine(               device.obj_state                         device.roles
device.ENTRY_POINT_NAME                  device.custom_config_cli                 device.instantiate(                      device.origin                            device.rommon(
device.acquire(                          device.custom_unconfig_cli               device.instantiate_pool(                 device.os                                device.send(
device.add_feature(                      device.debug                             device.interfaces                        device.os_flavor                         device.sendline(
(output omitted for brevity)

Story

A Network Engineer is working on a proposed change to the infrastructure. They create a repository on their local, initialize git, use ansible for their configuration management, they also create a virtualization environment / orchestration tool definition yaml file, and now they need to write unit tests to prove their change is acceptable as well as providing the same test files that will move into production to allow for continuous testing of the new feature.

These inventory files, testbeds and etc. must survive being deployed into different environments.

Proposed experience of exposed unicon connection API

$ python
>>> from genie import testbed
>>>
>>> testbed. # tab tab to expose auto-complete options
testbed.Genie(  testbed.load( testbed.unicon(
>>>
>>> tb = testbed.unicon(hostname='R1', start=['ssh admin@clab-bgp-R1'], credentials={'default': {'username': 'admin', 'password': 'admin'}}, os='iosxe')
>>> r1 = tb.devices['R1']
>>> r1.connect()
>>> r1.parsed('show ip int bri')
@sudheergovindu
Copy link

Hi , I am looking at your ticket and reviewing it, Please let me know are you facing the issue still or not ?

@RFC2516
Copy link
Author

RFC2516 commented Apr 6, 2023

Yes,

Less of an issue and more of a request for a new feature 😊

I did import the latest pyats[full] package and confirmed the feature is not there.

@sudheergovindu
Copy link

As we currently not supporting, we will add to backlog for support as per priority of customer need to resolve the issue you are facing in future. If you need further assistance, please let me know and I'll do my best to provide additional guidance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants