2011/5/13 Eric Blake <eblake@xxxxxxxxxx>: > On 05/01/2011 01:57 PM, Matthias Bolte wrote: >> Instead of specifing the type of the managed object directly specify > > s/specifing/specifying/ > >> the ServiceContent member name. This way the mapping dictionary can be >> removed. >> --- >> Âsrc/esx/esx_vi_generator.input |  36 ++++++++++++++++++------------------ >> Âsrc/esx/esx_vi_generator.py  Â|  28 ++++++++++------------------ >> Â2 files changed, 28 insertions(+), 36 deletions(-) >> > > This fell apart for me; I don't know how to fix it, so from this point > on, you'll have to rebase and post v2. > > ÂCC   libvirt_driver_esx_la-esx_vi_methods.lo > In file included from esx/esx_vi_methods.c:288:0: > esx/esx_vi_methods.generated.c: In function 'esxVI_RetrieveProperties': > esx/esx_vi_methods.generated.c:520:278: error: 'esxVI_ServiceContent' > has no member named 'PropertyCollector' One line of change that should have been in this patch slipped into the next one :( Here's a v2 that fixes this. Matthias
From addffe3d3217d008f70c73972aa969f2048b1067 Mon Sep 17 00:00:00 2001 From: Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> Date: Sun, 1 May 2011 11:51:19 +0200 Subject: [PATCH] esx: Change generated method parameter autobinding Instead of specifying the type of the managed object directly specify the ServiceContent member name. This way the mapping dictionary can be removed. --- src/esx/esx_vi_generator.input | 38 +++++++++++++++++++------------------- src/esx/esx_vi_generator.py | 28 ++++++++++------------------ 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/src/esx/esx_vi_generator.input b/src/esx/esx_vi_generator.input index 4ec9f93..d987078 100644 --- a/src/esx/esx_vi_generator.input +++ b/src/esx/esx_vi_generator.input @@ -40,9 +40,9 @@ # # The _this parameter can have a type attached to it: # -# _this:<type> +# _this:<member> # -# The <type> refers to one of the ServiceContent members. This make the +# The <member> refers to one of the ServiceContent members. This make the # generator auto-bind _this to the corresponding ServiceContent member. # @@ -782,7 +782,7 @@ end method CopyVirtualDisk_Task returns ManagedObjectReference r - ManagedObjectReference _this:VirtualDiskManager r + ManagedObjectReference _this:virtualDiskManager r String sourceName r ManagedObjectReference sourceDatacenter o String destName r @@ -793,7 +793,7 @@ end method CreateFilter returns ManagedObjectReference r - ManagedObjectReference _this:PropertyCollector r + ManagedObjectReference _this:propertyCollector r PropertyFilterSpec spec r Boolean partialUpdates r end @@ -809,7 +809,7 @@ end method CreateVirtualDisk_Task returns ManagedObjectReference r - ManagedObjectReference _this:VirtualDiskManager r + ManagedObjectReference _this:virtualDiskManager r String name r ManagedObjectReference datacenter o VirtualDiskSpec spec r @@ -817,7 +817,7 @@ end method DeleteVirtualDisk_Task returns ManagedObjectReference r - ManagedObjectReference _this:VirtualDiskManager r + ManagedObjectReference _this:virtualDiskManager r String name r ManagedObjectReference datacenter o end @@ -829,7 +829,7 @@ end method FindByIp returns ManagedObjectReference o - ManagedObjectReference _this:SearchIndex r + ManagedObjectReference _this:searchIndex r ManagedObjectReference datacenter o String ip r Boolean vmSearch r @@ -837,7 +837,7 @@ end method FindByUuid returns ManagedObjectReference o - ManagedObjectReference _this:SearchIndex r + ManagedObjectReference _this:searchIndex r ManagedObjectReference datacenter o String uuid r Boolean vmSearch r @@ -845,7 +845,7 @@ end method Login returns UserSession r - ManagedObjectReference _this:SessionManager r + ManagedObjectReference _this:sessionManager r String userName r String password r String locale o @@ -853,12 +853,12 @@ end method Logout - ManagedObjectReference _this:SessionManager r + ManagedObjectReference _this:sessionManager r end method MakeDirectory - ManagedObjectReference _this:FileManager r + ManagedObjectReference _this:fileManager r String name r ManagedObjectReference datacenter o Boolean createParentDirectories o @@ -886,7 +886,7 @@ end method QueryAvailablePerfMetric returns PerfMetricId ol - ManagedObjectReference _this:PerformanceManager r + ManagedObjectReference _this:perfManager r ManagedObjectReference entity r DateTime beginTime o DateTime endTime o @@ -895,19 +895,19 @@ end method QueryPerf returns PerfEntityMetricBase ol - ManagedObjectReference _this:PerformanceManager r + ManagedObjectReference _this:perfManager r PerfQuerySpec querySpec rl end method QueryPerfCounter returns PerfCounterInfo ol - ManagedObjectReference _this:PerformanceManager r + ManagedObjectReference _this:perfManager r Int counterId rl end method QueryVirtualDiskUuid returns String r - ManagedObjectReference _this:VirtualDiskManager r + ManagedObjectReference _this:virtualDiskManager r String name r ManagedObjectReference datacenter o end @@ -952,7 +952,7 @@ end method RetrieveProperties returns ObjectContent ol - ManagedObjectReference _this:PropertyCollector r + ManagedObjectReference _this:propertyCollector r PropertyFilterSpec specSet rl end @@ -978,7 +978,7 @@ end method SessionIsActive returns Boolean r - ManagedObjectReference _this:SessionManager r + ManagedObjectReference _this:sessionManager r String sessionID r String userName r end @@ -1000,13 +1000,13 @@ end method WaitForUpdates returns UpdateSet r - ManagedObjectReference _this:PropertyCollector r + ManagedObjectReference _this:propertyCollector r String version o end method ZeroFillVirtualDisk_Task returns ManagedObjectReference r - ManagedObjectReference _this:VirtualDiskManager r + ManagedObjectReference _this:virtualDiskManager r String name r ManagedObjectReference datacenter o end diff --git a/src/esx/esx_vi_generator.py b/src/esx/esx_vi_generator.py index 753ec0b..2fca929 100755 --- a/src/esx/esx_vi_generator.py +++ b/src/esx/esx_vi_generator.py @@ -38,14 +38,7 @@ valid_occurrences = [OCCURRENCE__REQUIRED_ITEM, OCCURRENCE__OPTIONAL_LIST, OCCURRENCE__IGNORED] -autobind_map = { "FileManager" : "fileManager", - "PerformanceManager" : "perfManager", - "PropertyCollector" : "propertyCollector", - "SearchIndex" : "searchIndex", - "SessionManager" : "sessionManager", - "VirtualDiskManager" : "virtualDiskManager" } - -autobind_map_usage = set() +autobind_names = set() @@ -94,16 +87,16 @@ class Parameter(Member): Member.__init__(self, type, occurrence) if ':' in name and name.startswith("_this"): - self.name, self.autobind_type = name.split(":") + self.name, self.autobind_name = name.split(":") else: self.name = name - self.autobind_type = None + self.autobind_name = None def generate_parameter(self, is_last = False, is_header = True, offset = 0): if self.occurrence == OCCURRENCE__IGNORED: raise ValueError("invalid function parameter occurrence value '%s'" % self.occurrence) - elif self.autobind_type is not None: + elif self.autobind_name is not None: return "" else: string = " " @@ -193,7 +186,7 @@ class Method: self.returns = returns for parameter in parameters: - if parameter.autobind_type is None: + if parameter.autobind_name is None: self.parameters.append(parameter) else: self.autobind_parameter = parameter @@ -227,8 +220,8 @@ class Method: source += "ESX_VI__METHOD(%s," % self.name if self.autobind_parameter is not None: - autobind_map_usage.add(self.autobind_parameter.autobind_type) - source += " %s,\n" % autobind_map[self.autobind_parameter.autobind_type] + autobind_names.add(self.autobind_parameter.autobind_name) + source += " %s,\n" % self.autobind_parameter.autobind_name else: source += " /* explicit _this */,\n" @@ -1785,11 +1778,10 @@ for name in names: methods_header.write(methods_by_name[name].generate_header()) methods_source.write(methods_by_name[name].generate_source()) -sorted_usage = list(autobind_map_usage) -sorted_usage.sort() +names = list(autobind_names) +names.sort() -for usage in sorted_usage: - name = autobind_map[usage] +for name in names: string = aligned("#define ESX_VI__METHOD__PARAMETER__THIS__%s " % name, "\\\n", 78) string += " ESX_VI__METHOD__PARAMETER__THIS_FROM_SERVICE(ManagedObjectReference, \\\n" string += aligned("", "%s)\n\n\n\n" % name, 49) -- 1.7.0.4
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list