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

op-mode: T5633, T6465: fix error when op cmd interrupted, updates some system call syntax (backport #3731) #3734

Merged
merged 1 commit into from
Jun 28, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions src/op_mode/show_techsupport_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

import os
import sys
from typing import List
from vyos.utils.process import rc_cmd
from vyos.ifconfig import Section
from vyos.ifconfig import Interface
from vyos.utils.process import rc_cmd


def print_header(command: str) -> None:
Expand Down Expand Up @@ -50,7 +52,15 @@ def execute_command(command: str, header_text: str) -> None:
print_header(header_text)
try:
rc, output = rc_cmd(command)
print(output)
# Enable unbuffered print param to improve responsiveness of printed
# output to end user
print(output, flush=True)
# Exit gracefully when user interrupts program output
# Flush standard streams; redirect remaining output to devnull
# Resolves T5633: Bug #1 and 3
except (BrokenPipeError, KeyboardInterrupt):
os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stdout.fileno())
sys.exit(1)
except Exception as e:
print(f"Error executing command: {command}")
print(f"Error message: {e}")
Expand Down Expand Up @@ -155,13 +165,13 @@ def show_route() -> None:
"show ip route supernets-only",
"show ip route table all",
"show ip route vrf all",
"show ipv6 route bgp | head 108",
"show ipv6 route bgp | head -108",
"show ipv6 route cache",
"show ipv6 route connected",
"show ipv6 route forward",
"show ipv6 route isis",
"show ipv6 route kernel",
"show ipv6 route ospf",
"show ipv6 route ospfv3",
"show ipv6 route rip",
"show ipv6 route static",
"show ipv6 route summary",
Expand All @@ -179,8 +189,9 @@ def show_firewall() -> None:

def show_system() -> None:
"""Prints system parameters."""
execute_command(op('show system image version'), 'Show System Image Version')
execute_command(op('show system image storage'), 'Show System Image Storage')
execute_command(op('show version'), 'Show System Version')
execute_command(op('show system storage'), 'Show System Storage')
execute_command(op('show system image details'), 'Show System Image Details')


def show_date() -> None:
Expand Down
Loading