On 04/23/2013 04:26 AM, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange(a)redhat.com>
A number of the remote procedure names did not match the
corresponding API names. For example, many lacked the
word 'CONNECT', others re-arranged the names. Update the
procedures so their names exactly match the API names.
Then remove the special case handling of these APIs in
the generator
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
daemon/remote.c | 83 ++++++++---------
src/qemu_protocol-structs | 6 +-
src/remote/qemu_protocol.x | 6 +-
src/remote/remote_driver.c | 216 +++++++++++++++++++++----------------------
src/remote/remote_protocol.x | 198 +++++++++++++++++++--------------------
src/remote_protocol-structs | 198 +++++++++++++++++++--------------------
src/rpc/gendispatch.pl | 31 ++-----
7 files changed, 363 insertions(+), 375 deletions(-)
Seems big but mostly mechanical. Best of all, the compiler checks it.
ACK.
+++ b/src/qemu_protocol-structs
Any lines removed from one of the *-structs file warrants extra
scrutiny, to make sure we aren't breaking on-the-wire ABI...
@@ -4,12 +4,12 @@ struct remote_nonnull_domain {
remote_uuid uuid;
int id;
};
-struct qemu_monitor_command_args {
+struct qemu_domain_monitor_command_args {
enum qemu_procedure {
- QEMU_PROC_MONITOR_COMMAND = 1,
+ QEMU_PROC_DOMAIN_MONITOR_COMMAND = 1,
...but in both of these cases, names are not part of the stable ABI, the
struct did not change size, and the semantics of the enum value 1 are
identical, so these changes are fine.
+++ b/src/rpc/gendispatch.pl
The meat of the change:
@@ -293,8 +293,8 @@ my $long_legacy = {
DomainSetMaxMemory => { arg => { memory => 1 } },
DomainSetMemory => { arg => { memory => 1 } },
DomainSetMemoryFlags => { arg => { memory => 1 } },
- GetLibVersion => { ret => { lib_ver => 1 } },
- GetVersion => { ret => { hv_ver => 1 } },
+ ConnectGetLibVersion => { ret => { lib_ver => 1 } },
+ ConnectGetVersion => { ret => { hv_ver => 1 } },
NodeGetInfo => { ret => { memory => 1 } },
DomainBlockCommit => { arg => { bandwidth => 1 } },
DomainBlockPull => { arg => { bandwidth => 1 } },
@@ -606,7 +606,7 @@ elsif ($mode eq "server") {
# error out on unannotated arrays
die "remote_nonnull_string array without insert@<offset>
annotation: $ret_member";
} elsif ($ret_member =~ m/^remote_nonnull_string (\S+);/) {
- if ($call->{ProcName} eq "GetType") {
+ if ($call->{ProcName} eq "ConnectGetType") {
# SPECIAL: virConnectGetType returns a constant string that
must
# not be freed. Therefore, duplicate the string here.
push(@vars_list, "const char *$1");
@@ -893,28 +893,14 @@ elsif ($mode eq "server") {
if (! @args_list) {
push(@args_list, "priv->conn");
-
- if ($call->{ProcName} ne "NodeGetFreeMemory") {
- $prefix = "Connect"
- }
}
- if ($call->{ProcName} eq "GetSysinfo" or
- $call->{ProcName} eq "GetMaxVcpus" or
- $call->{ProcName} eq "DomainXMLFromNative" or
- $call->{ProcName} eq "DomainXMLToNative" or
- $call->{ProcName} eq "FindStoragePoolSources" or
- $call->{ProcName} =~ m/^List/) {
- $prefix = "Connect"
- } elsif ($call->{ProcName} eq "SupportsFeature") {
- $prefix = "Drv"
- } elsif ($call->{ProcName} eq "CPUBaseline") {
- $proc_name = "ConnectBaselineCPU"
- } elsif ($call->{ProcName} eq "CPUCompare") {
- $proc_name = "ConnectCompareCPU"
- } elsif ($structprefix eq "qemu" && $call->{ProcName}
=~ /^Domain/) {
+ if ($structprefix eq "qemu" && $call->{ProcName} =~
/^Domain/) {
$proc_name =~ s/^(Domain)/${1}Qemu/;
}
+ if ($structprefix eq "lxc" && $call->{ProcName} =~
/^Domain/) {
+ $proc_name =~ s/^(Domain)/${1}Lxc/;
+ }
Yep, lots nicer with fewer special cases.
if ($single_ret_as_list) {
print " /* Allocate return buffer. */\n";
@@ -1538,6 +1524,9 @@ elsif ($mode eq "client") {
if ($structprefix eq "qemu") {
$callflags = "REMOTE_CALL_QEMU";
}
+ if ($structprefix eq "lxc") {
+ $callflags = "REMOTE_CALL_LXC";
+ }
print "\n";
print " if (call($priv_src, priv, $callflags,
$call->{constname},\n";
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org