object_add: allow completion handler to get canonical path

Add object to /objects before calling user_creatable_complete()
handler, so that object might be able to call
object_get_canonical_path() in its completion handler.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Igor Mammedov 2014-06-02 15:24:59 +02:00 committed by Michael S. Tsirkin
parent 04ed3ea892
commit a790f4ecc9
2 changed files with 14 additions and 8 deletions

11
qmp.c
View file

@ -565,13 +565,18 @@ void object_add(const char *type, const char *id, const QDict *qdict,
}
}
user_creatable_complete(obj, &local_err);
object_property_add_child(container_get(object_get_root(), "/objects"),
id, obj, &local_err);
if (local_err) {
goto out;
}
object_property_add_child(container_get(object_get_root(), "/objects"),
id, obj, &local_err);
user_creatable_complete(obj, &local_err);
if (local_err) {
object_property_del(container_get(object_get_root(), "/objects"),
id, &error_abort);
goto out;
}
out:
if (local_err) {
error_propagate(errp, local_err);

11
vl.c
View file

@ -2935,14 +2935,15 @@ static int object_create(QemuOpts *opts, void *opaque)
goto out;
}
user_creatable_complete(obj, &local_err);
if (local_err) {
goto out;
}
object_property_add_child(container_get(object_get_root(), "/objects"),
id, obj, &local_err);
user_creatable_complete(obj, &local_err);
if (local_err) {
object_property_del(container_get(object_get_root(), "/objects"),
id, &error_abort);
goto out;
}
out:
object_unref(obj);
if (local_err) {