Am 10.12.25 um 11:10 AM schrieb Fiona Ebner:
> diff --git a/src/PVE/QemuServer/DBusVMState.pm
> b/src/PVE/QemuServer/DBusVMState.pm
> index a72d6dd2..823a75ba 100644
> --- a/src/PVE/QemuServer/DBusVMState.pm
> +++ b/src/PVE/QemuServer/DBusVMState.pm
> @@ -114,9 +114,12 @@ sub qemu_del_dbus_vmstate {
> $num_entries = eval {
> dbus_get_property($object, 'com.proxmox.VMStateHelper',
> 'NumMigratedEntries');
> };
> - eval { $object->Quit() };
> + # NOTE: for some reason, $object->Quit() does not resolve to the
> correct handler even
> + # though we matched the 'Id' property. As a stop-gap until this
> is figured out, do it
> + # via systemctl.
> + eval { PVE::Tools::run_command(['systemctl', 'stop',
> "pve-dbus-vmstate\@$vmid"]) };
> if (my $err = $@) {
> - syslog('warn', "failed to call quit on dbus-vmstate for VM
> $vmid: $err\n")
> + syslog('warn', "failed to stop pve-dbus-vmstate service for
> VM $vmid: $err\n")
> if !$params{quiet};
> }
>
Hmm, maybe this is by design. We already have a helper for accessing the
properties, probably we need something similar for calling methods:
> # Retrieves a property from an object from a specific interface name.
> # In contrast to accessing the property directly by using $obj->Property, this
> # actually respects the owner of the object and thus can be used for
> interfaces
> # with might have multiple (queued) owners on the DBus.
> my sub dbus_get_property {
> my ($obj, $interface, $name) = @_;
>
> my $con = $obj->{service}->get_bus()->get_connection();
>
> my $call = $con->make_method_call_message(
> $obj->{service}->get_service_name(),
> $obj->{object_path},
> 'org.freedesktop.DBus.Properties',
> 'Get',
> );
>
> $call->set_destination($obj->get_service()->get_owner_name());
> $call->append_args_list($interface, $name);
>
> my @reply = $con->send_with_reply_and_block($call, 10 *
> 1000)->get_args_list();
> return $reply[0];
> }
_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel