[Engine-devel] [ovirt-engine-sdk] Simplify the process of the RSDL code generation

Michael Pasternak mpastern at redhat.com
Mon May 28 06:56:08 UTC 2012


On 05/27/2012 08:06 PM, ShaoHe Feng wrote:
> On 05/26/2012 01:48 AM, Michael Pasternak wrote:
>> Hi,
>>
>> On 05/24/2012 09:13 PM, ShaoHe Fen3g wrote:
>>> Hi all,
>>>
>>> Now I'm using the code generation suites of ovirt-engine-sdk, I find it is very troublesome.
>> I completely agree with you, automating python entities generation is on top
>> of my TODO stack see [1],
>>
>> Along with this, there was always something more important to do, and
>> it was delayed time after time, so your help is most welcome.
>>
>> [1] http://www.ovirt.org/wiki/SDK#codegen
>>
>>> IMO,  we can simplify the process. And I want to engaged in it.
>>>
>>> there are two tools parse the api.xsd and generate the params.py code.  They are generateds_gui.py and generateDS.py.
>>> but there still some code can not be generate by these tools. now we should add these codes manually.
>>>
>>> the not NOT_GENERATED codes are as follow in the current  params.py code:
>>> 1.  import python module
>>> 2.  a new attribute of GeneratedsSuper class
>>> 3.  modify the get_root_tag function.
>>> 4.  modify the parseString function to shut up the stdout.
>>> 5.  _rootClassMap
>>> 6 . _elementToClassMap
>>> 7. findRootClass
>>>
>>> And I have two ideas about the code generation.
>>> For we should not modify the generateDS.py tools.
>>> But we can improve it.
>>>
>>> I think the 1, 2, 3, 7, can be hard-code, and 4, 5 and 6 can be configured.
>>> So I want to add an configure file to tell how to add the extra code that are not generated  by generateDS.py tools.
>>> And  new python program, as extension of generateDS.py to read the configure file and generate these codes.
>> sounds good, btw 5,6 can be constructed programmatically using __all__ generated by generateDS
>> and finding element name in xsd by type (from __all__).
> should all the element name in xsd  by type be added to _rootClassMap, and no element can be exception?

basically yes, cause _rootClassMap is <name, type> holder which used for (by name) type retrieval,
only exception is if certain type is not referenced by any other type (then none will look for
it during the type construction), but i would not implement this logic.

> 
>>> Or without the configure file, just make the new python program that supports an interactive commands.
>>>
>>>
>>>
>>> _______________________________________________
>>> Engine-devel mailing list
>>> Engine-devel at ovirt.org
>>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>>
> 


-- 

Michael Pasternak
RedHat, ENG-Virtualization R&D



More information about the Engine-devel mailing list