summaryrefslogtreecommitdiff
path: root/scripts/hyperv_wmi_generator.py
diff options
context:
space:
mode:
authorMatt Coleman <mcoleman@datto.com>2021-01-21 13:50:43 -0500
committerLaine Stump <laine@redhat.com>2021-01-22 14:04:24 -0500
commitb23ada6715d973d697d5576e8414e4d34c758ee7 (patch)
tree62199024e935c375a4ce92b3e4d0e55b7e4a815f /scripts/hyperv_wmi_generator.py
parentb0c3fa390bbefde6b04f16da2cdaa686b5d357d6 (diff)
downloadlibvirt-b23ada6715d973d697d5576e8414e4d34c758ee7.tar.gz
hyperv: add inheritance to the WMI generator
This enables casting subtypes to their parent. Signed-off-by: Matt Coleman <matt@datto.com> Reviewed-by: Laine Stump <laine@redhat.com>
Diffstat (limited to 'scripts/hyperv_wmi_generator.py')
-rwxr-xr-xscripts/hyperv_wmi_generator.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/scripts/hyperv_wmi_generator.py b/scripts/hyperv_wmi_generator.py
index d72e5d8ca1..e5e961d2db 100755
--- a/scripts/hyperv_wmi_generator.py
+++ b/scripts/hyperv_wmi_generator.py
@@ -221,10 +221,10 @@ def report_error(message):
def parse_class(block, number):
- # expected format: class <name>
+ # expected format: class <name> : <optional parent>
header_items = block[0][1].split()
- if len(header_items) != 2:
+ if len(header_items) not in [2, 4]:
report_error("line %d: invalid block header" % (number))
assert header_items[0] == "class"
@@ -234,7 +234,13 @@ def parse_class(block, number):
if name in wmi_classes_by_name:
report_error("class '%s' has already been defined" % name)
- properties = []
+ if len(header_items) == 4:
+ parent_class = header_items[3]
+ if parent_class not in wmi_classes_by_name:
+ report_error("nonexistent parent class specified: %s" % parent_class)
+ properties = wmi_classes_by_name[parent_class].properties.copy()
+ else:
+ properties = []
for line in block[1:]:
# expected format: <type> <name>