DMTF / Redfish-Service-Validator

The Redfish Service Validator is a Python3 tool for checking conformance of any "device" with a Redfish service interface against Redfish CSDL schema
Other
42 stars 34 forks source link

Validator cannot download correct Volume schema #508

Open JojoWu19 opened 2 years ago

JojoWu19 commented 2 years ago

Now, validator cannot specify where to download schema files. If there is no schema file in the schema_directory, validator download the last released package of schema files from publish uri and then download other schema files (e.g., oem or swordfish) that are specified in the OData metadata. But Volume_v1.xml(v1_6_2) already is in the last released package, valodator cannot download the newer version from redfish service by described in the OData metadata. How to let validator download the specified schema file?

JojoWu19 commented 2 years ago

Is this issue working as design? or is there any workaround to let it normal? We also try to prepare correct schema files in the schema directory, but there is below error:

...
Traceback (most recent call last):
  File "/home3/jojo/DMTF/Service_Validator/redfish_service_validator/RedfishServiceValidator.py", line 146, in main
    currentService = traverse.rfService(vars(args))
  File "/home3/jojo/DMTF/Service_Validator/redfish_service_validator/traverse.py", line 75, in __init__
    self.catalog = catalog.SchemaCatalog(self.config['metadatafilepath'])
  File "/home3/jojo/DMTF/Service_Validator/redfish_service_validator/catalog.py", line 104, in __init__
    schema = SchemaDoc(f.read(), self, my_name)
  File "/home3/jojo/DMTF/Service_Validator/redfish_service_validator/catalog.py", line 181, in __init__
    reftags = edmxTag.find_all("Reference", recursive=False)
AttributeError: 'NoneType' object has no attribute 'find_all'
Service could not be started: AttributeError("'NoneType' object has no attribute 'find_all'",)
Try running the Redfish Protocol Validator to ensure the service meets basic protocol conformance
mraineri commented 2 years ago

This is due to how Volume is ultimately produced by SNIA, but the DMTF republishes the file in its 8010 package. Unfortunately there may be gaps in time where the 8010 contents contain an older version than what SNIA has published. The workaround for the tools would be to download the latest Volume_v1.xml file from SNIA and put it in the schema directory created by the tool. We'll need to fix this long term though.

The exception is not something I've seen before though, but I also haven't tested with the latest Volume schema from SNIA.

JojoWu19 commented 2 years ago

@mraineri , thank for your response, and yes, if this issue can be solved, it is helpful.

The exception is raised when I launch validator with cleaning schema_directory and copy all csdl schema files (Redfish, SNIA and OEM) in it.

mraineri commented 2 years ago

Are you only copying over Volume, or everything SNIA has published?

I tried Volume 1.8.0 and did not recreate the exception.

JojoWu19 commented 2 years ago

I find that the exception is raised when SchemaFiles/metadata includes non-schema files like Makefile.am. Now, I can prepare correct schema files as a workaround. Maybe, validator could enhance to ignore non-schema files here. @mraineri , thank for your help again.

mraineri commented 2 years ago

Yes, we should certainly enhance the validator to skip over those types of files.