On 08/09/2016 08:39 AM, Jason Miesionczek wrote: > --- > src/hyperv/hyperv_wmi_generator.py | 57 ++++++++++++++++++++++++++++++++++++-- > 1 file changed, 54 insertions(+), 3 deletions(-) > Not that familiar with the needs here. I assume it's fine, but your commit message should describe what's going on. As in what these changes do. John > diff --git a/src/hyperv/hyperv_wmi_generator.py b/src/hyperv/hyperv_wmi_generator.py > index f767d54..8384634 100755 > --- a/src/hyperv/hyperv_wmi_generator.py > +++ b/src/hyperv/hyperv_wmi_generator.py > @@ -68,7 +68,7 @@ class Class: > header += "\n" > header += "#define %s_RESOURCE_URI \\\n" % name_upper > > - if self.name.startswith("Win32_"): > + if self.name.startswith("Win32_") or self.name.startswith("CIM_DataFile"): > header += " \"http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/%s\"\n" % self.name > else: > header += " \"http://schemas.microsoft.com/wbem/wsman/1/wmi/root/virtualization/%s\"\n" % self.name > @@ -100,6 +100,25 @@ class Class: > > return header > > + def generate_cimtypes_header2(self): > + header = separator > + header += " * %s\n" % self.name > + header += " */\n" > + header += "\n" > + header += "CimTypes cimTypes_%s[] = {\n" % self.name > + for property in self.properties: > + header += property.generate_cimtypes_header2() > + header += ",\n" > + header += "\t{ \"\", \"\", 0 },\n};\n\n" > + > + return header > + > + def generate_cimtypes_header3(self): > + header = " { \"%s" % self.name > + header += "\", cimTypes_%s" % self.name > + header += " },\n" > + > + return header > > def generate_source(self): > name_upper = self.name.upper() > @@ -113,7 +132,7 @@ class Class: > % (self.name.replace("_", ""), self.name) > source += "{\n" > > - if self.name.startswith("Win32_"): > + if self.name.startswith("Win32_") or self.name.startswith("CIM_DataFile"): > source += " return hypervEnumAndPull(priv, query, ROOT_CIMV2,\n" > else: > source += " return hypervEnumAndPull(priv, query, ROOT_VIRTUALIZATION,\n" > @@ -189,6 +208,16 @@ class Property: > return " SER_NS_%s(%s_RESOURCE_URI, \"%s\", 1),\n" \ > % (Property.typemap[self.type], class_name.upper(), self.name) > > + def generate_cimtypes_header2(self): > + header = " { \"%s" % self.name > + header += "\", \"%s\", " % self.type > + if self.is_array: > + header += "true" > + else: > + header += "false" > + header += " }" > + return header > + > > > def open_and_print(filename): > @@ -238,7 +267,20 @@ def parse_class(block): > > return Class(name=name, properties=properties) > > - > +def generate_cimtypes_header1(): > + header = "struct cimTypes{\n" > + header += " const char *name;\n" > + header += " const char *type;\n" > + header += " bool isArray;\n" > + header += "};\n" > + header += "typedef struct cimTypes CimTypes;\n\n" > + header += "struct cimClasses{\n" > + header += " const char *name;\n" > + header += " CimTypes *cimTypesPtr;\n" > + header += "};\n" > + header += "typedef struct cimClasses CimClasses;\n\n" > + > + return header > > def main(): > if "srcdir" in os.environ: > @@ -253,6 +295,7 @@ def main(): > classes_typedef = open_and_print(os.path.join(output_dirname, "hyperv_wmi_classes.generated.typedef")) > classes_header = open_and_print(os.path.join(output_dirname, "hyperv_wmi_classes.generated.h")) > classes_source = open_and_print(os.path.join(output_dirname, "hyperv_wmi_classes.generated.c")) > + cimtypes_header = open_and_print(os.path.join(output_dirname, "hyperv_wmi_cimtypes.generated.h")) > > # parse input file > number = 0 > @@ -294,6 +337,8 @@ def main(): > classes_typedef.write(notice) > classes_header.write(notice) > classes_source.write(notice) > + cimtypes_header.write(notice) > + cimtypes_header.write(generate_cimtypes_header1()) > > names = classes_by_name.keys() > names.sort() > @@ -304,6 +349,12 @@ def main(): > classes_typedef.write(classes_by_name[name].generate_classes_typedef()) > classes_header.write(classes_by_name[name].generate_classes_header()) > classes_source.write(classes_by_name[name].generate_classes_source()) > + cimtypes_header.write(classes_by_name[name].generate_cimtypes_header2()) > + > + cimtypes_header.write("CimClasses cimClasses[] = {\n") > + for name in names: > + cimtypes_header.write(classes_by_name[name].generate_cimtypes_header3()) > + cimtypes_header.write("\t{ \"\", NULL },\n};\n") > > > > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list