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

enhance Klish parser with improved usability and python3 support #76

Merged
merged 4 commits into from
Jan 4, 2021

Conversation

kwangsuk
Copy link
Contributor

@kwangsuk kwangsuk commented Dec 7, 2020

Klish enhancements for sonic-mgmt-framework to improve usability and python3.7 support in Buster

  1. Add two built-in methods for performance enhancement as part of mgmt-framework CLI enhancement:

CLI built-in functions "clish_pyobj" and "clish_restcl" can be use to reduce time taken to execute a command by eliminating the sub-shell interpreter overhead.

The “clish_restcl” method uses libcurl to make REST client call from actioner. The GET operation is not supported as we currently don't handle rendering using jinja templates.
e.g.
oper=PATCH url=/restconf/data/openconfig-interfaces:interfaces/interface=Vlan${vlan-id}/config body={"openconfig-interfaces:config": {"name": "Vlan${vlan-id}"}}

The “clish_pyobj” uses embedding Python to execute the Python scripts to make REST client call via Request package.
e.g.
sonic_cli_if patch_openconfig_interfaces_interfaces_interface_config Vlan${vlan-id}

  1. New PTYPE attribute support - ext_pattern and ext_help with regexp_select method
    Similar to the pattern attribute with select method in Opensource Klish, the ext_pattern with regexp_select can be used for auto completion.
    e.g.
<PTYPE
name="PHY_INTERFACE"
method="regexp_select"
ext_pattern="Ethernet(port)"
pattern="&ETH_ALL_INTF;"
help="" />

An interface name can be specified as “interface Ethernet 1” or “interface Eth1”.

sonic-cli(config)# interface Eth1
sonic-cli(conf-if-Ethernet1)#

Another usacase is that, if multiple options in the same PTYPE are defined to support all possible interface options, the ext_help can be used along with ext_help attributes to provide multiple help string for corresponding options.
e.g.

<PTYPE
name="ALL_INTERFACE"
method="regexp_select"
ext_pattern="Ethernet(Port) PortChannel(1-128) Vlan(1-4093) Loopback(0..16383)"
ext_help="(Ethernet interface type) (PortChannel interface type) (Vlan interface type) (Loopback interface type)"
pattern="&ETH_ALL_INTF;|&VLAN_ALL_INTF;|&PO_ALL_INTF;|&LOOPB_INTF;"
help="Interface Type - Ranges"
/>
  1. idle session timeout - CLI session timeout set to 10 minute (600s) to close the session once expired
  2. Interrupt handler to abort the execution of current command
  3. Allow param value with special characters, e.g. “#?\sonic&”
  4. Quoted sting support , e.g. sonic-cli(conf-if-Ethernet1)# description “Azure leaf-Updating the rules file permissions that appears to be stripped #1 NY-datacenter”
  5. hidden command support in klish parser
  6. Patching hook log syslog message to audit command execution through CLI
  7. Add Pylint support
  8. Fix pipe command
  9. Miscellaneous bug fixes - subcommands or param while pressing tab etc.

@faraazbrcm faraazbrcm mentioned this pull request Dec 31, 2020
@renukamanavalan renukamanavalan merged commit 5730d3c into sonic-net:master Jan 4, 2021
renukamanavalan pushed a commit to sonic-net/sonic-buildimage that referenced this pull request Jun 3, 2021
…c-cli cmd (#6148)

- Why I did it

migrate to python3 support
add dependent packages for Klish
allow login as non-root user
- How I did it
update sonic-cli script to start Klish with user name, system name and timeout
update the Dockerfile.j2 to resolve dependent packages
add python3-dev for Klish use

- How to verify it
Incremental buster build with sonic-net/sonic-mgmt-framework#76 and verify the sonic-cli

- Description for the changelog
Migrate to python3.7 support, update sonic-cli script and resolve package dependencies
carl-nokia pushed a commit to carl-nokia/sonic-buildimage that referenced this pull request Aug 7, 2021
…c-cli cmd (sonic-net#6148)

- Why I did it

migrate to python3 support
add dependent packages for Klish
allow login as non-root user
- How I did it
update sonic-cli script to start Klish with user name, system name and timeout
update the Dockerfile.j2 to resolve dependent packages
add python3-dev for Klish use

- How to verify it
Incremental buster build with sonic-net/sonic-mgmt-framework#76 and verify the sonic-cli

- Description for the changelog
Migrate to python3.7 support, update sonic-cli script and resolve package dependencies
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

Successfully merging this pull request may close these issues.

2 participants