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

Added 'config core' and 'show cores' CLI commands #1278

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
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
30 changes: 30 additions & 0 deletions config/coredump.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import os
import click
import utilities_common.cli as clicommon
from swsssdk import ConfigDBConnector

@click.group(cls=clicommon.AbbreviationGroup, name="coredump")
def coredump():
""" Configure coredump """
if os.geteuid() != 0:
exit("Root privileges are required for this operation")

@coredump.command()
@click.argument('disable', required=False)
def disable(disable):
"""Administratively Disable coredump generation"""
config_db = ConfigDBConnector()
config_db.connect()
table = "COREDUMP"
key = "config"
config_db.set_entry(table, key, {"enabled": "false"})

@coredump.command()
@click.argument('enable', required=False)
def enable(enable):
"""Administratively Enable coredump generation"""
config_db = ConfigDBConnector()
config_db.connect()
table = "COREDUMP"
key = "config"
config_db.set_entry(table, key, {"enabled": "true"})
2 changes: 2 additions & 0 deletions config/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
from . import aaa
from . import chassis_modules
from . import console
from . import coredump
from . import feature
from . import kube
from . import mlnx
Expand Down Expand Up @@ -877,6 +878,7 @@ def config(ctx):
config.add_command(aaa.tacacs)
config.add_command(chassis_modules.chassis_modules)
config.add_command(console.console)
config.add_command(coredump.coredump)
config.add_command(feature.feature)
config.add_command(kube.kubernetes)
config.add_command(muxcable.muxcable)
Expand Down
75 changes: 75 additions & 0 deletions show/coredump.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import os
import click
import utilities_common.cli as clicommon
from swsssdk import ConfigDBConnector

#
# 'coredumpctl' group ("show coredump")
#

@click.group(cls=clicommon.AliasedGroup, name="coredump")
def coredump():
"""Show core dump events encountered"""
pass

# 'config' subcommand ("show coredump config")
@coredump.command('config')
@click.option('--verbose', is_flag=True, help="Enable verbose output")
def core_config(verbose):
""" Show coredump configuration """
# Default admin mode
admin_mode = True
# Obtain config from Config DB
config_db = ConfigDBConnector()
if config_db is not None:
config_db.connect()
table_data = config_db.get_table('COREDUMP')
if table_data is not None:
config_data = table_data.get('config')
if config_data is not None:
admin_mode = config_data.get('enabled')
if admin_mode is not None and admin_mode.lower() == 'false':
admin_mode = False

# Core dump administrative mode
if admin_mode:
click.echo('Coredump : %s' % 'Enabled')
else:
click.echo('Coredump : %s' % 'Disabled')

# 'list' subcommand ("show coredump list")
@coredump.command('list')
@click.argument('pattern', required=False)
@click.option('--verbose', is_flag=True, help="Enable verbose output")
def core_list(verbose, pattern):
""" List available coredumps """

if not os.geteuid()==0:
click.echo("Note: To list all the core files please run the command with root privileges\n")

if os.path.exists("/usr/bin/coredumpctl"):
cmd = "coredumpctl list"
if pattern is not None:
cmd = cmd + " " + pattern
clicommon.run_command(cmd, display_cmd=verbose)
else:
exit("Note: Install systemd-coredump package to run this command")

# 'info' subcommand ("show coredump info")
@coredump.command('info')
@click.argument('pattern', required=False)
@click.option('--verbose', is_flag=True, help="Enable verbose output")
def core_info(verbose, pattern):
""" Show information about one or more coredumps """

if not os.geteuid()==0:
click.echo("Note: To view all the core files please run the command with root privileges\n")

if os.path.exists("/usr/bin/coredumpctl"):
cmd = "coredumpctl info"
if pattern is not None:
cmd = cmd + " " + pattern
clicommon.run_command(cmd, display_cmd=verbose)
else:
exit("Note: Install systemd-coredump package to run this command")

3 changes: 3 additions & 0 deletions show/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

from . import bgp_common
from . import chassis_modules
from . import coredump
from . import feature
from . import fgnhg
from . import interfaces
Expand Down Expand Up @@ -129,6 +130,7 @@ def cli(ctx):

# Add groups from other modules
cli.add_command(chassis_modules.chassis_modules)
cli.add_command(coredump.coredump)
cli.add_command(feature.feature)
cli.add_command(fgnhg.fgnhg)
cli.add_command(interfaces.interfaces)
Expand Down Expand Up @@ -1423,6 +1425,7 @@ def system_memory(verbose):
cmd = "free -m"
run_command(cmd, display_cmd=verbose)


#
# 'kdump command ("show kdump ...")
#
Expand Down