[libvirt] [PATCH 2/6] Make naming of remote procedures match API names exactly
Eric Blake
eblake at redhat.com
Tue Apr 23 19:28:07 UTC 2013
On 04/23/2013 04:26 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at 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 at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130423/19b88c92/attachment-0001.sig>
More information about the libvir-list
mailing list