| Server IP : 74.208.250.37 / Your IP : 216.73.216.114 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ubuntu 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64 User : miferval ( 1000) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/uaclient/cli/ |
Upload File : |
import logging
import os
import sys
import tarfile
import tempfile
from uaclient import messages
from uaclient.actions import collect_logs
from uaclient.cli.commands import ProArgument, ProArgumentGroup, ProCommand
from uaclient.cli.parser import HelpCategory
from uaclient.util import replace_top_level_logger_name
PRO_COLLECT_LOGS_FILE = "pro_logs.tar.gz"
LOG = logging.getLogger(replace_top_level_logger_name(__name__))
def action_collect_logs(args, *, cfg, **kwargs):
output_file = args.output or PRO_COLLECT_LOGS_FILE
with tempfile.TemporaryDirectory() as output_dir:
collect_logs(cfg, output_dir)
try:
old_umask = os.umask(0o177)
try:
with tarfile.open(output_file, "x:gz") as results:
results.add(output_dir, arcname="logs/")
finally:
os.umask(old_umask)
except PermissionError as e:
LOG.error(e)
return 1
except FileExistsError as e:
LOG.error(e)
print(
messages.E_FILE_ALREADY_EXISTS.format(
filename=output_file,
),
file=sys.stderr,
)
return 1
return 0
collect_logs_command = ProCommand(
"collect-logs",
help=messages.CLI_ROOT_COLLECT_LOGS,
description=messages.CLI_COLLECT_LOGS_DESC,
preserve_description=True,
action=action_collect_logs,
help_category=HelpCategory.TROUBLESHOOT,
argument_groups=[
ProArgumentGroup(
arguments=[
ProArgument(
"--output",
short_name="-o",
help=messages.CLI_COLLECT_LOGS_OUTPUT,
)
]
)
],
)