http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
index 4ea9160..8264731 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
@@ -23,23 +23,108 @@ include /app/helpers/jade/mixins
     .panel-heading(bs-collapse-toggle='' ng-click=`ui.loadPanel('${form}')`)
         ignite-form-panel-chevron
         label Memory
-        ignite-form-field-tooltip.tipLabel
+        ignite-form-field-tooltip.tipLabel(ng-show='$ctrl.available(["1.0.0", 
"2.0.0"])')
             | Cache memory settings#[br]
-            | #[a(href="https://apacheignite.readme.io/docs/off-heap-memory"; 
target="_blank") More info]
+            | #[a(href="https://apacheignite.readme.io/v1.9/off-heap-memory"; 
target="_blank") More info]
+        ignite-form-field-tooltip.tipLabel(ng-show='$ctrl.available("2.0.0")')
+            | Cache memory settings#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/evictions"; 
target="_blank") More info]
         ignite-form-revert
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +checkbox('Onheap cache enabled', model + 
'.onheapCacheEnabled', '"OnheapCacheEnabled"', 'Checks if the on-heap cache is 
enabled for the off-heap based page memory')
+                    .settings-row
+                        +text('Memory policy name:', model + 
'.memoryPolicyName', '"MemoryPolicyName"', 'false', 'default',
+                            'Name of memory policy configuration for this 
cache')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +dropdown('Mode:', `${model}.memoryMode`, 
'"memoryMode"', 'true', 'ONHEAP_TIERED',
+                            '[\
+                                {value: "ONHEAP_TIERED", label: 
"ONHEAP_TIERED"},\
+                                {value: "OFFHEAP_TIERED", label: 
"OFFHEAP_TIERED"},\
+                                {value: "OFFHEAP_VALUES", label: 
"OFFHEAP_VALUES"}\
+                            ]',
+                            'Memory modes control whether value is stored in 
on-heap memory, off-heap memory, or swap space\
+                            <ul>\
+                                <li>\
+                                    ONHEAP_TIERED - entries are cached on heap 
memory first<br/>\
+                                    <ul>\
+                                        <li>\
+                                            If offheap memory is enabled and 
eviction policy evicts an entry from heap memory, entry will be moved to 
offheap memory<br/>\
+                                            If offheap memory is disabled, 
then entry is simply discarded\
+                                        </li>\
+                                        <li>\
+                                            If swap space is enabled and 
offheap memory fills up, then entry will be evicted into swap space<br/>\
+                                            If swap space is disabled, then 
entry will be discarded. If swap is enabled and offheap memory is disabled, 
then entry will be evicted directly from heap memory into swap\
+                                        </li>\
+                                    </ul>\
+                                </li>\
+                                <li>\
+                                    OFFHEAP_TIERED - works the same as 
ONHEAP_TIERED, except that entries never end up in heap memory and get stored 
in offheap memory right away<br/>\
+                                    Entries get cached in offheap memory first 
and then get evicted to swap, if one is configured\
+                                </li>\
+                                <li>\
+                                    OFFHEAP_VALUES - entry keys will be stored 
on heap memory, and values will be stored in offheap memory<br/>\
+                                    Note that in this mode entries can be 
evicted only to swap\
+                                </li>\
+                            </ul>')
+                    .settings-row(ng-show=`${model}.memoryMode !== 
'OFFHEAP_VALUES'`)
+                        +dropdown-required('Off-heap memory:', 
`${model}.offHeapMode`, '"offHeapMode"', 'true', `${model}.memoryMode === 
'OFFHEAP_TIERED'`,
+                            'Disabled',
+                            '[\
+                                {value: -1, label: "Disabled"},\
+                                {value: 1, label: "Limited"},\
+                                {value: 0, label: "Unlimited"}\
+                            ]',
+                            'Off-heap storage mode\
+                            <ul>\
+                                <li>Disabled - Off-heap storage is 
disabled</li>\
+                                <li>Limited - Off-heap storage has limited 
size</li>\
+                                <li>Unlimited - Off-heap storage grow 
infinitely (it is up to user to properly add and remove entries from cache to 
ensure that off-heap storage does not grow infinitely)</li>\
+                            </ul>')
+                    .settings-row(ng-if=`${model}.offHeapMode === 1 && 
${model}.memoryMode !== 'OFFHEAP_VALUES'`)
+                        +number-required('Off-heap memory max size:', 
`${model}.offHeapMaxMemory`, '"offHeapMaxMemory"', 'true',
+                            `${model}.offHeapMode === 1`, 'Enter off-heap 
memory size', '1',
+                            'Maximum amount of memory available to off-heap 
storage in bytes')
+
                 .settings-row
-                    +checkbox('On-heap cache enabled', 
`${model}.onheapCacheEnabled`, '"onheapCacheEnabled"', 'On-heap cache enabled 
flag')
-                .settings-row(ng-show=`${model}.onheapCacheEnabled`)
-                    +evictionPolicy(`${model}.evictionPolicy`, 
'"evictionPolicy"', 'true', 'false',
-                        'Cache eviction policy<br/>\
-                        Must be set for entries to be evicted to off-heap\
+                    -var onHeapTired = model + '.memoryMode === 
"ONHEAP_TIERED"'
+                    -var swapEnabled = model + '.swapEnabled'
+                    -var offHeapMaxMemory = model + '.offHeapMaxMemory'
+
+                    +evictionPolicy(`${model}.evictionPolicy`, 
'"evictionPolicy"', 'true',
+                        onHeapTired  + ' && (' + swapEnabled + '|| 
_.isNumber(' + offHeapMaxMemory + ') &&' + offHeapMaxMemory + ' >= 0)',
+                        'Optional cache eviction policy<br/>\
+                        Must be set for entries to be evicted from on-heap to 
off-heap or swap\
                         <ul>\
                             <li>Least Recently Used(LRU) - Eviction policy 
based on LRU algorithm and supports batch eviction</li>\
                             <li>First In First Out (FIFO) - Eviction policy 
based on FIFO algorithm and supports batch eviction</li>\
                             <li>SORTED - Eviction policy which will select the 
minimum cache entry for eviction</li>\
                         </ul>')
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +java-class('Eviction filter:', model + '.evictionFilter', 
'"EvictionFilter"', 'true', 'false', 'Eviction filter to specify which entries 
should not be evicted')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Start size:', `${model}.startSize`, 
'"startSize"', 'true', '1500000', '0',
+                            'In terms of size and capacity, Ignite internal 
cache map acts exactly like a normal Java HashMap: it has some initial capacity\
+                            (which is pretty small by default), which doubles 
as data arrives. The process of internal cache map resizing is CPU-intensive\
+                            and time-consuming, and if you load a huge dataset 
into cache (which is a normal use case), the map will have to resize a lot of 
times.\
+                            To avoid that, you can specify the initial cache 
map capacity, comparable to the expected size of your dataset.\
+                            This will save a lot of CPU resources during the 
load time, because the map would not have to resize.\
+                            For example, if you expect to load 10 million 
entries into cache, you can set this property to 10 000 000.\
+                            This will save you from cache internal map 
resizes.')
+                    .settings-row
+                        +checkbox('Swap enabled', `${model}.swapEnabled`, 
'"swapEnabled"', 'Flag indicating whether swap storage is enabled or not for 
this cache')
+
             .col-sm-6
                 +preview-xml-java(model, 'cacheMemory')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
index 6715dcd..1b34b60 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
@@ -18,6 +18,10 @@ include /app/helpers/jade/mixins
 
 -var form = 'nodeFilter'
 -var model = 'backupItem'
+-var nodeFilter = model + '.nodeFilter';
+-var nodeFilterKind = nodeFilter + '.kind';
+-var igfsFilter = nodeFilterKind + ' === "IGFS"'
+-var customFilter = nodeFilterKind + ' === "Custom"'
 
 .panel.panel-default(ng-form=form novalidate)
     .panel-heading(bs-collapse-toggle='' ng-click=`ui.loadPanel('${form}')`)
@@ -30,9 +34,6 @@ include /app/helpers/jade/mixins
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
                 .settings-row
-                    -var nodeFilter = model + '.nodeFilter';
-                    -var nodeFilterKind = nodeFilter + '.kind';
-
                     +dropdown('Node filter:', nodeFilterKind, '"nodeFilter"', 
'true', 'Not set',
                         '[\
                             {value: "IGFS", label: "IGFS nodes"},\
@@ -41,19 +42,11 @@ include /app/helpers/jade/mixins
                         ]',
                         'Node filter variant'
                     )
-                .settings-row(ng-show=nodeFilterKind)
-                    div(ng-show=`${nodeFilterKind} === 'IGFS'`)
-                        -var igfsNodeFilter = `${nodeFilter}.IGFS`
-                        -var required = `${nodeFilterKind} === 'IGFS'`
-
-                        //(lbl, model, name, enabled, required, placeholder, 
options, tip)
-                        +dropdown-required-empty('IGFS:', 
`${igfsNodeFilter}.igfs`, '"igfsNodeFilter"', 'true', required,
-                            'Choose IGFS', 'No IGFS configured', 'igfss', 
'Select IGFS to filter nodes')
-                    div(ng-show=`${nodeFilterKind} === 'Custom'`)
-                        -var customNodeFilter = `${nodeFilter}.Custom`
-                        -var required = `${nodeFilterKind} === 'Custom'`
-
-                        +java-class('Class name:', 
`${customNodeFilter}.className`, '"customNodeFilter"',
-                            'true', required, 'Class name of custom node 
filter implementation', required)
+                .settings-row(ng-show=igfsFilter)
+                    +dropdown-required-empty('IGFS:', 
`${nodeFilter}.IGFS.igfs`, '"igfsNodeFilter"', 'true', igfsFilter,
+                        'Choose IGFS', 'No IGFS configured', 'igfss', 'Select 
IGFS to filter nodes')
+                .settings-row(ng-show=customFilter)
+                    +java-class('Class name:', 
`${nodeFilter}.Custom.className`, '"customNodeFilter"',
+                        'true', customFilter, 'Class name of custom node 
filter implementation', customFilter)
             .col-sm-6
                 +preview-xml-java(model, 'cacheNodeFilter', 'igfss')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
index b3650e2..480b0a5 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
@@ -46,6 +46,12 @@ include /app/helpers/jade/mixins
                                 SELECT * FROM Persons.Person p INNER JOIN 
Organizations.Organization o on p.org = o.id\
                             </li>\
                         </ul>')
+
+                //- Removed in ignite 2.0
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +number('On-heap cache for off-heap indexes:', 
`${model}.sqlOnheapRowCacheSize`, '"sqlOnheapRowCacheSize"', 'true', '10240', 
'1',
+                        'Number of SQL rows which will be cached onheap to 
avoid deserialization on each SQL index access')
+
                 .settings-row
                     +number('Long query timeout:', 
`${model}.longQueryWarningTimeout`, '"longQueryWarningTimeout"', 'true', 
'3000', '0',
                         'Timeout in milliseconds after which long query 
warning will be printed')
@@ -53,9 +59,6 @@ include /app/helpers/jade/mixins
                     +number('History size:', 
`${model}.queryDetailMetricsSize`, '"queryDetailMetricsSize"', 'true', '0', '0',
                         'Size of queries detail metrics that will be stored in 
memory for monitoring purposes')
                 .settings-row
-                    +number('Parallelism:', `${model}.queryParallelism`, 
'"queryParallelism"', 'true', '1', '1',
-                        'Defines a hint to query execution engine on desired 
degree of parallelism within a single node.')
-                .settings-row
                     -var form = 'querySqlFunctionClasses';
                     -var sqlFunctionClasses = `${model}.sqlFunctionClasses`;
 
@@ -102,10 +105,26 @@ include /app/helpers/jade/mixins
 
                         
.group-content-empty(ng-if=`!(${sqlFunctionClasses}.length) && 
!group.add.length`)
                             | Not defined
+
+                //- Removed in ignite 2.0
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +checkbox('Snapshotable index', 
`${model}.snapshotableIndex`, '"snapshotableIndex"',
+                        'Flag indicating whether SQL indexes should support 
snapshots')
+
                 .settings-row
                     +checkbox('Escape table and filed names', 
`${model}.sqlEscapeAll`, '"sqlEscapeAll"',
                         'If enabled than all schema, table and field names 
will be escaped with double quotes (for example: "tableName"."fieldName").<br/>\
                         This enforces case sensitivity for field names and 
also allows having special characters in table and field names.<br/>\
                         Escaped names will be used for creation internal 
structures in Ignite SQL engine.')
+
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +number('Query parallelism', model + 
'.queryParallelism', '"queryParallelism"', 'true', '1', '1',
+                            'A hint to query execution engine on desired 
degree of parallelism within a single node')
+                    .settings-row
+                        +number('SQL index max inline size:', model + 
'.sqlIndexMaxInlineSize', '"sqlIndexMaxInlineSize"', 'true', '-1', '0',
+                            'Maximum inline size for sql indexes')
+
             .col-sm-6
                 +preview-xml-java(model, 'cacheQuery', 'domains')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
index f09bc0b..3af24df 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
@@ -246,5 +246,10 @@ mixin hibernateField(name, model, items, valid, save, 
newItem)
                             .details-row
                                 +number('Flush threads count:', 
`${model}.writeBehindFlushThreadCount`, '"writeBehindFlushThreadCount"', 
enabled, '1', '1',
                                     'Number of threads that will perform cache 
flushing')
+
+                            //- Since ignite 2.0
+                            .details-row(ng-if='$ctrl.available("2.0.0")')
+                                +checkbox-enabled('Write coalescing', model + 
'.writeBehindCoalescing', '"WriteBehindCoalescing"', enabled, 'Write coalescing 
flag for write-behind cache store')
+
             .col-sm-6
                 +preview-xml-java(model, 'cacheStore', 'domains')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
index 2021c1c..25ee62a 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
@@ -115,6 +115,12 @@ include /app/helpers/jade/mixins
 
                         .group-content-empty(ng-if=`!(${exclude}.length) && 
!group.add.length`)
                             | Not defined
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +java-class('Class loader:', model + '.classLoader', 
'"classLoader"', 'true', 'false',
+                        'Loader which will be used for instantiating execution 
context')
+
                 .settings-row
                     +dropdown('Deployment variant:', modelDeployment + 
'.kind', '"deploymentKind"', 'true', 'Default',
                         '[\
@@ -214,7 +220,7 @@ include /app/helpers/jade/mixins
 
                                 div(type='internal' name='Scanner')
                                     label.col-xs-12.col-sm-12.col-md-12
-                                        // (lbl, name, model, items, valid, 
save, newItem)
+                                        //- (lbl, name, model, items, valid, 
save, newItem)
                                         +table-java-class-field('Scanner:', 
name, model, scannerModel, valid, save, true)
                                             +table-save-button(valid, save, 
true)
                                             +unique-feedback(name, uniqueTip)

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
index 71d9974..5718755 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
@@ -55,8 +55,18 @@ include /app/helpers/jade/mixins
                         '0 means wait forever')
                 .settings-row
                     +number('Thread priority:', `${model}.threadPriority`, 
'"threadPriority"', 'true', '10', '1', 'Thread priority for all threads started 
by SPI')
-                .settings-row
-                    +number('Metrics update frequency:', 
`${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', 
'1', 'Metrics update messages issuing frequency')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Heartbeat frequency:', 
`${model}.heartbeatFrequency`, '"heartbeatFrequency"', 'true', '2000', '1', 
'Heartbeat messages issuing frequency')
+                    .settings-row
+                        +number('Max heartbeats miss w/o init:', 
`${model}.maxMissedHeartbeats`, '"maxMissedHeartbeats"', 'true', '1', '1',
+                            'Max heartbeats count node can miss without 
initiating status check')
+                    .settings-row
+                        +number('Max missed client heartbeats:', 
`${model}.maxMissedClientHeartbeats`, '"maxMissedClientHeartbeats"', 'true', 
'5', '1',
+                            'Max heartbeats count node can miss without 
failing client node')
+
                 .settings-row
                     +number('Topology history:', `${model}.topHistorySize`, 
'"topHistorySize"', 'true', '1000', '0', 'Size of topology snapshots history')
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
index 09cd40c..2f5cc31 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
@@ -34,25 +34,21 @@ include /app/helpers/jade/mixins
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
-                .settings-row
-                    +dropdown-multiple('Include type:', 
`${model}.includeEventTypes`, '"includeEventTypes"', true, 'Choose recorded 
event types', '', 'eventGroups',
-                    'Array of event types, which will be recorded by 
GridEventStorageManager#record(Event)<br/>\
-                    Note, that either the include event types or the exclude 
event types can be established')
-
-                .settings-row
-                    +dropdown('Event storage:', modelEventStorageKind, 
'"eventStorageKind"', 'true', 'Disabled',
-                    '[\
-                        {value: "Memory", label: "Memory"},\
-                        {value: "Custom", label: "Custom"},\
-                        {value: undefined, label: "Disabled"}\
-                    ]',
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +dropdown('Event storage:', modelEventStorageKind, 
'"eventStorageKind"', 'true', 'Disabled', 'eventStorage',
+                    'Regulate how grid store events locally on node\
+                    <ul>\
+                        <li>Memory - All events are kept in the FIFO queue 
in-memory</li>\
+                        <li>Custom - Custom implementation of event storage 
SPI</li>\
+                    </ul>')
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +dropdown('Event storage:', modelEventStorageKind, 
'"eventStorageKind"', 'true', 'Disabled', 'eventStorage',
                     'Regulate how grid store events locally on node\
                     <ul>\
                         <li>Memory - All events are kept in the FIFO queue 
in-memory</li>\
                         <li>Custom - Custom implementation of event storage 
SPI</li>\
                         <li>Disabled - Events are not collected</li>\
                     </ul>')
-
                 div(ng-show=eventStorageMemory)
                     .settings-row
                         +number('Events expiration time:', 
`${modelEventStorage}.Memory.expireAgeMs`, '"EventStorageExpireAgeMs"', 'true', 
'Long.MAX_VALUE', '1', 'All events that exceed this value will be removed from 
the queue when next event comes')
@@ -66,5 +62,9 @@ include /app/helpers/jade/mixins
                 .settings-row(ng-show=eventStorageCustom)
                     +java-class('Class:', 
`${modelEventStorage}.Custom.className`, '"EventStorageCustom"', 'true', 
eventStorageCustom, 'Event storage implementation class name', 
eventStorageCustom)
 
+                .settings-row(ng-show=modelEventStorageKind)
+                    +dropdown-multiple('Include type:', 
`${model}.includeEventTypes`, '"includeEventTypes"', true, 'Choose recorded 
event types', '', 'eventGroups',
+                    'Array of event types, which will be recorded by 
GridEventStorageManager#record(Event)<br/>\
+                    Note, that either the include event types or the exclude 
event types can be established')
             .col-sm-6
                 +preview-xml-java(model, 'clusterEvents')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
index e0c2357..d61516c 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
@@ -32,6 +32,15 @@ include /app/helpers/jade/mixins
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +number('Failure detection timeout:', model + 
'.failureDetectionTimeout', '"failureDetectionTimeout"', 'true',
+                            '10000', '1', 'Failure detection timeout is used 
to determine how long the communication or discovery SPIs should wait before 
considering a remote connection failed')
+                    .settings-row
+                        +number('Client failure detection timeout:', model + 
'.clientFailureDetectionTimeout', '"clientFailureDetectionTimeout"', 'true',
+                            '30000', '1', 'Failure detection timeout is used 
to determine how long the communication or discovery SPIs should wait before 
considering a remote connection failed')
+
                 .settings-row(ng-init='failoverSpiTbl={type: "failoverSpi", 
model: "failoverSpi", focusId: "kind", ui: "failover-table"}')
                     +ignite-form-group()
                         ignite-form-field-label

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
index 62cc23d..752eb79 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
@@ -32,7 +32,7 @@ include /app/helpers/jade/mixins
         .panel-body
             .col-sm-6
                 .settings-row
-                    +text('Name:', `${model}.name`, '"clusterName"', 'true', 
'Input name', 'Grid name allows to indicate to what grid this particular grid 
instance belongs to')
+                    +text('Name:', `${model}.name`, '"clusterName"', 'true', 
'Input name', 'Instance name allows to indicate to what grid this particular 
grid instance belongs to')
                 .settings-row
                     +caches(model, 'Select caches to start in cluster or add a 
new cache')
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
new file mode 100644
index 0000000..b45efa4
--- /dev/null
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
@@ -0,0 +1,119 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'hadoop'
+-var model = 'backupItem.hadoopConfiguration'
+-var plannerModel = model + '.mapReducePlanner'
+-var weightedModel = plannerModel + '.Weighted'
+-var weightedPlanner = plannerModel + '.kind === "Weighted"'
+-var customPlanner = plannerModel + '.kind === "Custom"'
+-var libs = model + '.nativeLibraryNames'
+
+.panel.panel-default(ng-form=form novalidate)
+    -var uniqueTip = 'Such native library already exists!'
+
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Hadoop configuration
+        ignite-form-field-tooltip.tipLabel
+            | Hadoop Accelerator configuration
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +dropdown('Map reduce planner:', plannerModel + '.kind', 
'"MapReducePlanner"', 'true', 'Default', '[\
+                        {value: "Weighted", label: "Weighted"},\
+                        {value: "Custom", label: "Custom"},\
+                        {value: undefined, label: "Default"}\
+                    ]', 'Implementation of map reduce planner\
+                    <ul>\
+                        <li>Weighted - Planner which assigns mappers and 
reducers based on their "weights"</li>\
+                        <li>Custom - Custom planner implementation</li>\
+                        <li>Default - Default planner implementation</li>\
+                    </ul>')
+                .settings-row(ng-show=weightedPlanner)
+                    .panel-details
+                        .details-row
+                            +number('Local mapper weight:', weightedModel + 
'.localMapperWeight', '"LocalMapperWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a mapper 
is assigned and it is input split data is located on this node')
+                        .details-row
+                            +number('Remote mapper weight:', weightedModel + 
'.remoteMapperWeight', '"remoteMapperWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a mapper 
is assigned, but it is input split data is not located on this node')
+                        .details-row
+                            +number('Local reducer weight:', weightedModel + 
'.localReducerWeight', '"localReducerWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a reducer 
is assigned and the node have at least one assigned mapper')
+                        .details-row
+                            +number('Remote reducer weight:', weightedModel + 
'.remoteReducerWeight', '"remoteReducerWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a reducer 
is assigned, but the node does not have any assigned mappers')
+                        .details-row
+                            +number('Local mapper weight:', weightedModel + 
'.preferLocalReducerThresholdWeight', '"preferLocalReducerThresholdWeight"', 
'true', 200, '0',
+                                "When threshold is reached, a node with 
mappers is no longer considered as preferred for further reducer assignments")
+                .settings-row(ng-show=customPlanner)
+                    .panel-details
+                        .details-row
+                            +java-class('Class name:', plannerModel + 
'.Custom.className', '"MapReducePlannerCustomClass"', 'true', customPlanner,
+                                'Custom planner implementation')
+                .settings-row
+                    +number('Finished job info TTL:', model + 
'.finishedJobInfoTtl', '"finishedJobInfoTtl"', 'true', '30000', '0',
+                        'Finished job info time-to-live in milliseconds')
+                .settings-row
+                    +number('Max parallel tasks:', model + 
'.maxParallelTasks', '"maxParallelTasks"', 'true', 'availableProcessors * 2', 
'1',
+                        'Max number of local tasks that may be executed in 
parallel')
+                .settings-row
+                    +number('Max task queue size:', model + 
'.maxTaskQueueSize', '"maxTaskQueueSize"', 'true', '8192', '1', 'Max task queue 
size')
+                .settings-row
+                    +ignite-form-group(ng-form=form ng-model=`${addresses}`)
+                        ignite-form-field-label
+                            | Native libraries
+                        ignite-form-group-tooltip
+                            | Library names
+                        ignite-form-group-add(ng-click='group.add = [{}]')
+                            | Add new library
+                        .group-content(ng-if=`${libs}.length`)
+                            -var model = 'obj.model';
+                            -var name = '"edit" + $index'
+                            -var valid = `${form}[${name}].$valid`
+                            -var save = `${libs}[$index] = ${model}`
+
+                            div(ng-repeat=`model in ${libs} track by $index` 
ng-init='obj = {}')
+                                label.col-xs-12.col-sm-12.col-md-12
+                                    .indexField
+                                        | {{ $index+1 }})
+                                    +table-remove-button(libs, 'Remove 
library')
+                                    span(ng-hide='field.edit')
+                                        a.labelFormField(ng-click=`field.edit 
= true; ${model} = model;`) {{ model }}
+                                    span(ng-if='field.edit')
+                                        +table-text-field(name, model, libs, 
valid, save, 'Input library name', false)
+                                            +table-save-button(valid, save, 
false)
+                                            +unique-feedback(name, uniqueTip)
+                        .group-content(ng-repeat='field in group.add')
+                            -var model = 'new';
+                            -var name = '"new"'
+                            -var valid = `${form}[${name}].$valid`
+                            -var save = `${libs}.push(${model})`
+
+                            div
+                                label.col-xs-12.col-sm-12.col-md-12
+                                    +table-text-field(name, model, libs, 
valid, save, 'Input library name', true)
+                                        +table-save-button(valid, save, true)
+                                        +unique-feedback(name, uniqueTip)
+                        .group-content-empty(id='libs' 
ng-if=`!(${libs}.length) && !group.add.length`)
+                            | Not defined
+            .col-sm-6
+                +preview-xml-java(model, 'clusterHadoop')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
index 274b014..6126a9e 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
@@ -35,18 +35,21 @@ include /app/helpers/jade/mixins
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
                 .settings-row
-                    +dropdown('Marshaller:', marshaller + '.kind', '"kind"', 
'true', 'Choose marshaller',
-                        '[\
-                            {value: "OptimizedMarshaller", label: 
"OptimizedMarshaller"},\
-                            {value: "JdkMarshaller", label: "JdkMarshaller"},\
-                            {value: undefined, label: "Not set"}\
-                        ]',
-                        'Instance of marshaller to use in grid<br/>\
-                        <ul>\
-                            <li>OptimizedMarshaller - Optimized implementation 
of marshaller</li>\
-                            <li>JdkMarshaller - Marshaller based on JDK 
serialization mechanism</li>\
-                            <li>Not set - BinaryMarshaller serialize and 
deserialize all objects in the binary format</li>\
-                        </ul>')
+                    div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                        +dropdown('Marshaller:', marshaller + '.kind', 
'"kind"', 'true', 'Default', 'marshallerVariant',
+                            'Instance of marshaller to use in grid<br/>\
+                            <ul>\
+                                <li>OptimizedMarshaller - Optimized 
implementation of marshaller</li>\
+                                <li>JdkMarshaller - Marshaller based on JDK 
serialization mechanism</li>\
+                                <li>Default - BinaryMarshaller serialize and 
deserialize all objects in the binary format</li>\
+                            </ul>')
+                    div(ng-if='$ctrl.available("2.0.0")')
+                        +dropdown('Marshaller:', marshaller + '.kind', 
'"kind"', 'true', 'Default', 'marshallerVariant',
+                            'Instance of marshaller to use in grid<br/>\
+                            <ul>\
+                                <li>JdkMarshaller - Marshaller based on JDK 
serialization mechanism</li>\
+                                <li>Default - BinaryMarshaller serialize and 
deserialize all objects in the binary format</li>\
+                            </ul>')
                     a.customize(
                         ng-if=`${marshaller}.kind && ${marshaller}.kind === 
'OptimizedMarshaller'`
                         ng-click=`${marshaller}.expanded = 
!${marshaller}.expanded`
@@ -66,5 +69,15 @@ include /app/helpers/jade/mixins
                                 'Whether marshaller should require 
Serializable interface or not')
                 .settings-row
                     +checkbox('Marshal local jobs', 
`${model}.marshalLocalJobs`, '"marshalLocalJobs"', 'If this flag is enabled, 
jobs mapped to local node will be marshalled as if it was remote node')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Keep alive time:', 
`${model}.marshallerCacheKeepAliveTime`, '"marshallerCacheKeepAliveTime"', 
'true', '10000', '0',
+                            'Keep alive time of thread pool that is in charge 
of processing marshaller messages')
+                    .settings-row
+                        +number('Pool size:', 
`${model}.marshallerCacheThreadPoolSize`, '"marshallerCacheThreadPoolSize"', 
'true', 'max(8, availableProcessors) * 2', '1',
+                            'Default size of thread pool that is in charge of 
processing marshaller messages')
+
             .col-sm-6
                 +preview-xml-java(model, 'clusterMarshaller')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
new file mode 100644
index 0000000..62a07c1
--- /dev/null
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
@@ -0,0 +1,114 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'memoryConfiguration'
+-var model = 'backupItem.memoryConfiguration'
+-var memoryPolicies = model + '.memoryPolicies'
+
+.panel.panel-default(ng-if='$ctrl.available("2.0.0")' ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Memory configuration
+        ignite-form-field-tooltip.tipLabel
+            | Page memory is a manageable off-heap based memory architecture 
that is split into pages of fixed size#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/page-memory"; 
target="_blank") More info]
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +number-min-max('Page size:', model + '.pageSize', 
'"MemoryConfigurationPageSize"',
+                    'true', '2048', '1024', '16384', 'Every memory region is 
split on pages of fixed size')
+                .settings-row
+                    +number('Concurrency level:', model + '.concurrencyLevel', 
'"MemoryConfigurationConcurrencyLevel"',
+                    'true', 'availableProcessors', '2', 'The number of 
concurrent segments in Ignite internal page mapping tables')
+                .settings-row
+                    +ignite-form-group
+                        ignite-form-field-label
+                            | System cache
+                        ignite-form-group-tooltip
+                            | System cache properties
+                        .group-content
+                            .details-row
+                                +number('Initial size:', model + 
'.systemCacheInitialSize', '"systemCacheInitialSize"',
+                                'true', '41943040', '10485760', 'Initial size 
of a memory region reserved for system cache')
+                            .details-row
+                                +number('Maximum size:', model + 
'.systemCacheMaxSize', '"systemCacheMaxSize"',
+                                'true', '104857600', '10485760', 'Maximum size 
of a memory region reserved for system cache')
+                .settings-row
+                    +ignite-form-group
+                        ignite-form-field-label
+                            | Memory policies
+                        ignite-form-group-tooltip
+                            | Memory policies configuration
+                        .group-content
+                            .details-row
+                                +text('Default region name:', model + 
'.defaultMemoryPolicyName', '"defaultMemoryPolicyName"',
+                                'false', 'default', 'Name of the memory policy 
that defines the default memory region')
+                            .details-row(ng-hide='(' + model + 
'.defaultMemoryPolicyName || "default") !== "default"')
+                                +number('Default region size:', model + 
'.defaultMemoryPolicySize', '"defaultMemoryPolicySize"',
+                                'true', '0.8 * totalMemoryAvailable', 
'10485760',
+                                'Size of the memory policy that defines the 
default memory region')
+                            .details-row(ng-init='memoryPoliciesTbl={type: 
"memoryPolicies", model: "memoryPolicies", focusId: "name", ui: 
"memory-policies-table"}')
+                                +ignite-form-group()
+                                    ignite-form-field-label
+                                        | Configured policies
+                                    ignite-form-group-tooltip
+                                        | List of configured policies
+                                    
ignite-form-group-add(ng-click='tableNewItem(memoryPoliciesTbl)')
+                                        | Add Memory policy configuration
+                                    
.group-content-empty(ng-if=`!(${memoryPolicies} && ${memoryPolicies}.length > 
0)`)
+                                        | Not defined
+                                    .group-content(ng-show=`${memoryPolicies} 
&& ${memoryPolicies}.length > 0` ng-repeat=`model in ${memoryPolicies} track by 
$index`)
+                                        hr(ng-if='$index != 0')
+                                        .settings-row
+                                            +text-enabled-autofocus('Name:', 
'model.name', '"MemoryPolicyName" + $index', 'true', 'false', 'default', 
'Memory policy name')
+                                                
+table-remove-button(memoryPolicies, 'Remove memory configuration')
+                                        .settings-row
+                                            +number('Initial size:', 
'model.initialSize', '"MemoryPolicyInitialSize" + $index',
+                                            'true', '268435456', '10485760', 
'Initial memory region size defined by this memory policy')
+                                        .settings-row
+                                            +number('Maximum size:', 
'model.maxSize', '"MemoryPolicyMaxSize" + $index',
+                                            'true', '0.8 * 
totalMemoryAvailable', '10485760', 'Maximum memory region size defined by this 
memory policy')
+                                        .settings-row
+                                            +text('Swap file path:', 
'model.swapFilePath', '"MemoryPolicySwapFilePath" + $index', 'false',
+                                            'Input swap file path', 'An 
optional path to a memory mapped file for this memory policy')
+                                        .settings-row
+                                            +dropdown('Eviction mode:', 
'model.pageEvictionMode', '"MemoryPolicyPageEvictionMode"', 'true', 'DISABLED',
+                                            '[\
+                                                {value: "DISABLED", label: 
"DISABLED"},\
+                                                {value: "RANDOM_LRU", label: 
"RANDOM_LRU"},\
+                                                {value: "RANDOM_2_LRU", label: 
"RANDOM_2_LRU"}\
+                                            ]',
+                                            'An algorithm for memory pages 
eviction\
+                                            <ul>\
+                                                <li>DISABLED - Eviction is 
disabled</li>\
+                                                <li>RANDOM_LRU - Once a memory 
region defined by a memory policy is configured, an off - heap array is 
allocated to track last usage timestamp for every individual data page</li>\
+                                                <li>RANDOM_2_LRU - Differs 
from Random - LRU only in a way that two latest access timestamps are stored 
for every data page</li>\
+                                            </ul>')
+                                        .settings-row
+                                            +number-min-max-step('Eviction 
threshold:', 'model.evictionThreshold', '"MemoryPolicyEvictionThreshold" + 
$index',
+                                            'true', '0.9', '0.5', '0.999', 
'0.05', 'A threshold for memory pages eviction initiation')
+                                        .settings-row
+                                            +number('Empty pages pool size:', 
'model.emptyPagesPoolSize', '"MemoryPolicyEmptyPagesPoolSize" + $index',
+                                            'true', '100', '10', 'The minimal 
number of empty pages to be present in reuse lists for this memory policy')
+                                        .settings-row
+                                            +checkbox('Metrics enabled', 
'model.metricsEnabled', '"MemoryPolicyMetricsEnabled" + $index',
+                                            'Whether memory metrics are 
enabled by default on node startup')
+            .col-sm-6
+                +preview-xml-java(model, 'clusterMemory')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
index 6810e6b..bae3267 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
@@ -40,7 +40,7 @@ include /app/helpers/jade/mixins
                         'Frequency of metrics log print out<br/>\ ' +
                         'When <b>0</b> log print of metrics is disabled')
                 .settings-row
-                    +number('Update frequency:', 
`${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', 
'0',
+                    +number('Update frequency:', 
`${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', 
'-1',
                         'Job metrics update frequency in milliseconds\
                         <ul>\
                             <li>If set to -1 job metrics are never 
updated</li>\

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
new file mode 100644
index 0000000..f84fae4
--- /dev/null
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
@@ -0,0 +1,60 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'misc'
+-var model = 'backupItem'
+
+.panel.panel-default(ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle)
+        ignite-form-panel-chevron
+        label Miscellaneous
+        ignite-form-field-tooltip.tipLabel
+            | Various miscellaneous cluster settings
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body
+            .col-sm-6
+                .settings-row
+                    +text('Work directory:', model + '.workDirectory', 
'"workDirectory"', 'false', 'Input work directory',
+                        'Ignite work directory.<br/>\
+                        If not provided, the method will use work directory 
under IGNITE_HOME specified by IgniteConfiguration#setIgniteHome(String)\
+                        or IGNITE_HOME environment variable or system 
property.')
+
+                //- Since ignite 2.0
+                div(ng-show='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +text('Consistent ID:', model + '.consistentId', 
'"ConsistentId"', 'false', 'Input consistent ID', 'Consistent globally unique 
node ID which survives node restarts')
+                    .settings-row
+                        +java-class('Warmup closure:', model + 
'.warmupClosure', '"warmupClosure"', 'true', 'false', 'This closure will be 
executed before actual grid instance start')
+                    .settings-row
+                        +checkbox('Active on start', model + '.activeOnStart', 
'"activeOnStart"',
+                            'If cluster is not active on start, there will be 
no cache partition map exchanges performed until the cluster is activated')
+                    .settings-row
+                        +checkbox('Cache sanity check enabled', model + 
'.cacheSanityCheckEnabled', '"cacheSanityCheckEnabled"',
+                            'If enabled, then Ignite will perform the 
following checks and throw an exception if check fails<br/>\
+                            <ul>\
+                            <li>Cache entry is not externally locked with lock 
or lockAsync methods when entry is enlisted to transaction</li>\
+                            <li>Each entry in affinity group - lock 
transaction has the same affinity key as was specified on affinity transaction 
start</li>\
+                            <li>Each entry in partition group - lock 
transaction belongs to the same partition as was specified on partition 
transaction start</li>\
+                            </ul>')
+
+                .settings-row
+                    +checkbox('Late affinity assignment', model + 
'.lateAffinityAssignment', '"lateAffinityAssignment"',
+                        'With late affinity assignment mode if primary node 
was changed for some partition this nodes becomes primary only when rebalancing 
for all assigned primary partitions is finished')
+            .col-sm-6
+                +preview-xml-java(model, 'clusterMisc', 'caches')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
new file mode 100644
index 0000000..cf4c27a
--- /dev/null
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
@@ -0,0 +1,88 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'serviceConfiguration'
+-var model = 'backupItem.serviceConfigurations'
+
+.panel.panel-default(ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Service configuration
+        ignite-form-field-tooltip.tipLabel
+            | Service Grid allows for deployments of arbitrary user-defined 
services on the cluster#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/fault-tolerance"; 
target="_blank") More info]
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row(ng-init='serviceConfigurationsTbl={type: 
"serviceConfigurations", model: "serviceConfigurations", focusId: "kind", ui: 
"failover-table"}')
+                    +ignite-form-group()
+                        ignite-form-field-label
+                            | Service configurations
+                        ignite-form-group-tooltip
+                            | Service configurations
+                        
ignite-form-group-add(ng-click='tableNewItem(serviceConfigurationsTbl)')
+                            | Add service configuration
+                        .group-content-empty(ng-if=`!(${model} && 
${model}.length > 0)`)
+                            | Not defined
+                        .group-content(ng-show=`${model} && ${model}.length > 
0` ng-repeat=`model in ${model} track by $index`)
+                            -var nodeFilter = 'model.nodeFilter';
+                            -var nodeFilterKind = nodeFilter + '.kind';
+                            -var igfsFilter = nodeFilterKind + ' === "IGFS"'
+                            -var customFilter = nodeFilterKind + ' === 
"Custom"'
+
+                            hr(ng-if='$index != 0')
+                            .settings-row
+                                +text-enabled-autofocus('Name:', 'model.name', 
'"ServiceName" + $index', 'true', 'true', 'Input service name', 'Service name')
+                                    +table-remove-button(model, 'Remove 
service configuration')
+                            .settings-row
+                                +java-class('Service class', 'model.service', 
'"serviceService" + $index', 'true', 'true', 'Service implementation class 
name')
+                            .settings-row
+                                +number('Max per node count:', 
'model.maxPerNodeCount', '"ServiceMaxPerNodeCount" + $index', 'true', 
'Unlimited', '0',
+                                    'Maximum number of deployed service 
instances on each node.<br/>' +
+                                    'Zero for unlimited')
+                            .settings-row
+                                +number('Total count:', 'model.totalCount', 
'"ServiceTotalCount" + $index', 'true', 'Unlimited', '0',
+                                    'Total number of deployed service 
instances in the cluster.<br/>' +
+                                    'Zero for unlimited')
+                            //-
+                                .settings-row
+                                    +dropdown('Node filter:', nodeFilterKind, 
'"nodeFilter" + $index', 'true', 'Not set',
+                                    '[\
+                                        {value: "IGFS", label: "IGFS nodes"},\
+                                        {value: "Custom", label: "Custom"},\
+                                        {value: undefined, label: "Not set"}\
+                                    ]',
+                                    'Node filter variant'
+                                    )
+                                .panel-details(ng-show=igfsFilter)
+                                    .settings-row
+                                        +dropdown-required-empty('IGFS:', 
nodeFilter + '.IGFS.igfs', '"igfsNodeFilter"', 'true', igfsFilter,
+                                            'Choose IGFS', 'No IGFS 
configured', 'igfss', 'Select IGFS to filter nodes')
+                                .panel-details(ng-show=customFilter)
+                                    .settings-row
+                                        +java-class('Class name:', nodeFilter 
+ '.Custom.className', '"customNodeFilter"',
+                                            'true', customFilter, 'Class name 
of custom node filter implementation', customFilter)
+                            .settings-row
+                                +dropdown-required-empty('Cache:', 
'model.cache', '"ServiceCache" + $index', 'true', 'false',
+                                    'Choose cache', 'No caches configured for 
current cluster', 'clusterCachesEmpty', 'Cache name used for key-to-node 
affinity calculation').settings-row
+                            .settings-row
+                                +text('Affinity key:', 'model.affinityKey', 
'"ServiceAffinityKey" + $index', 'false', 'Input affinity key',
+                                    'Affinity key used for key-to-node 
affinity calculation')
+            .col-sm-6
+                +preview-xml-java('backupItem', 'clusterServiceConfiguration', 
'caches')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
new file mode 100644
index 0000000..7210f7a
--- /dev/null
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
@@ -0,0 +1,72 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'swap'
+-var model = 'backupItem'
+-var swapModel = model + '.swapSpaceSpi'
+-var fileSwapModel = swapModel + '.FileSwapSpaceSpi'
+
+.panel.panel-default(ng-if='$ctrl.available(["1.0.0", "2.0.0"])' ng-form=form 
novalidate)
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Swap
+        ignite-form-field-tooltip.tipLabel
+            | Settings for overflow data to disk if it cannot fit in 
memory#[br]
+            | 
#[a(href="https://apacheignite.readme.io/docs/off-heap-memory#swap-space"; 
target="_blank") More info]
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +dropdown('Swap space SPI:', `${swapModel}.kind`, 
'"swapSpaceSpi"', 'true', 'Choose swap SPI',
+                        '[\
+                            {value: "FileSwapSpaceSpi", label: "File-based 
swap"},\
+                            {value: undefined, label: "Not set"}\
+                        ]',
+                        'Provides a mechanism in grid for storing data on 
disk<br/>\
+                        Ignite cache uses swap space to overflow data to disk 
if it cannot fit in memory\
+                        <ul>\
+                            <li>File-based swap - File-based swap space SPI 
implementation which holds keys in memory</li>\
+                            <li>Not set - File-based swap space SPI with 
default configuration when it needed</li>\
+                        </ul>')
+                    a.customize(
+                        ng-if=`${swapModel}.kind`
+                        ng-click=`${swapModel}.expanded = 
!${swapModel}.expanded`
+                    ) {{ #{swapModel}.expanded ? 'Hide settings' : 'Show 
settings'}}
+                .settings-row
+                    .panel-details(ng-show=`${swapModel}.expanded && 
${swapModel}.kind`)
+                        .details-row
+                            +text('Base directory:', 
`${fileSwapModel}.baseDirectory`, '"baseDirectory"', 'false', 'swapspace',
+                                'Base directory where to write files')
+                        .details-row
+                            +number('Read stripe size:', 
`${fileSwapModel}.readStripesNumber`, '"readStripesNumber"', 'true', 
'availableProcessors', '0',
+                                'Read stripe size defines number of file 
channels to be used concurrently')
+                        .details-row
+                            +number-min-max-step('Maximum sparsity:', 
`${fileSwapModel}.maximumSparsity`, '"maximumSparsity"', 'true', '0.5', '0', 
'0.999', '0.05',
+                                'This property defines maximum acceptable 
wasted file space to whole file size ratio<br/>\
+                                When this ratio becomes higher than specified 
number compacting thread starts working')
+                        .details-row
+                            +number('Max write queue size:', 
`${fileSwapModel}.maxWriteQueueSize`, '"maxWriteQueueSize"', 'true', '1024 * 
1024', '0',
+                                'Max write queue size in bytes<br/>\
+                                If there are more values are waiting for being 
written to disk then specified size, SPI will block on store operation')
+                        .details-row
+                            +number('Write buffer size:', 
`${fileSwapModel}.writeBufferSize`, '"writeBufferSize"', 'true', '64 * 1024', 
'0',
+                                'Write buffer size in bytes<br/>\
+                                Write to disk occurs only when this buffer is 
full')
+            .col-sm-6
+                +preview-xml-java(model, 'clusterSwap')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
index 31dd333..ac4673c 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
@@ -18,6 +18,7 @@ include /app/helpers/jade/mixins
 
 -var form = 'pools'
 -var model = 'backupItem'
+-var executors = model + '.executorConfiguration'
 
 .panel.panel-default(ng-form=form novalidate)
     .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
@@ -30,19 +31,62 @@ include /app/helpers/jade/mixins
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
                 .settings-row
-                    +number('Public:', `${model}.publicThreadPoolSize`, 
'"publicThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                    +number('Public:', model + '.publicThreadPoolSize', 
'"publicThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
                         'Thread pool that is in charge of processing 
ComputeJob, GridJobs and user messages sent to node')
                 .settings-row
-                    +number('System:', `${model}.systemThreadPoolSize`, 
'"systemThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                    +number('System:', model + '.systemThreadPoolSize', 
'"systemThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
                         'Thread pool that is in charge of processing internal 
system messages')
                 .settings-row
-                    +number('Management:', 
`${model}.managementThreadPoolSize`, '"managementThreadPoolSize"', 'true', '4', 
'1',
+                    +number('Service:', model + '.serviceThreadPoolSize', 
'"serviceThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                        'Thread pool that is in charge of processing proxy 
invocation')
+                .settings-row
+                    +number('Management:', model + 
'.managementThreadPoolSize', '"managementThreadPoolSize"', 'true', '4', '1',
                         'Thread pool that is in charge of processing internal 
and Visor ComputeJob, GridJobs')
                 .settings-row
-                    +number('IGFS:', `${model}.igfsThreadPoolSize`, 
'"igfsThreadPoolSize"', 'true', 'availableProcessors', '1',
+                    +number('IGFS:', model + '.igfsThreadPoolSize', 
'"igfsThreadPoolSize"', 'true', 'availableProcessors', '1',
                         'Thread pool that is in charge of processing outgoing 
IGFS messages')
                 .settings-row
-                    +number('Rebalance:', `${model}.rebalanceThreadPoolSize`, 
'"rebalanceThreadPoolSize"', 'true', '1', '1',
+                    +number('Rebalance:', model + '.rebalanceThreadPoolSize', 
'"rebalanceThreadPoolSize"', 'true', '1', '1',
                         'Max count of threads can be used at rebalancing')
+                .settings-row
+                    +number('Utility cache:', model + 
'.utilityCacheThreadPoolSize', '"utilityCacheThreadPoolSize"', 'true', 'max(8, 
availableProcessors)', '1',
+                        'Default thread pool size that will be used to process 
utility cache messages')
+                .settings-row
+                    +number('Utility cache keep alive time:', model + 
'.utilityCacheKeepAliveTime', '"utilityCacheKeepAliveTime"', 'true', '60000', 
'0',
+                        'Keep alive time of thread pool size that will be used 
to process utility cache messages')
+                .settings-row
+                    +number('Async callback:', model + 
'.asyncCallbackPoolSize', '"asyncCallbackPoolSize"', 'true', 'max(8, 
availableProcessors)', '1',
+                        'Size of thread pool that is in charge of processing 
asynchronous callbacks')
+                .settings-row
+                    +number('Striped:', model + '.stripedPoolSize', 
'"stripedPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                        'Striped pool size that should be used for cache 
requests processing')
+
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +number('Data streamer:', model + 
'.dataStreamerThreadPoolSize', '"dataStreamerThreadPoolSize"', 'true', 'max(8, 
availableProcessors)', '1',
+                            'Size of thread pool that is in charge of 
processing data stream messages')
+                    .settings-row
+                        +number('Query:', model + '.queryThreadPoolSize', 
'"queryThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                            'Size of thread pool that is in charge of 
processing query messages')
+                    .settings-row(ng-init='executorConfigurationsTbl={type: 
"executorConfigurations", model: "executorConfigurations", focusId: "kind", ui: 
"failover-table"}')
+                        +ignite-form-group()
+                            ignite-form-field-label
+                                | Executor configurations
+                            ignite-form-group-tooltip
+                                | Сustom thread pool configurations for 
compute tasks
+                            
ignite-form-group-add(ng-click='tableNewItem(executorConfigurationsTbl)')
+                                | Add executor configuration
+                            .group-content-empty(ng-if=`!(${executors} && 
${executors}.length > 0)`)
+                                | Not defined
+                            .group-content(ng-show=`${executors} && 
${executors}.length > 0` ng-repeat=`model in ${executors} track by $index`)
+                                hr(ng-if='$index != 0')
+                                .settings-row
+                                    +text-enabled-autofocus('Name:', 
'model.name', '"ExecutorName" + $index', 'true', 'true', 'Input executor name', 
'Thread pool name')
+                                        +table-remove-button(executors, 
'Remove executor configuration')
+                                .settings-row
+                                    +number('Pool size:', 'model.size', 
'"ExecutorPoolSize" + $index', 'true', 'max(8, availableProcessors)', '1',
+                                        'Thread pool size')
+
             .col-sm-6
                 +preview-xml-java(model, 'clusterPools')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
index 1645a60..329d7c4 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
@@ -29,8 +29,19 @@ include /app/helpers/jade/mixins
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Samples size:', `${model}.clockSyncSamples`, 
'"clockSyncSamples"', 'true', '8', '0',
+                            'Number of samples used to synchronize clocks 
between different nodes<br/>\
+                            Clock synchronization is used for cache version 
assignment in CLOCK order mode')
+                    .settings-row
+                        +number('Frequency:', `${model}.clockSyncFrequency`, 
'"clockSyncFrequency"', 'true', '120000', '0',
+                            'Frequency at which clock is synchronized between 
nodes, in milliseconds<br/>\
+                            Clock synchronization is used for cache version 
assignment in CLOCK order mode')
+
                 .settings-row
-                    +number-min-max('Port base:', model + 
'.timeServerPortBase', '"timeServerPortBase"', 'true', '31100', '0', '65535',
+                    +number-min-max('Port base:', 
`${model}.timeServerPortBase`, '"timeServerPortBase"', 'true', '31100', '0', 
'65535',
                         'Time server provides clock synchronization between 
nodes<br/>\
                         Base UPD port number for grid time server. Time server 
will be started on one of free ports in range')
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
 
b/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
index aff3c73..b8564dc 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
@@ -25,7 +25,7 @@ include /app/helpers/jade/mixins
 -var queryAliasesForm = 'queryAliases'
 -var queryIndexesForm = 'queryIndexes'
 
-// LEGACY mixin for LEGACY index fields table.
+//- LEGACY mixin for LEGACY index fields table.
 mixin table-index-item-edit(prefix, index, sortAvailable, idAddition)
     -var fieldName = `${prefix}FieldName`
     -var direction = `${prefix}Direction`

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug 
b/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug
new file mode 100644
index 0000000..c6c1f89
--- /dev/null
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug
@@ -0,0 +1,42 @@
+//-
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+include /app/helpers/jade/mixins
+
+-var form = 'dualMode'
+-var model = 'backupItem'
+
+.panel.panel-default(ng-if='$ctrl.available(["1.0.0", "2.0.0"])' ng-form=form 
novalidate)
+    .panel-heading(bs-collapse-toggle='' ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Dual mode
+        ignite-form-field-tooltip.tipLabel
+            | IGFS supports dual-mode that allows it to work as either a 
standalone file system in Hadoop cluster, or work in tandem with HDFS, 
providing a primary caching layer for the secondary HDFS#[br]
+            | As a caching layer it provides highly configurable read-through 
and write-through behaviour
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +number('Maximum pending puts size:', 
`${model}.dualModeMaxPendingPutsSize`, '"dualModeMaxPendingPutsSize"', 'true', 
'0', 'Number.MIN_SAFE_INTEGER',
+                        'Maximum amount of pending data read from the 
secondary file system and waiting to be written to data cache<br/>\
+                        Zero or negative value stands for unlimited size')
+                .settings-row
+                    +java-class('Put executor service:', 
`${model}.dualModePutExecutorService`, '"dualModePutExecutorService"', 'true', 
'false', 'DUAL mode put operation executor service')
+                .settings-row
+                    +checkbox('Put executor service shutdown', 
`${model}.dualModePutExecutorServiceShutdown`, 
'"dualModePutExecutorServiceShutdown"', 'DUAL mode put operation executor 
service shutdown flag')
+            .col-sm-6
+                +preview-xml-java(model, 'igfsDualMode')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug 
b/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
index 29f955a..72d0649 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
@@ -54,8 +54,18 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
             .col-sm-6
                 .settings-row
                     +number('Block size:', `${model}.blockSize`, 
'"blockSize"', 'true', '65536', '0', 'File data block size in bytes')
-                .settings-row
-                    +number('Buffer size:', `${model}.bufferSize`, 
'"bufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream 
operations in bytes')
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +number('Buffer size:', `${model}.streamBufferSize`, 
'"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS 
stream operations in bytes')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Stream buffer size:', 
`${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 
'Read/write buffer size for IGFS stream operations in bytes')
+                    .settings-row
+                        +number('Maximum space size:', 
`${model}.maxSpaceSize`, '"maxSpaceSize"', 'true', '0', '0', 'Maximum space 
available for data cache to store file system entries')
+
                 .settings-row
                     +number('Maximum task range length:', 
`${model}.maximumTaskRangeLength`, '"maximumTaskRangeLength"', 'true', '0', 
'0', 'Maximum default range size of a file being split during IGFS task 
execution')
                 .settings-row
@@ -68,6 +78,11 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
                     +number('Prefetch blocks:', `${model}.prefetchBlocks`, 
'"prefetchBlocks"', 'true', '0', '0', 'Number of pre-fetched blocks if specific 
file chunk is requested')
                 .settings-row
                     +number('Sequential reads before prefetch:', 
`${model}.sequentialReadsBeforePrefetch`, '"sequentialReadsBeforePrefetch"', 
'true', '0', '0', 'Amount of sequential block reads before prefetch is 
triggered')
+
+                //- Removed in ignite 2.0
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +number('Trash purge timeout:', 
`${model}.trashPurgeTimeout`, '"trashPurgeTimeout"', 'true', '1000', '0', 
'Maximum timeout awaiting for trash purging in case data cache oversize is 
detected')
+
                 .settings-row
                     +checkbox('Colocate metadata', 
`${model}.colocateMetadata`, '"colocateMetadata"', 'Whether to co-locate 
metadata on a single node')
                 .settings-row
@@ -75,6 +90,11 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
                         'If value of this flag is <b>true</b>, IGFS will skip 
expensive consistency checks<br/>\
                         It is recommended to set this flag to <b>false</b> if 
your application has conflicting\
                         operations, or you do not know how exactly users will 
use your system')
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +checkbox('Update file length on flush', model + 
'.updateFileLengthOnFlush', '"updateFileLengthOnFlush"', 'Update file length on 
flush flag')
+
                 .settings-row
                     +ignite-form-group(ng-model=pathModes 
ng-form=pathModesForm)
                         ignite-form-field-label
@@ -99,6 +119,5 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
                                     tr
                                         td.col-sm-12
                                             +table-igfs-path-mode-edit('new', 
'PathMode', '-1')
-
             .col-sm-6
                 +preview-xml-java(model, 'igfsMisc')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
 
b/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
index 08cfa71..0259d39 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
@@ -18,11 +18,11 @@
 import Worker from 'worker?inline=true!./summary.worker';
 
 export default ['$q', function($q) {
-    return function({ cluster, data }) {
+    return function(message) {
         const defer = $q.defer();
         const worker = new Worker();
 
-        worker.postMessage({ cluster, data });
+        worker.postMessage(message);
 
         worker.onmessage = (e) => {
             defer.resolve(e.data);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
 
b/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
index 71b5a82..8f6a6fa 100644
--- 
a/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
+++ 
b/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
@@ -314,7 +314,7 @@ export default [
 
             ActivitiesData.post({ action: '/configuration/download' });
 
-            return new SummaryZipper({ cluster, data: ctrl.data || {}, 
IgniteDemoMode: $root.IgniteDemoMode })
+            return new SummaryZipper({ cluster, data: ctrl.data || {}, demo: 
$root.IgniteDemoMode, targetVer: Version.currentSbj.getValue() })
                 .then((data) => {
                     saver.saveAs(data, escapeFileName(cluster.name) + 
'-project.zip');
                 })

Reply via email to