← Back to team overview

fuel-dev team mailing list archive

Re: Flexible yaml configuration mechanism in nailgun (roles disabling)

 

>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
<vkramskikh@xxxxxxxxxxxx>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 <smelikyan@xxxxxxxxxxxx>:
>
> 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 <smelikyan@xxxxxxxxxxxx>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 <eli@xxxxxxxxxxxx> 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 <
>>>> vkramskikh@xxxxxxxxxxxx> 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 <eli@xxxxxxxxxxxx>:
>>>>>
>>>>>>  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     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>>>>>> 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     : fuel-dev@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~fuel-dev
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>>>
>>>
>>>
>>> --
>>> Serg Melikyan, Senior Software Engineer at Mirantis, Inc.
>>> http://mirantis.com | smelikyan@xxxxxxxxxxxx
>>>
>>> +7 (495) 640-4904, 0261
>>> +7 (903) 156-0836
>>>
>>
>>
>>
>> --
>> Serg Melikyan, Senior Software Engineer at Mirantis, Inc.
>> http://mirantis.com | smelikyan@xxxxxxxxxxxx
>>
>> +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 | smelikyan@xxxxxxxxxxxx

+7 (495) 640-4904, 0261
+7 (903) 156-0836

Follow ups

References