parent
edbe29d06a
commit
9e7d86d5cf
|
@ -311,7 +311,7 @@ def vm_locks(config, vm):
|
||||||
|
|
||||||
def view_console_log(config, vm, lines=100):
|
def view_console_log(config, vm, lines=100):
|
||||||
"""
|
"""
|
||||||
Return console log lines from the API and display them in a pager
|
Return console log lines from the API (and display them in a pager in the main CLI)
|
||||||
|
|
||||||
API endpoint: GET /vm/{vm}/console
|
API endpoint: GET /vm/{vm}/console
|
||||||
API arguments: lines={lines}
|
API arguments: lines={lines}
|
||||||
|
@ -334,17 +334,7 @@ def view_console_log(config, vm, lines=100):
|
||||||
shrunk_log = console_log.split('\n')[-lines:]
|
shrunk_log = console_log.split('\n')[-lines:]
|
||||||
loglines = '\n'.join(shrunk_log)
|
loglines = '\n'.join(shrunk_log)
|
||||||
|
|
||||||
# Show it in the pager (less)
|
return True, loglines
|
||||||
try:
|
|
||||||
pager = subprocess.Popen(['less', '-R'], stdin=subprocess.PIPE)
|
|
||||||
pager.communicate(input=loglines.encode('utf8'))
|
|
||||||
except FileNotFoundError:
|
|
||||||
ainformation = list()
|
|
||||||
ainformation.append("Error: `less` pager not found, dumping log ({} lines) to stdout".format(lines))
|
|
||||||
ainformation.append(loglines)
|
|
||||||
return False, '\n'.join(ainformation)
|
|
||||||
|
|
||||||
return True, ''
|
|
||||||
|
|
||||||
def follow_console_log(config, vm, lines=10):
|
def follow_console_log(config, vm, lines=10):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -779,7 +779,7 @@ def vm_flush_locks(domain):
|
||||||
'domain'
|
'domain'
|
||||||
)
|
)
|
||||||
@click.option(
|
@click.option(
|
||||||
'-l', '--lines', 'lines', default=100, show_default=True,
|
'-l', '--lines', 'lines', default=1000, show_default=True,
|
||||||
help='Display this many log lines from the end of the log buffer.'
|
help='Display this many log lines from the end of the log buffer.'
|
||||||
)
|
)
|
||||||
@click.option(
|
@click.option(
|
||||||
|
@ -788,13 +788,15 @@ def vm_flush_locks(domain):
|
||||||
)
|
)
|
||||||
def vm_log(domain, lines, follow):
|
def vm_log(domain, lines, follow):
|
||||||
"""
|
"""
|
||||||
Show console logs of virtual machine DOMAIN on its current node in the 'less' pager or continuously. DOMAIN may be a UUID or name. Note that migrating a VM to a different node will cause the log buffer to be overwritten by entries from the new node.
|
Show console logs of virtual machine DOMAIN on its current node in a pager or continuously. DOMAIN may be a UUID or name. Note that migrating a VM to a different node will cause the log buffer to be overwritten by entries from the new node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if follow:
|
if follow:
|
||||||
retcode, retmsg = pvc_vm.follow_console_log(config, domain, lines)
|
retcode, retmsg = pvc_vm.follow_console_log(config, domain, lines)
|
||||||
else:
|
else:
|
||||||
retcode, retmsg = pvc_vm.view_console_log(config, domain, lines)
|
retcode, retmsg = pvc_vm.view_console_log(config, domain, lines)
|
||||||
|
click.echo_via_pager(retmsg)
|
||||||
|
retmsg = ''
|
||||||
cleanup(retcode, retmsg)
|
cleanup(retcode, retmsg)
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
Loading…
Reference in New Issue