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.
