[ 
https://issues.apache.org/jira/browse/IGNITE-18954?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mirza Aliev updated IGNITE-18954:
---------------------------------
    Description: 
{*}Motivation{*}:

We need to parse and be able to use filters, that user set for the distribution 
zone

*Definition of done:*
 
* Filters are parsed and it is possible to filter arbitrary set of attributes
* Validator is implemented, so we can validate a string representation of a 
filter expression


*Implementation details:*

 Language must allow to perform simple operations, like 
* “ “ – default empty filter, means that all nodes match
* () expressions with parentheses 
* key1 = “A” && key2 = “B”, () && ()
* key1 = “A” || key2 = “B”, () || ()
* key1 != "A"
Attributes representation must look like key -> value pairs, like 

{noformat}
(region = EU || region = US) && (storage != HDD || storage = SSD)
{noformat}

After some investigation, I propose to not implement our own language for the 
filters and attributes, but reuse JSON functionality.

For nodes, user just pass JSON representation through the {{ignite-config.json}}
{code:java}
{
    "network": {
        "port": 3344
    },
    "rest": {
        "port": 10300
    },
    "nodeAttributes": {
        "region": "EU",
        "storage": "SSD"
    }
}

{code}


  was:
{*}Motivation{*}:

We need to parse and be able to use filters, that user set for the distribution 
zone

*Definition of done:*
 
* Filters are parsed and it is possible to filter arbitrary set of attributes
* Validator is implemented, so we can validate a string representation of a 
filter expression


*Implementation details:*

 Language must allow to perform simple operations, like 
* “ “ – default empty filter, means that all nodes match
* () expressions with parentheses 
* key1 = “A” && key2 = “B”, () && ()
* key1 = “A” || key2 = “B”, () || ()
* key1 != "A"
Attributes representation must look like key -> value pairs, like 

{noformat}
(region = EU || region = US) && (storage != HDD || storage = SSD)
{noformat}

After some investigation, I propose to not implement our own language for the 
filters and attributes, but reuse JSON functionality.

For nodes, user just pass JSON representation through the {{
{code:java}
{
    "network": {
        "port": 3344
    },
    "rest": {
        "port": 10300
    },
    "nodeAttributes": {
        "region": "EU",
        "storage": "SSD"
    }
}

{code}
ignite-config.json}}



> Design a language for parsing of a filter expression
> ----------------------------------------------------
>
>                 Key: IGNITE-18954
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18954
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Mirza Aliev
>            Priority: Major
>              Labels: ignite-3
>
> {*}Motivation{*}:
> We need to parse and be able to use filters, that user set for the 
> distribution zone
> *Definition of done:*
>  
> * Filters are parsed and it is possible to filter arbitrary set of attributes
> * Validator is implemented, so we can validate a string representation of a 
> filter expression
> *Implementation details:*
>  Language must allow to perform simple operations, like 
> * “ “ – default empty filter, means that all nodes match
> * () expressions with parentheses 
> * key1 = “A” && key2 = “B”, () && ()
> * key1 = “A” || key2 = “B”, () || ()
> * key1 != "A"
> Attributes representation must look like key -> value pairs, like 
> {noformat}
> (region = EU || region = US) && (storage != HDD || storage = SSD)
> {noformat}
> After some investigation, I propose to not implement our own language for the 
> filters and attributes, but reuse JSON functionality.
> For nodes, user just pass JSON representation through the 
> {{ignite-config.json}}
> {code:java}
> {
>     "network": {
>         "port": 3344
>     },
>     "rest": {
>         "port": 10300
>     },
>     "nodeAttributes": {
>         "region": "EU",
>         "storage": "SSD"
>     }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to