diff options
author | Cole Robinson <crobinso@redhat.com> | 2015-11-24 15:21:26 -0500 |
---|---|---|
committer | Cole Robinson <crobinso@redhat.com> | 2015-11-24 16:30:18 -0500 |
commit | a9bc56add35e94854b0209144c1d83d524e1ddb4 (patch) | |
tree | cf22cd01d145bf55e085e98635267f1b33057df1 /virt-manager | |
parent | f801a7e4ec55dea63d2ad56b37c6b7dff4ee1259 (diff) | |
download | virt-manager-a9bc56add35e94854b0209144c1d83d524e1ddb4.tar.gz |
virt-manager: revive cli dbus API (bz 1162815)
This allows virt-manager command line that launch windows to work for an
existing virt-manager instance. This is handy for scripting, and giving
other apps a reasonable way to launch a virt-manager VM window for
example.
Diffstat (limited to 'virt-manager')
-rwxr-xr-x | virt-manager | 71 |
1 files changed, 18 insertions, 53 deletions
diff --git a/virt-manager b/virt-manager index b27248c0..63f867c8 100755 --- a/virt-manager +++ b/virt-manager @@ -91,7 +91,7 @@ def parse_commandline(): epilog=epilog) parser.add_argument('--version', action='version', version=CLIConfig.version) - parser.set_defaults(uuid=None) + parser.set_defaults(domain=None) # Trace every libvirt API call to debug output parser.add_argument("--trace-libvirt", dest="tracelibvirt", @@ -116,7 +116,7 @@ def parse_commandline(): parser.add_argument("--no-fork", action="store_true", dest="nofork", help="Don't fork into background on startup") parser.add_argument("--no-conn-autostart", action="store_true", - dest="no_conn_auto", help="Do not autostart connections") + dest="skip_autostart", help="Do not autostart connections") parser.add_argument("--spice-disable-auto-usbredir", action="store_true", dest="usbredir", help="Disable Auto USB redirection support") @@ -134,23 +134,6 @@ def parse_commandline(): return parser.parse_known_args() -def launch_specific_window(engine, show, uri, clistr): - if not show: - return - - logging.debug("Launching requested window '%s'", show) - if show == 'creator': - engine.show_domain_creator(uri) - elif show == 'editor': - engine.show_domain_editor(uri, clistr) - elif show == 'performance': - engine.show_domain_performance(uri, clistr) - elif show == 'console': - engine.show_domain_console(uri, clistr) - elif show == 'summary': - engine.show_host_summary(uri) - - def main(): (options, leftovers) = parse_commandline() @@ -246,52 +229,34 @@ def main(): import virtinst.pollhelpers virtinst.pollhelpers.FORCE_OLD_POLL = bool(options.testoldpoll) - show = None + show_window = None + domain = None if options.show_domain_creator: - show = "creator" + show_window = vmmEngine.CLI_SHOW_DOMAIN_CREATOR + elif options.show_host_summary: + show_window = vmmEngine.CLI_SHOW_HOST_SUMMARY elif options.show_domain_editor: - show = "editor" + show_window = vmmEngine.CLI_SHOW_DOMAIN_EDITOR + domain = options.show_domain_editor elif options.show_domain_performance: - show = "performance" + show_window = vmmEngine.CLI_SHOW_DOMAIN_PERFORMANCE + domain = options.show_domain_performance elif options.show_domain_console: - show = "console" - elif options.show_host_summary: - show = "summary" + show_window = vmmEngine.CLI_SHOW_DOMAIN_CONSOLE + domain = options.show_domain_console - if show and options.uri is None: + if show_window and options.uri is None: raise RuntimeError("can't use --show-* options without --connect") - if show: - options.uuid = (options.uuid or options.show_domain_creator or - options.show_domain_editor or - options.show_domain_performance or - options.show_domain_console or - options.show_host_summary) # Hook libvirt events into glib main loop LibvirtGLib.init(None) LibvirtGLib.event_register() - engine = vmmEngine() - engine.skip_autostart = options.no_conn_auto - engine.uri_at_startup = options.uri - - if show: - def cb(conn): - if conn.is_disconnected(): - # Connection error - return True - - if conn.is_active(): - launch_specific_window(engine, show, options.uri, options.uuid) - return True - - return False - engine.uri_cb = cb - engine.show_manager_window = False - engine.skip_autostart = True + from virtManager.dbusapi import StartupAPI + api = StartupAPI() - # Finally start the app for real - engine.application.run(None) + api.run_cli_command(options.uri, show_window, domain) + api.start(options.skip_autostart) if __name__ == "__main__": |