summaryrefslogtreecommitdiff
path: root/virt-manager
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2015-11-24 15:21:26 -0500
committerCole Robinson <crobinso@redhat.com>2015-11-24 16:30:18 -0500
commita9bc56add35e94854b0209144c1d83d524e1ddb4 (patch)
treecf22cd01d145bf55e085e98635267f1b33057df1 /virt-manager
parentf801a7e4ec55dea63d2ad56b37c6b7dff4ee1259 (diff)
downloadvirt-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-xvirt-manager71
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__":