Hi Serg,
Could you please provide an example? E.g. we have some dict
{ "key1": 1, "key2": ${ var.attr1 && not var.attr2 } }
And I can render it to
{ "key1": 1, "key2": true } or { "key1": 1, "key2": false }
How can I do it with YAQL?
On Tue, Mar 11, 2014 at 5:08 PM, Serg Melikyan <[email protected]>wrote:
> >As for YAQL and JSONPath, I didn't see how it is possible to write
> conditions like "a && !b || c". Their data aggregation capabilities are
> decent, but at first we need to be able to write conditions.
>
> Full set of logic operations is supported: $.object.attribute1 and not
> $object.attribute2 or $object.attribute3. Also there is true and false
> constants available: $.object.attribute is true or even $.object.attribute
> = true
>
>
> On Tue, Mar 11, 2014 at 4:51 PM, Vitaly Kramskikh <[email protected]
> > wrote:
>
>> Guys,
>>
>> As for using mako to preprocess YAML file, it could be a good idea to
>> generate cluster settings on cluster creation (like removing vlan spliters
>> section for a cluster with nova network) or volume groups, but I don't
>> think it is a good idea to calculate role availability using it and it is
>> impossible to set up dependencies between settings as it must be calculated
>> in browser. For example, we could have vSphere hypervisor which is
>> available only if vSphere section is enabled.
>>
>> As for YAQL and JSONPath, I didn't see how it is possible to write
>> conditions like "a && !b || c". Their data aggregation capabilities are
>> decent, but at first we need to be able to write conditions.
>>
>> But since we have toggleable sections, I doubt we even need these complex
>> conditions as role/settings availability will only depend on section
>> checkbox state. So flags/sections like "depends" and "conflicts" are more
>> than enough for our needs.
>>
>>
>> 2014-03-11 12:47 GMT+04:00 Serg Melikyan <[email protected]>:
>>
>> There are a few examples on the project Github
>> page<https://github.com/ativelkov/yaql>.
>>> More details may be found in the article: Yet Another Query
>>> Language<https://docs.google.com/document/d/1Ct8aPUPPpSmUjh6ugtu_CEBRHfF3bBM5FxzgJ1f-Nwk/edit?usp=sharing>
>>>
>>>
>>>
>>> On Tue, Mar 11, 2014 at 12:42 PM, Serg Melikyan
>>> <[email protected]>wrote:
>>>
>>>> Hi, Evgeniy
>>>>
>>>> A few months ago we hit similar use-case in Murano: ability to express
>>>> complicated conditions & queries. We used JSON Path, but it was not enough
>>>> for us.
>>>>
>>>> One major thing that is required when you implementing such mechanism
>>>> is restriction on Python usage - any executable code that can be executed
>>>> on server is a security/stability issue. To solve this use-case without
>>>> introducing ability to run any executable code we have created
>>>> YAQL<https://github.com/ativelkov/yaql>
>>>> .
>>>>
>>>> YAQL is very extensible and flexible library, that provides great
>>>> conditions/query expirience out of the box. YAQL may be easily extended
>>>> with own functions without adding anything in the library itself. Please,
>>>> look at the YAQL and let's discuss how YAQL may help to solve your cases.
>>>>
>>>>
>>>> On Fri, Mar 7, 2014 at 12:56 PM, Evgeniy L <[email protected]> wrote:
>>>>
>>>>> Hi Vitaly,
>>>>>
>>>>> I'm not sure that I understand you case correctly, but we can just a
>>>>> render flag to enable or disable role.
>>>>>
>>>>> For example:
>>>>>
>>>>> roles_metadata:
>>>>> controller:
>>>>> name: "Custom Role Name"
>>>>> description: "Role's description"
>>>>> conflicts:
>>>>> - compute
>>>>> enable:
>>>>> condition:
>>>>> ${cluster.attributes.editable.additional_components.ceilometer.value}
>>>>> description: "some error message"
>>>>>
>>>>> And for example we will be able to make more complicated conditions
>>>>>
>>>>> ${not
>>>>> cluster.attributes.editable.additional_components.ceilometer.value}
>>>>>
>>>>> ${cluster.attributes.some_cluster_attr and not
>>>>> cluster.attributes.some_cluster_attr2}
>>>>>
>>>>> But my suggestion is not to use such ugly construction in template (it
>>>>> would be better to create a helper), but it will be really useful for
>>>>> those
>>>>> who add new roles in fuel.
>>>>>
>>>>>
>>>>> On Thu, Mar 6, 2014 at 10:04 PM, Vitaly Kramskikh <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Evgeniy,
>>>>>>
>>>>>> In that particular case with Ceph role availability dependent on
>>>>>> settings, where would you use the template? Generate a role list using
>>>>>> it?
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2014-03-06 19:12 GMT+04:00 Evgeniy L <[email protected]>:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> We (python team) had a discussion about roles disabling feature [0]
>>>>>>> with colleagues from UI team as result I've created a design document
>>>>>>> [1]
>>>>>>> where I tried to describe problems which we have and possible solutions.
>>>>>>>
>>>>>>> Comments are welcome.
>>>>>>>
>>>>>>> [0]
>>>>>>> https://docs.google.com/a/mirantis.com/document/d/1-YMcGX0JI4LwbrpsvA-ktIkxVqCI3bi7PQ6U0udW0O0/edit
>>>>>>> [1]
>>>>>>> https://docs.google.com/a/mirantis.com/document/d/1yBaIxUMnrFths7N1_qVkIivpR0GsYHRlGR3C8IZ9bbk/edit#
>>>>>>>
>>>>>>> --
>>>>>>> Mailing list: https://launchpad.net/~fuel-dev
>>>>>>> Post to : [email protected]
>>>>>>> Unsubscribe : https://launchpad.net/~fuel-dev
>>>>>>> More help : https://help.launchpad.net/ListHelp
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Vitaly Kramskikh,
>>>>>> Software Engineer,
>>>>>> Mirantis, Inc.
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Mailing list: https://launchpad.net/~fuel-dev
>>>>> Post to : [email protected]
>>>>> Unsubscribe : https://launchpad.net/~fuel-dev
>>>>> More help : https://help.launchpad.net/ListHelp
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Serg Melikyan, Senior Software Engineer at Mirantis, Inc.
>>>> http://mirantis.com | [email protected]
>>>>
>>>> +7 (495) 640-4904, 0261
>>>> +7 (903) 156-0836
>>>>
>>>
>>>
>>>
>>> --
>>> Serg Melikyan, Senior Software Engineer at Mirantis, Inc.
>>> http://mirantis.com | [email protected]
>>>
>>> +7 (495) 640-4904, 0261
>>> +7 (903) 156-0836
>>>
>>
>>
>>
>> --
>> Vitaly Kramskikh,
>> Software Engineer,
>> Mirantis, Inc.
>>
>
>
>
> --
> Serg Melikyan, Senior Software Engineer at Mirantis, Inc.
> http://mirantis.com | [email protected]
>
> +7 (495) 640-4904, 0261
> +7 (903) 156-0836
>
--
Mailing list: https://launchpad.net/~fuel-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~fuel-dev
More help : https://help.launchpad.net/ListHelp