ActionReturnValue uses a 
CustomFieldSerializer: 
https://github.com/oVirt/ovirt-engine/blob/11580030b10331d6f671801206050b5cf393b229/frontend/webadmin/modules/gwt-extension/src/main/java/org/ovirt/engine/core/common/action/ActionReturnValue_CustomFieldSerializer.java

1 → ArrayList
1 → length
2 → ActionReturnValue
0 → isValid(boolean)
1 → validationMessages (arraylist)
3 → length
3 → String
4 →VAR_ACTION_RUN
3 → String
5 → VAR_TYPE_VM
3 → String
6 → USER_NOT_AUTHORIZED_TO_PERFORM_ACTION
1 → executeFailedMessages (arraylist)
0 → length
0 → succeeded(boolean)
0 →isSynchronous(boolean)
7 → description = "vm1"
1 → taskPlaceHolderIdList (arraylist)
0 → length
1 → vdsmTaskIdList (arraylist)
0 → length
1 → endActionTryAgain(boolean)
8 → fault (EngineFault)
…

On Monday, November 5, 2018 at 4:24:34 PM UTC+1, Anastasiya Ruzhanskaya 
wrote:
>
> Hi!
> Thank you for your answer.
> I started to explore the answers which are sent using the same rules I 
> suppose. But faced with some inconsistency.
> Here is the example:
>
> //OK[0,0,10,0,471,9,8,1,0,1,0,1,7||,0,0,0,1,6,3,5,3,4,3,3,1,0,2,1,1,[(1)
> "java.util.ArrayList/4159755760",(2)
> "org.ovirt.engine.core.common.action.ActionReturnValue/4163585948",(3)
> "java.lang.String/2004016611",(4)"VAR__ACTION__RUN",(5)"VAR__TYPE__VM",(6)
> "USER_NOT_AUTHORIZED_TO_PERFORM_ACTION",(7)"vm1",(8)
> "org.ovirt.engine.core.common.errors.EngineFault/2377218566",(9)
> "org.ovirt.engine.core.common.errors.EngineError/1938278732"
> ,(10)"ENGINE"],0,7]
>
> 1->"java.util.ArrayList/4159755760"
>
> 1->1 element
>
> 2->"org.ovirt.engine.core.common.action.ActionReturnValue/4163585948" 
> (type of one value)
>
> 0->correlationId(string)
>
> description (string) (??)
> endActionTryAgain (boolean)(??)
>
>
> 1->executeFailedMessages(arraylist)
>
> 3-> 3 elements
>
> 3-> string type
>
> 4->"VAR__ACTION__RUN"
>
> 3->string type
>
> 5->"VAR__TYPE__VM"
>
> 3-> string type
>
> 6->"USER_NOT_AUTHORIZED_TO_PERFORM_ACTION"
>
>
> 8->fault(enginefault)
>
> 9->engineError
>
> 471->type of error
>
>
> internalVdsmTaskIdList(arraylist) (??)
> isSynchronous(boolean) (??)
> jobId(guid) (??)
> returnValue(object) (??)
> succeeded(boolean)  (??)
> taskPlaceHolderIdList(arraylist) (??)
> valid(boolean) (??)
> 0->validationMessages(arraylist) (??)
> 0->vdsmTaskIdList(arraylist) (??)
>
>
>
> I sorted the field of ActionReturn Value but the provided values do not 
> really match them.
>
> I would say that not sorted fields match better here. The two sequences I 
> am sure in are 6,3,5,3,4,3,3,1 and 471,9,8
>
> The sorted fields of ActionReturnValue are:
>
>
> correlationId
> description
> endActionTryAgain
> executeFailedMessages
> fault
> internalVdsmTaskIdList
> isSynchronous
> jobId
> returnValue
> succeeded
> taskPlaceHolderIdList
> valid
> validationMessages
> vdsmTaskIdList
>
>
>
> вт, 30 окт. 2018 г. в 17:03, Thomas Broyer <[email protected]>:
>
>> The hash is a hash of the class, not the value. It's there to ensure that 
>> the client and server use the exact same classes, with the same fields, of 
>> the same types, in the same order.
>> This means that the value is dependent on the version of oVirt that 
>> you're using, and only on the version of oVirt. IIRC, you should be able to 
>> find them in the serialization policy files, or of course in the JS files 
>> running in the browser (the hash is computed at compile-time, not at 
>> runtime, at least on the client-side, can't remember on the server)
>> Whenever you update oVirt, the hashes *might* change, which means that 
>> the way the objects are serialized/deserialized has changed; this means 
>> you'll then need to update your proxy to account for the changes.
>>
>> On Tuesday, October 30, 2018 at 1:51:13 PM UTC+1, Anastasiya Ruzhanskaya 
>> wrote:
>>>
>>> Are there any ideas about this hash function?
>>>
>>> пн, 29 окт. 2018 г. в 11:38, Anastasiya Ruzhanskaya <
>>> [email protected]>:
>>>
>>>> Hello!
>>>> I am trying to build a proxy, which will intercept requests from oVirt 
>>>> and send errors if the action should not be performed. I just need to 
>>>> implement it in such a manner due to some legacy issues with using 
>>>> internal 
>>>> access control.
>>>>
>>>> I think that by importing some information from oVirt I can easily 
>>>> parse the message in order to find the action type and id of the object on 
>>>> which it is performed.
>>>>
>>>> The problem is with the answer: I need to send the valid answer.
>>>> I created a user in oVirt which is a read-only user. So, I get the 
>>>> following answer:
>>>>
>>>>
>>>> //OK[0,0,10,0,471,9,8,1,0,1,0,1,7,0,0,0,1,6,3,5,3,4,3,3,1,0,2,1,1,["java.util.ArrayList/4159755760","org.ovirt.engine.core.common.action.ActionReturnValue/4163585948","java.lang.String/2004016611","VAR__ACTION__SHUTDOWN","VAR__TYPE__VM","USER_NOT_AUTHORIZED_TO_PERFORM_ACTION","vm1","org.ovirt.engine.core.common.errors.EngineFault/2377218566","org.ovirt.engine.core.common.errors.EngineError/1938278732","ENGINE"],0,7]
>>>>
>>>> I think the answer should be always pretty the same (maybe only for 
>>>> some cases another one). The only thing which I find tricky here is how to 
>>>> generate a valid hash value?
>>>>
>>>> I found a function in sources of GWT but it accepts a serialization 
>>>> policy and the custom serializers (which is not appropriate for me as for 
>>>> incoming requests I will always look for action type and then object, and 
>>>> for answers I want just to generate this type errors, which I provided 
>>>> above, so I want to include to my proxy as minimum additional information 
>>>> as possible).
>>>>
>>>> So, I would like to find an easy way of generation this hash values 
>>>> (org.ovirt.engine.core.common.errors.EngineFault/2377218566). Or probably 
>>>> it is even possible not ti generate them at all?
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "GWT Users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to 
>>>> [email protected].
>>>> Visit this group at https://groups.google.com/group/google-web-toolkit.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "GWT Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/google-web-toolkit.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to