ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anovi...@apache.org
Subject [4/5] ignite git commit: IGNITE-2253 refactoring fields on clusters page - Fixes #411.
Date Tue, 26 Jan 2016 11:25:25 GMT
http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
new file mode 100644
index 0000000..6cc30e2
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/atomic.jade
@@ -0,0 +1,86 @@
+//-
+    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.
+
+- var model = 'backupItem.atomicConfiguration'
+
+form.panel.panel-default(name='atomic')
+    .panel-heading(bs-collapse-toggle='' ng-click='__show__ = true')
+        ignite-form-panel-chevron
+        label Atomic configuration
+        ignite-form-field-tooltip.tipLabel
+            | Configuration for atomic data structures#[br]
+            | Atomics are distributed across the cluster, essentially enabling performing atomic operations (such as increment-and-get or compare-and-set) with the same globally-visible value
+        ignite-form-revert 
+    .panel-collapse(role='tabpanel' bs-collapse-target='' id='atomics')
+        .panel-body(ng-if='__show__')
+            .col-sm-6
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Cache mode:
+                        ignite-form-field-tooltip
+                            | Cache modes:#[br]
+                            ul: li Partitioned - in this mode the overall key set will be divided into partitions and all partitions will be split equally between participating nodes
+                                li Replicated - in this mode all the keys are distributed to all participating nodes
+                                li Local - in this mode caches residing on different grid nodes will not know about each other
+                        ignite-form-field-dropdown(
+                            data-id='cacheMode'
+                            data-name='cacheMode'
+                            data-options="cacheModes"
+                            data-ng-model='#{model}.cacheMode'
+                            data-placeholder='PARTITIONED'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Sequence reserve:
+                        ignite-form-field-tooltip
+                            | Default number of sequence values reserved for IgniteAtomicSequence instances#[br]
+                            | After a certain number has been reserved, consequent increments of sequence will happen locally, without communication with other nodes, until the next reservation has to be made
+                        ignite-form-field-input-number(
+                            data-id='atomicSequenceReserveSize'
+                            data-name='atomicSequenceReserveSize'
+                            data-ng-model='#{model}.atomicSequenceReserveSize'
+                            data-placeholder='1000'
+                        )
+                .settings-row(ng-if='!(#{model}.cacheMode && #{model}.cacheMode != "PARTITIONED")')
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Backups:
+                        ignite-form-field-tooltip
+                            | Number of backup nodes
+                        ignite-form-field-input-number(
+                            data-id='backups'
+                            data-name='backups'
+                            data-ng-model='#{model}.backups'
+                            data-placeholder='0'
+                        )
+            .col-sm-6
+                .preview-panel(ng-init='mode = false')
+                    .preview-legend
+                        a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
+                        |  
+                        a(ng-class='{active: mode, inactive: !mode}' ng-click='mode = true') Java
+                    .preview-content(
+                        ng-if='!preview["atomics"].allDefaults && mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "java", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["atomics"].java')
+                    .preview-content(
+                        ng-if='!preview["atomics"].allDefaults && !mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "xml", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["atomics"].xml')
+                    .preview-content-empty(ng-if='preview["atomics"].allDefaults')
+                        label All Defaults
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.directive.js
new file mode 100644
index 0000000..68c8dcb
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.directive.js
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+import template from './binary.jade!';
+
+export default ['igniteConfigurationClustersBinary', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
new file mode 100644
index 0000000..5d93319
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/binary.jade
@@ -0,0 +1,142 @@
+//-
+    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.
+
+- var model = 'backupItem.binaryConfiguration'
+- var types = model + '.typeConfigurations'
+
+form.panel.panel-default(name='binary')
+    .panel-heading(bs-collapse-toggle ng-click='__show__ = true')
+        ignite-form-panel-chevron
+        label Binary configuration
+        ignite-form-field-tooltip.tipLabel
+            | Configuration for Ignite Binary Objects
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id='binary')
+        .panel-body(ng-if='__show__')
+            .col-sm-6
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | ID mapper:
+                        ignite-form-field-tooltip
+                            | Type and field ID mapper for binary objects#[br]
+                            | Ignite never writes full strings for field or type names. Instead, for performance reasons, Ignite writes integer hash codes for type and field names. It has been tested that hash code conflicts for the type names or the field names within the same type are virtually non-existent and, to gain performance, it is safe to work with hash codes. For the cases when hash codes for different types or fields actually do collide #[b BinaryIdMapper] allows to override the automatically generated hash code IDs for the type and field names
+                        ignite-form-field-java-class(
+                            data-id='idMapper'
+                            data-name='idMapper'
+                            data-ng-model='#{model}.idMapper'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Serializer:
+                        ignite-form-field-tooltip
+                            | Class with custom serialization logic for binary objects
+                        ignite-form-field-java-class(
+                            data-id='serializer'
+                            data-name='serializer'
+                            data-ng-model='#{model}.serializer'
+                        )
+                .settings-row
+                    ignite-form-group(name='typeConfigurations' ng-model='#{types}')
+                        ignite-form-field-label
+                            | Type configurations
+                        ignite-form-group-tooltip
+                            | Configuration properties for binary types
+                        ignite-form-group-add(ng-click='#{types}.push({})')
+                            | Add new type configuration.
+                        .group-content-empty(ng-if='!#{types}.length')
+                            | Not defined
+                        .group-content(ng-form='form' ng-repeat='model in #{types} track by $index')
+                            hr(ng-if='$index !== 0')
+                            .settings-row
+                               ignite-form-field
+                                    ignite-form-field-label
+                                        | Type name:
+                                    ignite-form-field-tooltip
+                                        | Type name
+                                    i.tipField.fa.fa-remove(
+                                        bs-tooltip='"Remove type configuration"'
+                                        ng-click='#{types}.splice(#{types}.indexOf(model), 1)'
+                                    )
+                                    ignite-form-field-java-class(
+                                        data-id='typeName'
+                                        data-name='typeName'
+                                        data-ng-model='model.typeName'
+                                        data-ng-required='true'
+                                    )
+                            .settings-row
+                               ignite-form-field
+                                    ignite-form-field-label
+                                        | ID mapper:
+                                    ignite-form-field-tooltip
+                                        | Type and field ID mapper for binary objects#[br]
+                                        | Ignite never writes full strings for field or type names. Instead, for performance reasons, Ignite writes integer hash codes for type and field names. It has been tested that hash code conflicts for the type names or the field names within the same type are virtually non-existent and, to gain performance, it is safe to work with hash codes. For the cases when hash codes for different types or fields actually do collide #[b BinaryIdMapper] allows to override the automatically generated hash code IDs for the type and field names
+              
+                                    ignite-form-field-java-class(
+                                        data-id='idMapper'
+                                        data-name='idMapper'
+                                        data-ng-model='model.idMapper'
+                                    )
+                            .settings-row
+                               ignite-form-field
+                                    ignite-form-field-label
+                                        | Serializer:
+                                    ignite-form-field-tooltip
+                                        | Class with custom serialization logic for binary object
+                                    ignite-form-field-java-class(
+                                        data-id='serializer'
+                                        data-name='serializer'
+                                        data-ng-model='model.serializer'
+                                    )
+                            .settings-row
+                                ignite-form-field.checkbox
+                                    ignite-form-field-input-checkbox(
+                                        data-id='enum'
+                                        data-name='enum'
+                                        data-ng-model='model.enum'
+                                    )
+                                    | Enum
+                                    ignite-form-field-tooltip
+                                        | Flag indicating that this type is the enum
+
+
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='compactFooter'
+                            data-name='compactFooter'
+                            data-ng-model='#{model}.compactFooter'
+                        )
+                        | Compact footer
+                        ignite-form-field-tooltip
+                            | When enabled, Ignite will not write fields metadata when serializing objects(this will increase serialization performance), because internally #[b BinaryMarshaller] already distribute metadata inside cluster
+            .col-sm-6
+                .preview-panel(ng-init='mode = false')
+                    .preview-legend
+                        a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
+                        |  
+                        a(ng-class='{active: mode, inactive: !mode}' ng-click='mode = true') Java
+                    .preview-content(
+                        ng-if='!preview["binary"].allDefaults && mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "java", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["binary"].java')
+                    .preview-content(
+                        ng-if='!preview["binary"].allDefaults && !mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "xml", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["binary"].xml')
+                    .preview-content-empty(ng-if='preview["binary"].allDefaults')
+                        label All Defaults

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.directive.js
new file mode 100644
index 0000000..5203a9e
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.directive.js
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+import template from './communication.jade!';
+
+export default ['igniteConfigurationClustersCommunication', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
new file mode 100644
index 0000000..30dc084
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/communication.jade
@@ -0,0 +1,340 @@
+//-
+    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.
+
+- var model = 'backupItem.communication'
+
+form.panel.panel-default(name='communication')
+    .panel-heading(bs-collapse-toggle ng-click='__show__ = true')
+        ignite-form-panel-chevron
+        label Communication
+        ignite-form-field-tooltip.tipLabel
+            | Cluster communication network properties
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id='communication')
+        .panel-body(ng-if='__show__')
+            .col-sm-6
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Timeout:
+                        ignite-form-field-tooltip
+                            | Maximum timeout in milliseconds for network requests
+                        ignite-form-field-input-number(
+                            data-id='networkTimeout'
+                            data-name='networkTimeout'
+                            data-ng-model='backupItem.networkTimeout'
+                            data-placeholder='5000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Send retry delay:
+                        ignite-form-field-tooltip
+                            | Interval in milliseconds between message send retries
+                        ignite-form-field-input-number(
+                            data-id='networkSendRetryDelay'
+                            data-name='networkSendRetryDelay'
+                            data-ng-model='backupItem.networkSendRetryDelay'
+                            data-placeholder='1000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Send retry count:
+                        ignite-form-field-tooltip
+                            | Message send retries count
+                        ignite-form-field-input-number(
+                            data-id='networkSendRetryCount'
+                            data-name='networkSendRetryCount'
+                            data-ng-model='backupItem.networkSendRetryCount'
+                            data-placeholder='3'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Discovery startup delay:
+                        ignite-form-field-tooltip
+                            | This value is used to expire messages from waiting list whenever node discovery discrepancies happen
+                        ignite-form-field-input-number(
+                            data-id='discoveryStartupDelay'
+                            data-name='discoveryStartupDelay'
+                            data-ng-model='backupItem.discoveryStartupDelay'
+                            data-placeholder='600000'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Communication listener:
+                        ignite-form-field-tooltip
+                            | Communication listener
+                        ignite-form-field-java-class(
+                            data-id='comListener'
+                            data-name='comListener'
+                            data-ng-model='#{model}.listener'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Local IP address:
+                        ignite-form-field-tooltip
+                            | Local host address for socket binding
+                        ignite-form-field-input-text(
+                            data-id='comLocalAddress'
+                            data-name='comLocalAddress'
+                            data-ng-model='#{model}.localAddress'
+                            data-placeholder='228.1.2.4'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Local port:
+                        ignite-form-field-tooltip
+                            | Local port for socket binding
+                        ignite-form-field-input-number(
+                            data-id='comLocalPort'
+                            data-name='comLocalPort'
+                            data-ng-model='#{model}.localPort'
+                            data-placeholder='47100'
+                            data-min='1024'
+                            data-max='65535'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Local port range:
+                        ignite-form-field-tooltip
+                            | Local port range for local host ports
+                        ignite-form-field-input-number(
+                            data-id='comLocalPortRange'
+                            data-name='comLocalPortRange'
+                            data-ng-model='#{model}.localPortRange'
+                            data-placeholder='100'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Shared memory port:
+                        ignite-form-field-tooltip
+                            | Local port to accept shared memory connections
+                        ignite-form-field-input-number(
+                            data-id='sharedMemoryPort'
+                            data-name='sharedMemoryPort'
+                            data-ng-model='#{model}.sharedMemoryPort'
+                            data-placeholder='48100'
+                            data-max='65535'
+                        )
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='directBuffer'
+                            data-name='directBuffer'
+                            data-ng-model='#{model}.directBuffer'
+                        )
+                        | Direct buffer
+                        ignite-form-field-tooltip
+                            | If value is true, then SPI will use ByteBuffer.allocateDirect(int) call#[br]
+                            | Otherwise, SPI will use ByteBuffer.allocate(int) call.
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='directSendBuffer'
+                            data-name='directSendBuffer'
+                            data-ng-model='#{model}.directSendBuffer'
+                        )
+                        | Direct send buffer
+                        ignite-form-field-tooltip
+                            | Flag defining whether direct send buffer should be used
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Idle connection timeout:
+                        ignite-form-field-tooltip
+                            | Maximum idle connection timeout upon which a connection to client will be closed
+                        ignite-form-field-input-number(
+                            data-id='idleConnectionTimeout'
+                            data-name='idleConnectionTimeout'
+                            data-ng-model='#{model}.idleConnectionTimeout'
+                            data-placeholder='30000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Connect timeout:
+                        ignite-form-field-tooltip
+                            | Connect timeout used when establishing connection with remote nodes
+                        ignite-form-field-input-number(
+                            data-id='connectTimeout'
+                            data-name='connectTimeout'
+                            data-ng-model='#{model}.connectTimeout'
+                            data-placeholder='5000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Maximum connect timeout:
+                        ignite-form-field-tooltip
+                            | Maximum connect timeout
+                        ignite-form-field-input-number(
+                            data-id='maxConnectTimeout'
+                            data-name='maxConnectTimeout'
+                            data-ng-model='#{model}.maxConnectTimeout'
+                            data-placeholder='600000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Reconnect count:
+                        ignite-form-field-tooltip
+                            | Maximum number of reconnect attempts used when establishing connection with remote nodes
+                        ignite-form-field-input-number(
+                            data-id='comReconnectCount'
+                            data-name='comReconnectCount'
+                            data-ng-model='#{model}.reconnectCount'
+                            data-placeholder='10'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Socket send buffer:
+                        ignite-form-field-tooltip
+                            | Send buffer size for sockets created or accepted by this SPI
+                        ignite-form-field-input-number(
+                            data-id='socketSendBuffer'
+                            data-name='socketSendBuffer'
+                            data-ng-model='#{model}.socketSendBuffer'
+                            data-placeholder='32768'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Socket receive buffer:
+                        ignite-form-field-tooltip
+                            | Receive buffer size for sockets created or accepted by this SPI
+                        ignite-form-field-input-number(
+                            data-id='socketReceiveBuffer'
+                            data-name='socketReceiveBuffer'
+                            data-ng-model='#{model}.socketReceiveBuffer'
+                            data-placeholder='32768'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Message queue limit:
+                        ignite-form-field-tooltip
+                            | Message queue limit for incoming and outgoing messages
+                        ignite-form-field-input-number(
+                            data-id='messageQueueLimit'
+                            data-name='messageQueueLimit'
+                            data-ng-model='#{model}.messageQueueLimit'
+                            data-placeholder='1024'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Slow client queue limit:
+                        ignite-form-field-tooltip
+                            | Slow client queue limit
+                        ignite-form-field-input-number(
+                            data-id='slowClientQueueLimit'
+                            data-name='slowClientQueueLimit'
+                            data-ng-model='#{model}.slowClientQueueLimit'
+                            data-placeholder='0'
+                        )
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='tcpNoDelay'
+                            data-name='tcpNoDelay'
+                            data-ng-model='#{model}.tcpNoDelay'
+                        )
+                        | TCP_NODELAY option
+                        ignite-form-field-tooltip
+                            | Value for TCP_NODELAY socket option
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Ack send threshold:
+                        ignite-form-field-tooltip
+                            | Number of received messages per connection to node after which acknowledgment message is sent
+                        ignite-form-field-input-number(
+                            data-id='ackSendThreshold'
+                            data-name='ackSendThreshold'
+                            data-ng-model='#{model}.ackSendThreshold'
+                            data-placeholder='16'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Unacknowledged messages:
+                        ignite-form-field-tooltip
+                            | Maximum number of stored unacknowledged messages per connection to node
+                        ignite-form-field-input-number(
+                            data-id='unacknowledgedMessagesBufferSize'
+                            data-name='unacknowledgedMessagesBufferSize'
+                            data-ng-model='#{model}.unacknowledgedMessagesBufferSize'
+                            data-placeholder='0'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Socket write timeout:
+                        ignite-form-field-tooltip
+                            | Socket write timeout
+                        ignite-form-field-input-number(
+                            data-id='socketWriteTimeout'
+                            data-name='socketWriteTimeout'
+                            data-ng-model='#{model}.socketWriteTimeout'
+                            data-placeholder='2000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Selectors count:
+                        ignite-form-field-tooltip
+                            | Count of selectors te be used in TCP server
+                        ignite-form-field-input-number(
+                            data-id='selectorsCount'
+                            data-name='selectorsCount'
+                            data-ng-model='#{model}.selectorsCount'
+                            data-placeholder='4'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Address resolver:
+                        ignite-form-field-tooltip
+                            | Address resolver
+                        ignite-form-field-java-class(
+                            data-id='comAddressResolver'
+                            data-name='comAddressResolver'
+                            data-ng-model='#{model}.addressResolver'
+                        )
+            .col-sm-6
+                .preview-panel(ng-init='mode = false')
+                    .preview-legend
+                        a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
+                        |  
+                        a(ng-class='{active: mode, inactive: !mode}' ng-click='mode = true') Java
+                    .preview-content(
+                        ng-if='!preview["communication"].allDefaults && mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "java", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["communication"].java')
+                    .preview-content(
+                        ng-if='!preview["communication"].allDefaults && !mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "xml", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["communication"].xml')
+                    .preview-content-empty(ng-if='preview["communication"].allDefaults')
+                        label All Defaults
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.directive.js
new file mode 100644
index 0000000..6c085b6
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.directive.js
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+import template from './connector.jade!';
+
+export default ['igniteConfigurationClustersConnector', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
new file mode 100644
index 0000000..89cb75c
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/connector.jade
@@ -0,0 +1,281 @@
+//-
+    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.
+
+- var model = 'backupItem.connector'
+
+form.panel.panel-default(name='connector')
+    .panel-heading(bs-collapse-toggle ng-click='__show__ = true')
+        ignite-form-panel-chevron
+        label Connector configuration
+        ignite-form-field-tooltip.tipLabel
+            | REST access configuration
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id='connector')
+        .panel-body(ng-if='__show__')
+            .col-sm-6
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='restEnabled'
+                            data-name='restEnabled'
+                            data-ng-model='#{model}.enabled'
+                        )
+                        | Enabled
+                        ignite-form-field-tooltip
+                            | Flag indicating whether to configure connector configuration
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Jetty configuration path:
+                        ignite-form-field-tooltip
+                            | Path, either absolute or relative to IGNITE_HOME, to Jetty XML configuration file#[br]
+                            | Jetty is used to support REST over HTTP protocol for accessing Ignite APIs remotely#[br]
+                            | If not provided, Jetty instance with default configuration will be started picking IgniteSystemProperties.IGNITE_JETTY_HOST and IgniteSystemProperties.IGNITE_JETTY_PORT as host and port respectively
+                        ignite-form-field-input-text(
+                            data-id='connectorJettyPath'
+                            data-name='connectorJettyPath'
+                            data-ng-model='#{model}.jettyPath'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | TCP host:
+                        ignite-form-field-tooltip
+                            | Host for TCP binary protocol server#[br]
+                            | This can be either an IP address or a domain name#[br]
+                            | If not defined, system-wide local address will be used IgniteConfiguration#getLocalHost()#[br]
+                            | You can also use '0.0.0.0' value to bind to all locally-available IP addresses
+                        ignite-form-field-input-text(
+                            data-id='connectorHost'
+                            data-name='connectorHost'
+                            data-ng-model='#{model}.host'
+                            data-ng-disabled='!#{model}.enabled'
+                            data-placeholder='IgniteConfiguration#getLocalHost()'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | TCP port:
+                        ignite-form-field-tooltip
+                            | Port for TCP binary protocol server
+                        ignite-form-field-input-number(
+                            data-id='connectorPort'
+                            data-name='connectorPort'
+                            data-ng-model='#{model}.port'
+                            data-ng-disabled='!#{model}.enabled'
+                            data-placeholder='11211'
+                            data-min='1024'
+                            data-max='65535'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | TCP port range:
+                        ignite-form-field-tooltip
+                            | Number of ports for TCP binary protocol server to try if configured port is already in use
+                        ignite-form-field-input-number(
+                            data-id='connectorPortRange'
+                            data-name='connectorPortRange'
+                            data-ng-model='#{model}.portRange'
+                            data-placeholder='100'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Idle timeout:
+                        ignite-form-field-tooltip
+                            | Idle timeout for REST server#[br]
+                            | This setting is used to reject half-opened sockets#[br]
+                            | If no packets come within idle timeout, the connection is closed
+                        ignite-form-field-input-number(
+                            data-id='connectorIdleTimeout'
+                            data-name='connectorIdleTimeout'
+                            data-ng-model='#{model}.idleTimeout'
+                            data-placeholder='7000'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Receive buffer size:
+                        ignite-form-field-tooltip
+                            | REST TCP server receive buffer size
+                        ignite-form-field-input-number(
+                            data-id='connectorReceiveBufferSize'
+                            data-name='connectorReceiveBufferSize'
+                            data-ng-model='#{model}.receiveBufferSize'
+                            data-placeholder='32768'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Send buffer size:
+                        ignite-form-field-tooltip
+                            | REST TCP server send buffer size
+                        ignite-form-field-input-number(
+                            data-id='connectorSendBufferSize'
+                            data-name='connectorSendBufferSize'
+                            data-ng-model='#{model}.sendBufferSize'
+                            data-placeholder='32768'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Send queue limit:
+                        ignite-form-field-tooltip
+                            | REST TCP server send queue limit#[br]
+                            | If the limit exceeds, all successive writes will block until the queue has enough capacity
+                        ignite-form-field-input-number(
+                            data-id='connectorSendQueueLimit'
+                            data-name='connectorSendQueueLimit'
+                            data-ng-model='#{model}.sendQueueLimit'
+                            data-placeholder='unlimited'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='connectorDirectBuffer'
+                            data-name='connectorDirectBuffer'
+                            data-ng-model='#{model}.directBuffer'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                        | Direct buffer
+                        ignite-form-field-tooltip
+                            | Flag indicating whether REST TCP server should use direct buffers#[br]
+                            | A direct buffer is a buffer that is allocated and accessed using native system calls, without using JVM heap#[br]
+                            | Enabling direct buffer may improve performance and avoid memory issues (long GC pauses due to huge buffer size)
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='connectorNoDelay'
+                            data-name='connectorNoDelay'
+                            data-ng-model='#{model}.noDelay'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                        | TCP_NODELAY option
+                        ignite-form-field-tooltip
+                            | Flag indicating whether TCP_NODELAY option should be set for accepted client connections#[br]
+                            | Setting this option reduces network latency and should be enabled in majority of cases#[br]
+                            | For more information, see Socket#setTcpNoDelay(boolean)
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Selector count:
+                        ignite-form-field-tooltip
+                            | Number of selector threads in REST TCP server#[br]
+                            | Higher value for this parameter may increase throughput, but also increases context switching
+                        ignite-form-field-input-number(
+                            data-id='connectorSelectorCount'
+                            data-name='connectorSelectorCount'
+                            data-ng-model='#{model}.selectorCount'
+                            data-placeholder='min(4, availableProcessors)'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Thread pool size:
+                        ignite-form-field-tooltip
+                            | Thread pool size to use for processing of client messages (REST requests)
+                        ignite-form-field-input-number(
+                            data-id='connectorThreadPoolSize'
+                            data-name='connectorThreadPoolSize'
+                            data-ng-model='#{model}.threadPoolSize'
+                            data-placeholder='max(8, availableProcessors) * 2'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Message interceptor:
+                        ignite-form-field-tooltip
+                            | Interceptor allows to transform all objects exchanged via REST protocol#[br]
+                            | For example if you use custom serialisation on client you can write interceptor to transform binary representations received from client to Java objects and later access them from java code directly
+                        ignite-form-field-java-class(
+                            data-id='connectorMessageInterceptor'
+                            data-name='connectorMessageInterceptor'
+                            data-ng-model='#{model}.messageInterceptor'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Secret key:
+                        ignite-form-field-tooltip
+                            | Secret key to authenticate REST requests
+                        ignite-form-field-input-text(
+                            data-id='connectorSecretKey'
+                            data-name='connectorSecretKey'
+                            data-ng-model='#{model}.secretKey'
+                            data-ng-disabled='!#{model}.enabled'
+                            data-placeholder='Specify to enable authentication'
+                        )
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='connectorSslEnabled'
+                            data-name='connectorSslEnabled'
+                            data-ng-model='#{model}.sslEnabled'
+                            data-ng-disabled='!#{model}.enabled'
+                        )
+                        | Enable SSL
+                        ignite-form-field-tooltip
+                            | Enables/disables SSL for REST TCP binary protocol
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='connectorSslClientAuth'
+                            data-name='connectorSslClientAuth'
+                            data-ng-model='#{model}.sslClientAuth'
+                            data-ng-disabled='!#{model}.enabled || !#{model}.sslEnabled'
+                        )
+                        | Enable SSL client auth
+                        ignite-form-field-tooltip
+                            | Flag indicating whether or not SSL client authentication is required
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | SSL factory:
+                        ignite-form-field-tooltip
+                            | Instance of Factory that will be used to create an instance of SSLContext for Secure Socket Layer on TCP binary protocol
+                        ignite-form-field-java-class(
+                            data-id='connectorSslFactory'
+                            data-name='connectorSslFactory'
+                            data-ng-model='#{model}.sslFactory'
+                            data-ng-required='#{model}.sslEnabled'
+                            data-ng-disabled='!#{model}.enabled || !#{model}.sslEnabled'
+                        )
+            .col-sm-6
+                .preview-panel(ng-init='mode = false')
+                    .preview-legend
+                        a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
+                        |  
+                        a(ng-class='{active: mode, inactive: !mode}' ng-click='mode = true') Java
+                    .preview-content(
+                        ng-if='!preview["connector"].allDefaults && mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "java", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["connector"].java')
+                    .preview-content(
+                        ng-if='!preview["connector"].allDefaults && !mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "xml", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["connector"].xml')
+                    .preview-content-empty(ng-if='preview["connector"].allDefaults')
+                        label All Defaults
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.directive.js
new file mode 100644
index 0000000..bc71379
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.directive.js
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+import template from './deployment.jade!';
+
+export default ['igniteConfigurationClustersDeployment', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
new file mode 100644
index 0000000..672095e
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/deployment.jade
@@ -0,0 +1,189 @@
+//-
+    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.
+
+- var model = 'backupItem'
+- var exclude = model + '.peerClassLoadingLocalClassPathExclude'
+- var form = 'deployment'
+
+mixin feedback(name, error, message)
+    i.fa.fa-exclamation-triangle.form-control-feedback(
+        ng-show='!#{form}.#{name}.$pristine && #{form}.#{name}.$error.#{error}'
+        bs-tooltip
+        data-title='#{message}'
+    )
+
+form.panel.panel-default(name='#{form}')
+    .panel-heading(bs-collapse-toggle ng-click='__show__ = true')
+        ignite-form-panel-chevron
+        label Class deployment
+        ignite-form-field-tooltip.tipLabel
+            | Task and resources deployment in cluster
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id='deployment')
+        .panel-body(ng-if='__show__')
+            .col-sm-6
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Deployment mode:
+                        ignite-form-field-tooltip
+                            | Task classes and resources sharing mode#[br]
+                            | The following deployment modes are supported:#[br]
+                            ul
+                                li PRIVATE - in this mode deployed classes do not share resources
+                                li ISOLATED - in this mode tasks or classes deployed within the same class loader will share the same instances of resources
+                                li SHARED - same as ISOLATED, but now tasks from different master nodes with the same user version and same class loader will share the same class loader on remote nodes
+                                li CONTINUOUS - same as SHARED deployment mode, but resources will not be undeployed even after all master nodes left grid
+                        ignite-form-field-dropdown(
+                            data-id='deploymentMode'
+                            data-name='deploymentMode'
+                            data-options="deploymentModes"
+                            data-ng-model='#{model}.deploymentMode'
+                            data-placeholder='SHARED'
+                        )
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='peerClassLoadingEnabled'
+                            data-name='peerClassLoadingEnabled'
+                            data-ng-model='#{model}.peerClassLoadingEnabled'
+                        )
+                        | Enable peer class loading
+                        ignite-form-field-tooltip
+                            | Enables/disables peer class loading
+                .settings-row(ng-if='#{model}.peerClassLoadingEnabled')
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Missed resources cache size:
+                        ignite-form-field-tooltip
+                            | If size greater than 0, missed resources will be cached and next resource request ignored
+                            | If size is 0, then request for the resource will be sent to the remote node every time this resource is requested
+                        ignite-form-field-input-number(
+                            data-id='peerClassLoadingMissedResourcesCacheSize'
+                            data-name='peerClassLoadingMissedResourcesCacheSize'
+                            data-ng-model='#{model}.peerClassLoadingMissedResourcesCacheSize'
+                            data-placeholder='100'
+                        )
+                .settings-row(ng-if='#{model}.peerClassLoadingEnabled')
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Pool size:
+                        ignite-form-field-tooltip
+                            | Thread pool size to use for peer class loading
+                        ignite-form-field-input-number(
+                            data-id='peerClassLoadingThreadPoolSize'
+                            data-name='peerClassLoadingThreadPoolSize'
+                            data-ng-model='#{model}.peerClassLoadingThreadPoolSize'
+                            data-placeholder='availableProcessors'
+                        )
+                .settings-row(ng-if='#{model}.peerClassLoadingEnabled')
+                    ignite-form-group(ng-init='__ = {}; ___ = {}' ng-model='#{exclude}' name='peerClassLoadingLocalClassPathExclude' )
+                        ignite-form-field-label
+                            | Local class path exclude
+                        ignite-form-group-tooltip
+                            | List of packages from the system classpath that need to be peer-to-peer loaded from task originating node#[br]
+                            | '*' is supported at the end of the package name which means that all sub-packages and their classes are included like in Java package import clause
+                        ignite-form-group-add(ng-click='(__.add = [{}])')
+                            | Add package name.
+
+                        - var field = 'edit'
+                        - var valid = form + '.' + field + '.$valid'
+                        - var save = exclude + '[$index] = ' + field
+
+                        .group-content(ng-if='#{exclude}.length')
+                            ignite-form-field(ng-repeat='model in #{exclude} track by $index' type='internal' ng-init='')
+                                .indexField
+                                    | {{ $index+1 }}) 
+                                i.tipField.fa.fa-remove(
+                                    ng-hide='___.edit'
+                                    bs-tooltip='"Remove package name"'
+                                    ng-click='#{exclude}.splice(#{exclude}.indexOf(model), 1)'
+                                )
+                                span(ng-hide='___.edit')
+                                    a.labelFormField(ng-click='___.edit = true') {{ model }}
+                                span(ng-if='___.edit' ng-form='form' ng-init='#{field} = model')
+                                    ignite-form-field-input-text(
+                                        data-name='#{field}'
+                                        data-ng-model='#{field}'
+                                        data-ng-required='true'
+                                        data-placeholder='Enter package name'
+                                        data-java-keywords='true'
+                                        data-java-package-name='true'
+                                        data-ignite-unique='#{exclude}'
+                                        data-ignite-form-field-input-autofocus='true'
+                                        on-enter='#{valid} && (#{save}); #{valid} && (___.edit = false);'
+                                        bng-blur='#{valid} && (#{save}); (___.edit = false)'
+                                    )
+                                        i.fa.fa-floppy-o(
+                                            ng-show='#{valid}'
+                                            ng-click='#{valid} && (#{save}); #{valid} && (___.edit = false);'
+                                            bs-tooltip 
+                                            data-title='Click icon or press [Enter] to save item' 
+                                        )
+
+                                        +feedback(field, 'required', 'Package name could not be empty!')
+                                        +feedback(field, 'javaPackageName', 'Package name is invalid!')
+                                        +feedback(field, 'javaKeywords', 'Package name could not contains reserved java keyword: ""!')
+                                        +feedback(field, 'igniteUnique', 'Such package already exists!')
+
+                        - var field = 'new'
+                        - var valid = form + '.' + field + '.$valid'
+                        - var push = exclude + '.push(' + field + ')'
+
+                        .group-content(ng-repeat='field in __.add')
+                            ignite-form-field(type='internal')
+                                ignite-form-field-input-text(
+                                    data-name='#{field}'
+                                    data-ng-model='#{field}'
+                                    data-ng-required='true'
+                                    data-placeholder='Enter package name'
+                                    data-java-keywords='true'
+                                    data-java-package-name='true'
+                                    data-ignite-unique='#{exclude}'
+                                    data-ignite-form-field-input-autofocus='true'
+                                    on-enter='#{valid} && #{push}; #{valid} && (stopblur = true) && (__.add = [{}])'
+                                    bng-blur='#{valid} && #{push}; !stopblur && (__.add = [])'
+                                )
+                                    i.fa.fa-floppy-o(
+                                        ng-show='#{valid}'
+                                        ng-click='#{valid} && #{push}; #{valid} && (__.add = [])'
+                                        bs-tooltip 
+                                        data-title='Click icon or press [Enter] to save item' 
+                                    )
+
+                                    +feedback(field, 'required', 'Package name could not be empty!')
+                                    +feedback(field, 'javaPackageName', 'Package name is invalid!')
+                                    +feedback(field, 'javaKeywords', 'Package name could not contains reserved java keyword: ""!')
+                                    +feedback(field, 'igniteUnique', 'Such package already exists!')
+            
+                        .group-content-empty(ng-if='!(#{exclude}.length) && !__.add.length')
+                            | Not defined
+            .col-sm-6
+                .preview-panel(ng-init='mode = false')
+                    .preview-legend
+                        a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
+                        |  
+                        a(ng-class='{active: mode, inactive: !mode}' ng-click='mode = true') Java
+                    .preview-content(
+                        ng-if='!preview["deployment"].allDefaults && mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "java", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["deployment"].java')
+                    .preview-content(
+                        ng-if='!preview["deployment"].allDefaults && !mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "xml", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["deployment"].xml')
+                    .preview-content-empty(ng-if='preview["deployment"].allDefaults')
+                        label All Defaults
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js
new file mode 100644
index 0000000..f61d625
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+import template from './discovery.jade!';
+
+export default ['igniteConfigurationClustersDiscovery', [() => {
+    return {
+        scope: true,
+        restrict: 'E',
+        template,
+        replace: true
+    };
+}]];

http://git-wip-us.apache.org/repos/asf/ignite/blob/b9e62281/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
new file mode 100644
index 0000000..e6e2a51
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/discovery.jade
@@ -0,0 +1,314 @@
+//-
+    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.
+
+- var model = 'backupItem.discovery'
+
+form.panel.panel-default(name='discovery')
+    .panel-heading(bs-collapse-toggle ng-click='__show__ = true')
+        ignite-form-panel-chevron
+        label Discovery
+        ignite-form-field-tooltip.tipLabel
+            | Discovery properties configuration
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id='discovery')
+        .panel-body(ng-if='__show__')
+            .col-sm-6
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Local address:
+                        ignite-form-field-tooltip
+                            | Local address
+                        ignite-form-field-input-text(
+                            data-id='discoLocalAddress'
+                            data-name='discoLocalAddress'
+                            data-ng-model='#{model}.localAddress'
+                            data-placeholder='228.1.2.4'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Local port:
+                        ignite-form-field-tooltip
+                            | Local port which node uses
+                        ignite-form-field-input-number(
+                            data-id='discoLocalPort'
+                            data-name='discoLocalPort'
+                            data-ng-model='#{model}.localPort'
+                            data-min='1024'
+                            data-max='65535'
+                            data-placeholder='47500'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Local port range:
+                        ignite-form-field-tooltip
+                            | Local port range
+                        ignite-form-field-input-number(
+                            data-id='discoLocalPortRange'
+                            data-name='discoLocalPortRange'
+                            data-ng-model='#{model}.localPortRange'
+                            data-placeholder='100'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Address resolver:
+                        ignite-form-field-tooltip
+                            | Class name of resolution between external and internal addresses provider
+                        ignite-form-field-java-class(
+                            data-id='discoAddressResolver'
+                            data-name='discoAddressResolver'
+                            data-ng-model='#{model}.addressResolver'
+                            data-ng-required='!!#{model}.addressResolver'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Socket timeout:
+                        ignite-form-field-tooltip
+                            | Socket operations timeout
+                        ignite-form-field-input-number(
+                            data-id='socketTimeout'
+                            data-name='socketTimeout'
+                            data-ng-model='#{model}.socketTimeout'
+                            data-placeholder='5000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Acknowledgement timeout:
+                        ignite-form-field-tooltip
+                            | Message acknowledgement timeout
+                        ignite-form-field-input-number(
+                            data-id='ackTimeout'
+                            data-name='ackTimeout'
+                            data-ng-model='#{model}.ackTimeout'
+                            data-placeholder='5000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Max acknowledgement timeout:
+                        ignite-form-field-tooltip
+                            | Maximum message acknowledgement timeout
+                        ignite-form-field-input-number(
+                            data-id='maxAckTimeout'
+                            data-name='maxAckTimeout'
+                            data-ng-model='#{model}.maxAckTimeout'
+                            data-placeholder='600000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Network timeout:
+                        ignite-form-field-tooltip
+                            | Network timeout
+                        ignite-form-field-input-number(
+                            data-id='networkTimeout'
+                            data-name='networkTimeout'
+                            data-ng-model='#{model}.networkTimeout'
+                            data-placeholder='5000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Join timeout:
+                        ignite-form-field-tooltip
+                            | Join timeout
+                        ignite-form-field-input-number(
+                            data-id='joinTimeout'
+                            data-name='joinTimeout'
+                            data-ng-model='#{model}.joinTimeout'
+                            data-placeholder='0'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Thread priority:
+                        ignite-form-field-tooltip
+                            | Thread priority for all threads started by SPI
+                        ignite-form-field-input-number(
+                            data-id='threadPriority'
+                            data-name='threadPriority'
+                            data-ng-model='#{model}.threadPriority'
+                            data-placeholder='10'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Heartbeat frequency:
+                        ignite-form-field-tooltip
+                            | Heartbeat messages issuing frequency
+                        ignite-form-field-input-number(
+                            data-id='heartbeatFrequency'
+                            data-name='heartbeatFrequency'
+                            data-ng-model='#{model}.heartbeatFrequency'
+                            data-placeholder='2000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Max heartbeats miss w/o init:
+                        ignite-form-field-tooltip
+                            | Max heartbeats count node can miss without initiating status check
+                        ignite-form-field-input-number(
+                            data-id='maxMissedHeartbeats'
+                            data-name='maxMissedHeartbeats'
+                            data-ng-model='#{model}.maxMissedHeartbeats'
+                            data-placeholder='1'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Max heartbeats miss w/o failing client node:
+                        ignite-form-field-tooltip
+                            | Max heartbeats count node can miss without failing client node
+                        ignite-form-field-input-number(
+                            data-id='maxMissedClientHeartbeats'
+                            data-name='maxMissedClientHeartbeats'
+                            data-ng-model='#{model}.maxMissedClientHeartbeats'
+                            data-placeholder='5'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Topology history:
+                        ignite-form-field-tooltip
+                            | Size of topology snapshots history
+                        ignite-form-field-input-number(
+                            data-id='topHistorySize'
+                            data-name='topHistorySize'
+                            data-ng-model='#{model}.topHistorySize'
+                            data-placeholder='1000'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Discovery listener:
+                        ignite-form-field-tooltip
+                            | Grid discovery listener
+                        ignite-form-field-java-class(
+                            data-id='discoListener'
+                            data-name='discoListener'
+                            data-ng-model='#{model}.listener'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Data exchange:
+                        ignite-form-field-tooltip
+                            | Class name of handler for initial data exchange between Ignite nodes
+                        ignite-form-field-java-class(
+                            data-id='dataExchange'
+                            data-name='dataExchange'
+                            data-ng-model='#{model}.dataExchange'
+                        )
+                .settings-row
+                   ignite-form-field
+                        ignite-form-field-label
+                            | Metrics provider:
+                        ignite-form-field-tooltip
+                            | Class name of metric provider to discovery SPI
+                        ignite-form-field-java-class(
+                            data-id='metricsProvider'
+                            data-name='metricsProvider'
+                            data-ng-model='#{model}.metricsProvider'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Reconnect count:
+                        ignite-form-field-tooltip
+                            | Reconnect attempts count
+                        ignite-form-field-input-number(
+                            data-id='discoReconnectCount'
+                            data-name='discoReconnectCount'
+                            data-ng-model='#{model}.reconnectCount'
+                            data-placeholder='10'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Statistics frequency:
+                        ignite-form-field-tooltip
+                            | Statistics print frequency
+                        ignite-form-field-input-number(
+                            data-id='statisticsPrintFrequency'
+                            data-name='statisticsPrintFrequency'
+                            data-ng-model='#{model}.statisticsPrintFrequency'
+                            data-placeholder='0'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | IP finder clean frequency:
+                        ignite-form-field-tooltip
+                            | IP finder clean frequency
+                        ignite-form-field-input-number(
+                            data-id='ipFinderCleanFrequency'
+                            data-name='ipFinderCleanFrequency'
+                            data-ng-model='#{model}.ipFinderCleanFrequency'
+                            data-placeholder='60000'
+                        )
+                .settings-row
+                    ignite-form-field
+                        ignite-form-field-label
+                            | Node authenticator:
+                        ignite-form-field-tooltip
+                            | Node authenticator
+                        ignite-form-field-java-class(
+                            data-id='authenticator'
+                            data-name='authenticator'
+                            data-ng-model='#{model}.authenticator'
+                        )
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='forceServerMode'
+                            data-name='forceServerMode'
+                            data-ng-model='#{model}.forceServerMode'
+                        )
+                        | Force server mode
+                        ignite-form-field-tooltip
+                            | Force server mode
+                .settings-row
+                    ignite-form-field.checkbox
+                        ignite-form-field-input-checkbox(
+                            data-id='clientReconnectDisabled'
+                            data-name='clientReconnectDisabled'
+                            data-ng-model='#{model}.clientReconnectDisabled'
+                        )
+                        | Client reconnect disabled
+                        ignite-form-field-tooltip
+                            | Client reconnect disabled
+            .col-sm-6
+                .preview-panel(ng-init='mode = false')
+                    .preview-legend
+                        a(ng-class='{active: !mode, inactive: mode}' ng-click='mode = false') XML
+                        |  
+                        a(ng-class='{active: mode, inactive: !mode}' ng-click='mode = true') Java
+                    .preview-content(
+                        ng-if='!preview["discovery"].allDefaults && mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "java", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["discovery"].java')
+                    .preview-content(
+                        ng-if='!preview["discovery"].allDefaults && !mode'
+                        ui-ace='{onLoad: previewInit, onChange: previewChanged, mode: "xml", rendererOptions: {minLines: group.previewMinLines || 3}}' 
+                        ng-model='preview["discovery"].xml')
+                    .preview-content-empty(ng-if='preview["discovery"].allDefaults')
+                        label All Defaults
\ No newline at end of file


Mime
View raw message