still a question.
I find there are reduplicate items in _rootClassMap dictionary of
./src/ovirtsdk/xml/params.py file.
such as:
1.
in line 18924
"storage" : Storage,
in line 18931
"storage" : Storage,
above items has same key and value.
2.
in line 18905
"product_info" : ProductInfo,
in line 18934
"product_info" : ProductInfo,
above items has same key and value.
3.
in line 18953
"vm_pause_details" : VmPauseDetails,
in line 18962
"vm_pause_detail" : VmPauseDetails,
above items has value but different key.
is it OK ? or should I commit a patch to fix it?
On 06/08/2012 02:04 AM, Juan Hernandez wrote:
On 06/07/2012 05:14 PM, ShaoHe Feng wrote:
> Hi all,
>
> as we all know the current params.py was not completely by the
> generateSD.py, there are parts that have to be updated manually.
>
> now I have post a primarypatch to improve it.
>
http://gerrit.ovirt.org/#/c/4880/
>
> it can generate some codes, but still two parts codes can not be
> generated.
>
> they aretwo dictionaries: _rootClassMap and _elementToClassMap.
>
> However, for I do get any clue to know these two dictionaries from the
> params.py.
The reason for these dictionaries is that "generateDS.py" generates
classes for the complex types inside the API .xsd, but it doesn't
generate anything for the tags that can appear as root tags in the XML
documents used by the API. The map helps the parser find the classes
that correspond to each of those tags.
It might be possible to generate this map from the list of classes
using a rule like this:
CamelCaseName -> camel_case_names
But there are exceptions like these:
VLAN -> vlan
IPs -> ips
IscsiDetails -> iscsi
You could write code that takes into account the exceptions and
generates the map. But I think it is not worth, and error prone. I
would rather take that chunk of code out of params.py and move it to
an external file or to a constant, like you do for other chunks of
code in paramsconf.py.
> there are some questions:
> 1.
> And the __all__ list which include all the classes of _rootClassMap and
> _elementToClassMap.
> And there some classes both in _rootClassMap and _elementToClassMap.
The "__all__" list is just a python mechanism to control the symbols
that are imported when you do something like "from whatever import *".
In this case "generateDS.py" is making sure that all the generated
classes are imported, which is not really relevant for us.
> 2.
> And some of class in _rootClassMap inherit GeneratedsSuper class, some
> inherit BaseResource class, and two classes inherit Link class.
> And it is the same with _elementToClassMap.
>
> so what is the difference between _rootClassMap and _elementToClassMap.
> What rule to generate these two dictionaries.
I can't find any difference between those two dictionaries, they serve
exactly the same purpose. Maybe Michael had a future use in mind.
> 3.
> And also, how to generate the keys in _rootClassMap and
> _elementToClassMap.Any rule to generate them?
>
> there are some items in these two dictionaries
>
> "access_control_list" :
> AccessControlList, # "_" among the word in key
> "api" : API,
> "body" : Body,
> "iscsi" :
> IscsiDetails, # key "iscsi" is one part of value
> "IscsiDetails"
> "storage_domain" : StorageDomain,
> "topology" :
> CpuTopology,
> "creation_status" : Status, #
> key has a more word "creation" than the value.
> "parent" :
> TagParent