http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/template.tpl.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/template.tpl.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/template.tpl.pug index 4dd0e17..c2bfd68 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/template.tpl.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/template.tpl.pug @@ -18,57 +18,57 @@ include /app/helpers/jade/mixins form(id='cluster' name='ui.inputForm' novalidate ng-submit='$ctrl.save()') .panel-group - include /app/modules/states/configuration/clusters/general + include ./templates/general - include /app/modules/states/configuration/clusters/atomic - include /app/modules/states/configuration/clusters/binary - include /app/modules/states/configuration/clusters/cache-key-cfg - include /app/modules/states/configuration/clusters/checkpoint + include ./templates/atomic + include ./templates/binary + include ./templates/cache-key-cfg + include ./templates/checkpoint //- Since ignite 2.3 - include /app/modules/states/configuration/clusters/client-connector + include ./templates/client-connector - include /app/modules/states/configuration/clusters/collision - include /app/modules/states/configuration/clusters/communication - include /app/modules/states/configuration/clusters/connector - include /app/modules/states/configuration/clusters/deployment + include ./templates/collision + include ./templates/communication + include ./templates/connector + include ./templates/deployment //- Since ignite 2.3 - include /app/modules/states/configuration/clusters/data-storage + include ./templates/data-storage - include /app/modules/states/configuration/clusters/discovery - include /app/modules/states/configuration/clusters/events - include /app/modules/states/configuration/clusters/failover - include /app/modules/states/configuration/clusters/hadoop - include /app/modules/states/configuration/clusters/load-balancing - include /app/modules/states/configuration/clusters/logger - include /app/modules/states/configuration/clusters/marshaller + include ./templates/discovery + include ./templates/events + include ./templates/failover + include ./templates/hadoop + include ./templates/load-balancing + include ./templates/logger + include ./templates/marshaller //- Since ignite 2.0, deprecated in ignite 2.3 - include /app/modules/states/configuration/clusters/memory + include ./templates/memory - include /app/modules/states/configuration/clusters/misc - include /app/modules/states/configuration/clusters/metrics + include ./templates/misc + include ./templates/metrics //- Deprecated in ignite 2.1 - include /app/modules/states/configuration/clusters/odbc + include ./templates/odbc //- Since ignite 2.1, deprecated in ignite 2.3 - include /app/modules/states/configuration/clusters/persistence + include ./templates/persistence //- Deprecated in ignite 2.3 - include /app/modules/states/configuration/clusters/sql-connector + include ./templates/sql-connector - include /app/modules/states/configuration/clusters/service - include /app/modules/states/configuration/clusters/ssl + include ./templates/service + include ./templates/ssl //- Removed in ignite 2.0 - include /app/modules/states/configuration/clusters/swap + include ./templates/swap - include /app/modules/states/configuration/clusters/thread - include /app/modules/states/configuration/clusters/time - include /app/modules/states/configuration/clusters/transactions - include /app/modules/states/configuration/clusters/attributes + include ./templates/thread + include ./templates/time + include ./templates/transactions + include ./templates/attributes .pc-form-actions-panel(n_g-show='$ctrl.$scope.selectedItem') button-preview-project(cluster='$ctrl.cluster' ng-hide='$ctrl.isNew')
http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/atomic.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/atomic.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/atomic.pug new file mode 100644 index 0000000..13424f8 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/atomic.pug @@ -0,0 +1,75 @@ +//- + 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 = 'atomics' +-var model = '$ctrl.clonedCluster.atomicConfiguration' +-var affModel = model + '.affinity' +-var rendezvousAff = affModel + '.kind === "Rendezvous"' +-var customAff = affModel + '.kind === "Custom"' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Atomic configuration + panel-description + | Configuration for atomic data structures. + | 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. + | #[a.link-success(href="https://apacheignite.readme.io/docs/atomic-types" target="_blank") More info] + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-30 + +dropdown('Cache mode:', `${model}.cacheMode`, '"cacheMode"', 'true', 'PARTITIONED', + '[\ + {value: "LOCAL", label: "LOCAL"},\ + {value: "REPLICATED", label: "REPLICATED"},\ + {value: "PARTITIONED", label: "PARTITIONED"}\ + ]', + 'Cache modes:\ + <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>\ + <li>Replicated - in this mode all the keys are distributed to all participating nodes</li>\ + <li>Local - in this mode caches residing on different grid nodes will not know about each other</li>\ + </ul>') + .pc-form-grid-col-30 + +number('Sequence reserve:', `${model}.atomicSequenceReserveSize`, '"atomicSequenceReserveSize"', 'true', '1000', '0', + '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') + .pc-form-grid-col-60(ng-show=`!(${model}.cacheMode && ${model}.cacheMode != "PARTITIONED")`) + +number('Backups:', model + '.backups', '"backups"', 'true', '0', '0', 'Number of backup nodes') + + .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.1.0")') + +dropdown('Function:', `${affModel}.kind`, '"AffinityKind"', 'true', 'Default', '$ctrl.Clusters.affinityFunctions', + 'Key topology resolver to provide mapping from keys to nodes\ + <ul>\ + <li>Rendezvous - Based on Highest Random Weight algorithm<br/></li>\ + <li>Custom - Custom implementation of key affinity function<br/></li>\ + <li>Default - By default rendezvous affinity function with 1024 partitions is used<br/></li>\ + </ul>') + .pc-form-group(ng-if-end ng-if=rendezvousAff + ' || ' + customAff) + .pc-form-grid-row + .pc-form-grid-col-30(ng-if-start=rendezvousAff) + +number-required('Partitions', `${affModel}.Rendezvous.partitions`, '"RendPartitions"', 'true', rendPartitionsRequired, '1024', '1', 'Number of partitions') + .pc-form-grid-col-30 + +java-class('Backup filter', `${affModel}.Rendezvous.affinityBackupFilter`, '"RendAffinityBackupFilter"', 'true', 'false', + 'Backups will be selected from all nodes that pass this filter') + .pc-form-grid-col-60(ng-if-end) + +checkbox('Exclude neighbors', `${affModel}.Rendezvous.excludeNeighbors`, '"RendExcludeNeighbors"', + 'Exclude same - host - neighbors from being backups of each other and specified number of backups') + .pc-form-grid-col-60(ng-if=customAff) + +java-class('Class name:', `${affModel}.Custom.className`, '"AffCustomClassName"', 'true', customAff, + 'Custom key affinity function implementation class name') + .pca-form-column-6 + +preview-xml-java(model, 'clusterAtomics') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/attributes.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/attributes.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/attributes.pug new file mode 100644 index 0000000..b57f1da --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/attributes.pug @@ -0,0 +1,40 @@ +//- + 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 = 'attributes' +-var model = '$ctrl.clonedCluster' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title User attributes + panel-description Configuration for Ignite user attributes. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6 + .ignite-form-field + +ignite-form-field__label('User attributes:', '"userAttributes"') + +tooltip(`User-defined attributes to add to node`) + .ignite-form-field__control + +list-pair-edit({ + items: `${model}.attributes`, + keyLbl: 'Attribute name', + valLbl: 'Attribute value', + itemName: 'attribute', + itemsName: 'attributes' + }) + + .pca-form-column-6 + +preview-xml-java(model, 'clusterUserAttributes') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug new file mode 100644 index 0000000..6c1b246 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug @@ -0,0 +1,80 @@ +//- + 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 = 'binary' +-var model = '$ctrl.clonedCluster.binaryConfiguration' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Binary configuration + panel-description + | Configuration of specific binary types. + | #[a.link-success(href="https://apacheignite.readme.io/docs/binary-marshaller" target="_blank") More info] + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +java-class('ID mapper:', model + '.idMapper', '"idMapper"', 'true', 'false', + 'Maps given from BinaryNameMapper type and filed name to ID that will be used by Ignite in internals<br/>\ + Ignite never writes full strings for field or type names. Instead, for performance reasons, Ignite writes integer hash codes for type/class and field names. It has been tested that hash code conflicts for the type/class 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</b> allows to override the automatically generated hash code IDs for the type and field names') + .pc-form-grid-col-60 + +java-class('Name mapper:', model + '.nameMapper', '"nameMapper"', 'true', 'false', 'Maps type/class and field names to different names') + .pc-form-grid-col-60 + +java-class('Serializer:', model + '.serializer', '"serializer"', 'true', 'false', 'Class with custom serialization logic for binary objects') + .pc-form-grid-col-60 + .ignite-form-field + +ignite-form-field__label('Type configurations:', '"typeСonfigurations"') + +tooltip(`Configuration properties for binary types`) + .ignite-form-field__control + -var items = model + '.typeConfigurations' + list-editable(ng-model=items name='typeСonfigurations') + list-editable-item-edit.pc-form-grid-row + - form = '$parent.form' + .pc-form-grid-col-60 + +java-class-autofocus('Type name:', '$item.typeName', '"typeName"', 'true', 'true', 'true', 'Type name')( + ignite-unique=items + ignite-unique-property='typeName' + ) + +unique-feedback(`$item.typeName`, 'Type name should be unique.') + .pc-form-grid-col-60 + +java-class('ID mapper:', '$item.idMapper', '"idMapper"', 'true', 'false', + 'Maps given from BinaryNameMapper type and filed name to ID that will be used by Ignite in internals<br/>\ + Ignite never writes full strings for field or type/class names.\ + Instead, for performance reasons, Ignite writes integer hash codes for type/class and field names.\ + It has been tested that hash code conflicts for the type/class 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</b> allows to override the automatically generated hash code IDs for the type and field names') + .pc-form-grid-col-60 + +java-class('Name mapper:', '$item.nameMapper', '"nameMapper"', 'true', 'false', + 'Maps type/class and field names to different names') + .pc-form-grid-col-60 + +java-class('Serializer:', '$item.serializer', '"serializer"', 'true', 'false', + 'Class with custom serialization logic for binary object') + .pc-form-grid-col-60 + +checkbox('Enum', '$item.enum', 'enum', 'Flag indicating that this type is the enum') + + list-editable-no-items + list-editable-add-item-button( + add-item=`$ctrl.Clusters.addBinaryTypeConfiguration($ctrl.clonedCluster)` + label-single='configuration' + label-multiple='configurations' + ) + + - form = 'binary' + .pc-form-grid-col-60 + +checkbox('Compact footer', model + '.compactFooter', '"compactFooter"', 'When enabled, Ignite will not write fields metadata when serializing objects (this will increase serialization performance), because internally <b>BinaryMarshaller</b> already distribute metadata inside cluster') + .pca-form-column-6 + +preview-xml-java(model, 'clusterBinary') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/cache-key-cfg.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/cache-key-cfg.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/cache-key-cfg.pug new file mode 100644 index 0000000..abc8ff1 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/cache-key-cfg.pug @@ -0,0 +1,63 @@ +//- + 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 = 'cacheKeyCfg' +-var model = '$ctrl.clonedCluster.cacheKeyConfiguration' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Cache key configuration + panel-description + | Cache key configuration allows to collocate objects in a partitioned cache based on field in cache key without explicit usage of annotations on user classes. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6 + mixin clusters-cache-key-cfg + .ignite-form-field + +ignite-form-field__label('Cache key configuration:', '"cacheKeyConfiguration"') + .ignite-form-field__control + -let items = model + list-editable(ng-model=items name='cacheKeyConfiguration') + list-editable-item-edit.pc-form-grid-row + - form = '$parent.form' + .pc-form-grid-col-60 + +java-class-autofocus('Type name:', '$item.typeName', '"cacheKeyTypeName"', 'true', 'true', 'true', 'Type name')( + ignite-unique=items + ignite-unique-property='typeName' + ) + +unique-feedback(`cacheKeyTypeName`, 'Type name should be unique.') + .pc-form-grid-col-60 + +sane-ignite-form-field-text({ + label: 'Affinity key field name:', + model: '$item.affinityKeyFieldName', + name: '"affinityKeyFieldName"', + disabled: 'false', + placeholder: 'Enter field name', + tip: 'Affinity key field name', + required: true + }) + + list-editable-no-items + list-editable-add-item-button( + add-item=`(${items} = ${items} || []).push({})` + label-single='configuration' + label-multiple='configurations' + ) + + +clusters-cache-key-cfg + + .pca-form-column-6 + +preview-xml-java(model, 'clusterCacheKeyConfiguration') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint.pug new file mode 100644 index 0000000..b00c98c --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint.pug @@ -0,0 +1,82 @@ +//- + 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 = 'checkpoint' +-var model = '$ctrl.clonedCluster.checkpointSpi' +-var CustomCheckpoint = '$checkpointSPI.kind === "Custom"' +-var CacheCheckpoint = '$checkpointSPI.kind === "Cache"' + +panel-collapsible(ng-form=form) + panel-title Checkpointing + panel-description + | Checkpointing provides an ability to save an intermediate job state. + | #[a.link-success(href="https://apacheignite.readme.io/docs/checkpointing" target="_blank") More info] + panel-content.pca-form-row + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + .ignite-form-field + +ignite-form-field__label('Checkpoint SPI configurations:', '"checkpointSPIConfigurations"') + .ignite-form-field__control + list-editable(ng-model=model name='checkpointSPIConfigurations') + list-editable-item-edit(item-name='$checkpointSPI').pc-form-grid-row + .pc-form-grid-col-60 + +dropdown-required('Checkpoint SPI:', '$checkpointSPI.kind', '"checkpointKind"', 'true', 'true', 'Choose checkpoint configuration variant', '[\ + {value: "FS", label: "File System"},\ + {value: "Cache", label: "Cache"},\ + {value: "S3", label: "Amazon S3"},\ + {value: "JDBC", label: "Database"},\ + {value: "Custom", label: "Custom"}\ + ]', + 'Provides an ability to save an intermediate job state\ + <ul>\ + <li>File System - Uses a shared file system to store checkpoints</li>\ + <li>Cache - Uses a cache to store checkpoints</li>\ + <li>Amazon S3 - Uses Amazon S3 to store checkpoints</li>\ + <li>Database - Uses a database to store checkpoints</li>\ + <li>Custom - Custom checkpoint SPI implementation</li>\ + </ul>') + + include ./checkpoint/fs + + .pc-form-grid-col-60(ng-if-start=CacheCheckpoint) + +dropdown-required-empty('Cache:', '$checkpointSPI.Cache.cache', '"checkpointCacheCache"', 'true', CacheCheckpoint, + 'Choose cache', 'No caches configured for current cluster', '$ctrl.cachesMenu', 'Cache to use for storing checkpoints')( + pc-is-in-collection='$ctrl.clonedCluster.caches' + ) + +form-field-feedback(form, 'isInCollection', `Cluster doesn't have such a cache`) + .pc-form-grid-col-60(ng-if-end) + +java-class('Listener:', '$checkpointSPI.Cache.checkpointListener', '"checkpointCacheListener"', 'true', 'false', + 'Checkpoint listener implementation class name', CacheCheckpoint) + + include ./checkpoint/s3 + + include ./checkpoint/jdbc + + .pc-form-grid-col-60(ng-if=CustomCheckpoint) + +java-class('Class name:', '$checkpointSPI.Custom.className', '"checkpointCustomClassName"', 'true', CustomCheckpoint, + 'Custom CheckpointSpi implementation class', CustomCheckpoint) + + list-editable-no-items + list-editable-add-item-button( + add-item=`$edit($ctrl.Clusters.addCheckpointSPI($ctrl.clonedCluster))` + label-single='checkpoint SPI configuration' + label-multiple='checkpoint SPI configurations' + ) + + .pca-form-column-6 + +preview-xml-java('$ctrl.clonedCluster', 'clusterCheckpoint', '$ctrl.caches') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/fs.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/fs.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/fs.pug new file mode 100644 index 0000000..0359cf3 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/fs.pug @@ -0,0 +1,36 @@ +//- + 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 + +.pc-form-grid-col-60(ng-if-start='$checkpointSPI.kind === "FS"') + .ignite-form-field + +list-text-field({ + items: `$checkpointSPI.FS.directoryPaths`, + lbl: 'Directory path', + name: 'directoryPath', + itemName: 'path', + itemsName: 'paths' + })( + list-editable-cols=`::[{ + name: 'Paths:', + tip: 'Paths to a shared directory where checkpoints will be stored' + }]` + ) + +unique-feedback(_, 'Such path already exists!') + +.pc-form-grid-col-60(ng-if-end) + +java-class('Listener:', '$checkpointSPI.FS.checkpointListener', '"checkpointFsListener"', 'true', 'false', 'Checkpoint listener implementation class name', '$checkpointSPI.kind === "FS"') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/jdbc.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/jdbc.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/jdbc.pug new file mode 100644 index 0000000..00a8681 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/jdbc.pug @@ -0,0 +1,47 @@ +//- + 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 jdbcCheckpoint = '$checkpointSPI.kind === "JDBC"' + +.pc-form-grid-col-30(ng-if-start='$checkpointSPI.kind === "JDBC"') + +text('Data source bean name:', '$checkpointSPI.JDBC.dataSourceBean', '"checkpointJdbcDataSourceBean"', jdbcCheckpoint, 'Input bean name', + 'Name of the data source bean in Spring context') +.pc-form-grid-col-30 + +dialect('Dialect:', '$checkpointSPI.JDBC.dialect', '"checkpointJdbcDialect"', jdbcCheckpoint, + 'Dialect of SQL implemented by a particular RDBMS:', 'Generic JDBC dialect', 'Choose JDBC dialect') +.pc-form-grid-col-60 + +java-class('Listener:', '$checkpointSPI.JDBC.checkpointListener', '"checkpointJdbcListener"', 'true', 'false', + 'Checkpoint listener implementation class name', jdbcCheckpoint) +.pc-form-grid-col-60 + +text('User:', '$checkpointSPI.JDBC.user', '"checkpointJdbcUser"', 'false', 'Input user name', 'Checkpoint jdbc user name') +.pc-form-grid-col-30 + +text('Table name:', '$checkpointSPI.JDBC.checkpointTableName', '"checkpointJdbcCheckpointTableName"', 'false', 'CHECKPOINTS', 'Checkpoint table name') +.pc-form-grid-col-30 + +number('Number of retries:', '$checkpointSPI.JDBC.numberOfRetries', '"checkpointJdbcNumberOfRetries"', 'true', '2', '0', 'Number of retries in case of DB failure') +.pc-form-grid-col-30 + +text('Key field name:', '$checkpointSPI.JDBC.keyFieldName', '"checkpointJdbcKeyFieldName"', 'false', 'NAME', 'Checkpoint key field name') +.pc-form-grid-col-30 + +dropdown('Key field type:', '$checkpointSPI.JDBC.keyFieldType', '"checkpointJdbcKeyFieldType"', 'true', 'VARCHAR', '::$ctrl.supportedJdbcTypes', 'Checkpoint key field type') +.pc-form-grid-col-30 + +text('Value field name:', '$checkpointSPI.JDBC.valueFieldName', '"checkpointJdbcValueFieldName"', 'false', 'VALUE', 'Checkpoint value field name') +.pc-form-grid-col-30 + +dropdown('Value field type:', '$checkpointSPI.JDBC.valueFieldType', '"checkpointJdbcValueFieldType"', 'true', 'BLOB', '::$ctrl.supportedJdbcTypes', 'Checkpoint value field type') +.pc-form-grid-col-30 + +text('Expire date field name:', '$checkpointSPI.JDBC.expireDateFieldName', '"checkpointJdbcExpireDateFieldName"', 'false', 'EXPIRE_DATE', 'Checkpoint expire date field name') +.pc-form-grid-col-30(ng-if-end) + +dropdown('Expire date field type:', '$checkpointSPI.JDBC.expireDateFieldType', '"checkpointJdbcExpireDateFieldType"', 'true', 'DATETIME', '::$ctrl.supportedJdbcTypes', 'Checkpoint expire date field type') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug new file mode 100644 index 0000000..8e284fc --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/checkpoint/s3.pug @@ -0,0 +1,204 @@ +//- + 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 credentialsModel = '$checkpointSPI.S3.awsCredentials' +-var clientCfgModel = '$checkpointSPI.S3.clientConfiguration' +-var checkpointS3 = '$checkpointSPI.kind === "S3"' +-var checkpointS3Path = checkpointS3 + ' && $checkpointSPI.S3.awsCredentials.kind === "Properties"' +-var checkpointS3Custom = checkpointS3 + ' && $checkpointSPI.S3.awsCredentials.kind === "Custom"' + +-var clientRetryModel = clientCfgModel + '.retryPolicy' +-var checkpointS3DefaultMaxRetry = checkpointS3 + ' && ' + clientRetryModel + '.kind === "DefaultMaxRetries"' +-var checkpointS3DynamoDbMaxRetry = checkpointS3 + ' && ' + clientRetryModel + '.kind === "DynamoDBMaxRetries"' +-var checkpointS3CustomRetry = checkpointS3 + ' && ' + clientRetryModel + '.kind === "Custom"' + +.pc-form-grid-col-60(ng-if-start='$checkpointSPI.kind === "S3"') + +dropdown-required('AWS credentials:', '$checkpointSPI.S3.awsCredentials.kind', '"checkpointS3AwsCredentials"', 'true', checkpointS3, 'Custom', '[\ + {value: "Basic", label: "Basic"},\ + {value: "Properties", label: "Properties"},\ + {value: "Anonymous", label: "Anonymous"},\ + {value: "BasicSession", label: "Basic with session"},\ + {value: "Custom", label: "Custom"}\ + ]', + 'AWS credentials\ + <ul>\ + <li>Basic - Allows callers to pass in the AWS access key and secret access in the constructor</li>\ + <li>Properties - Reads in AWS access keys from a properties file</li>\ + <li>Anonymous - Allows use of "anonymous" credentials</li>\ + <li>Database - Session credentials with keys and session token</li>\ + <li>Custom - Custom AWS credentials provider</li>\ + </ul>') +.pc-form-group.pc-form-grid-row(ng-if=checkpointS3Path) + .pc-form-grid-col-60 + +text('Path:', credentialsModel + '.Properties.path', '"checkpointS3PropertiesPath"', checkpointS3Path, 'Input properties file path', + 'The file from which to read the AWS credentials properties') +.pc-form-group.pc-form-grid-row(ng-if=checkpointS3Custom) + .pc-form-grid-col-60 + +java-class('Class name:', credentialsModel + '.Custom.className', '"checkpointS3CustomClassName"', 'true', checkpointS3Custom, + 'Custom AWS credentials provider implementation class', checkpointS3Custom) +.pc-form-grid-col-60 + label Note, AWS credentials will be generated as stub +.pc-form-grid-col-60 + +text('Bucket name suffix:', '$checkpointSPI.S3.bucketNameSuffix', '"checkpointS3BucketNameSuffix"', 'false', 'default-bucket') +.pc-form-grid-col-60(ng-if-start=`$ctrl.available("2.4.0")`) + +text('Bucket endpoint:', `$checkpointSPI.S3.bucketEndpoint`, '"checkpointS3BucketEndpoint"', false, 'Input bucket endpoint', + 'Bucket endpoint for IP finder<br/> \ + For information about possible endpoint names visit <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">docs.aws.amazon.com</a>') +.pc-form-grid-col-60(ng-if-end) + +text('SSE algorithm:', `$checkpointSPI.S3.SSEAlgorithm`, '"checkpointS3SseAlgorithm"', false, 'Input SSE algorithm', + 'Server-side encryption algorithm for Amazon S3-managed encryption keys<br/> \ + For information about possible S3-managed encryption keys visit <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">docs.aws.amazon.com</a>') +.pc-form-grid-col-60 + +java-class('Listener:', '$checkpointSPI.S3.checkpointListener', '"checkpointS3Listener"', 'true', 'false', + 'Checkpoint listener implementation class name', checkpointS3) +.pc-form-grid-col-60.pc-form-group__text-title + span Client configuration +.pc-form-group.pc-form-grid-row(ng-if-end) + .pc-form-grid-col-30 + +dropdown('Protocol:', clientCfgModel + '.protocol', '"checkpointS3Protocol"', 'true', 'HTTPS', '[\ + {value: "HTTP", label: "HTTP"},\ + {value: "HTTPS", label: "HTTPS"}\ + ]', + 'Provides an ability to save an intermediate job state\ + <ul>\ + <li>HTTP - Using the HTTP protocol is less secure than HTTPS, but can slightly reduce\ + the system resources used when communicating with AWS</li>\ + <li>HTTPS - Using the HTTPS protocol is more secure than using the HTTP protocol, but\ + may use slightly more system resources. AWS recommends using HTTPS for maximize security</li>\ + </ul>') + .pc-form-grid-col-30 + +number('Maximum connections:', clientCfgModel + '.maxConnections', '"checkpointS3MaxConnections"', + 'true', '50', '1', 'Maximum number of allowed open HTTP connections') + .pc-form-grid-col-60 + +text('User agent prefix:', clientCfgModel + '.userAgentPrefix', '"checkpointS3UserAgentPrefix"', 'false', 'System specific header', + 'HTTP user agent prefix to send with all requests') + .pc-form-grid-col-60 + +text('User agent suffix:', clientCfgModel + '.userAgentSuffix', '"checkpointS3UserAgentSuffix"', 'false', 'System specific header', + 'HTTP user agent suffix to send with all requests') + .pc-form-grid-col-60 + +text-ip-address('Local address:', clientCfgModel + '.localAddress', '"checkpointS3LocalAddress"', 'true', 'Not specified', + 'Optionally specifies the local address to bind to') + .pc-form-grid-col-40 + +text('Proxy host:', clientCfgModel + '.proxyHost', '"checkpointS3ProxyHost"', 'false', 'Not specified', + 'Optional proxy host the client will connect through') + .pc-form-grid-col-20 + +number('Proxy port:', clientCfgModel + '.proxyPort', '"checkpointS3ProxyPort"', 'true', 'Not specified', '0', + 'Optional proxy port the client will connect through') + .pc-form-grid-col-30 + +text('Proxy user:', clientCfgModel + '.proxyUsername', '"checkpointS3ProxyUsername"', 'false', 'Not specified', + 'Optional proxy user name to use if connecting through a proxy') + .pc-form-grid-col-30 + +text('Proxy domain:', clientCfgModel + '.proxyDomain', '"checkpointS3ProxyDomain"', 'false', 'Not specified', + 'Optional Windows domain name for configuring an NTLM proxy') + .pc-form-grid-col-60 + +text('Proxy workstation:', clientCfgModel + '.proxyWorkstation', '"checkpointS3ProxyWorkstation"', 'false', 'Not specified', + 'Optional Windows workstation name for configuring NTLM proxy support') + .pc-form-grid-col-60 + +text('Non proxy hosts:', clientCfgModel + '.nonProxyHosts', '"checkpointS3NonProxyHosts"', 'false', 'Not specified', + 'Optional hosts the client will access without going through the proxy') + .pc-form-grid-col-60 + +dropdown('Retry policy:', clientRetryModel + '.kind', '"checkpointS3RetryPolicy"', 'true', 'Default', '[\ + {value: "Default", label: "Default SDK retry policy"},\ + {value: "DefaultMaxRetries", label: "Default with the specified max retry count"},\ + {value: "DynamoDB", label: "Default for DynamoDB client"},\ + {value: "DynamoDBMaxRetries", label: "DynamoDB with the specified max retry count"},\ + {value: "Custom", label: "Custom configured"}\ + ]', + 'Provides an ability to save an intermediate job state\ + <ul>\ + <li>SDK default retry policy - This policy will honor the maxErrorRetry set in ClientConfiguration</li>\ + <li>Default with the specified max retry count - Default SDK retry policy with the specified max retry count</li>\ + <li>Default for DynamoDB client - This policy will honor the maxErrorRetry set in ClientConfiguration</li>\ + <li>DynamoDB with the specified max retry count - This policy will honor the maxErrorRetry set in ClientConfiguration with the specified max retry count</li>\ + <li>Custom configured - Custom configured SDK retry policy</li>\ + </ul>') + .pc-form-group.pc-form-grid-row(ng-if=checkpointS3DefaultMaxRetry) + .pc-form-grid-col-60 + +number-required('Maximum retry attempts:', clientRetryModel + '.DefaultMaxRetries.maxErrorRetry', '"checkpointS3DefaultMaxErrorRetry"', 'true', checkpointS3DefaultMaxRetry, '-1', '1', + 'Maximum number of retry attempts for failed requests') + .pc-form-group.pc-form-grid-row(ng-if=checkpointS3DynamoDbMaxRetry) + .pc-form-grid-col-60 + +number-required('Maximum retry attempts:', clientRetryModel + '.DynamoDBMaxRetries.maxErrorRetry', '"checkpointS3DynamoDBMaxErrorRetry"', 'true', checkpointS3DynamoDbMaxRetry, '-1', '1', + 'Maximum number of retry attempts for failed requests') + .pc-form-group.pc-form-grid-row(ng-if=checkpointS3CustomRetry) + .pc-form-grid-col-60 + +java-class('Retry condition:', clientRetryModel + '.Custom.retryCondition', '"checkpointS3CustomRetryPolicy"', 'true', checkpointS3CustomRetry, + 'Retry condition on whether a specific request and exception should be retried', checkpointS3CustomRetry) + .pc-form-grid-col-60 + +java-class('Backoff strategy:', clientRetryModel + '.Custom.backoffStrategy', '"checkpointS3CustomBackoffStrategy"', 'true', checkpointS3CustomRetry, + 'Back-off strategy for controlling how long the next retry should wait', checkpointS3CustomRetry) + .pc-form-grid-col-60 + +number-required('Maximum retry attempts:', clientRetryModel + '.Custom.maxErrorRetry', '"checkpointS3CustomMaxErrorRetry"', 'true', checkpointS3CustomRetry, '-1', '1', + 'Maximum number of retry attempts for failed requests') + .pc-form-grid-col-60 + +checkbox('Honor the max error retry set', clientRetryModel + '.Custom.honorMaxErrorRetryInClientConfig', '"checkpointS3CustomHonorMaxErrorRetryInClientConfig"', + 'Whether this retry policy should honor the max error retry set by ClientConfiguration#setMaxErrorRetry(int)') + .pc-form-grid-col-60 + +number('Maximum retry attempts:', clientCfgModel + '.maxErrorRetry', '"checkpointS3MaxErrorRetry"', 'true', '-1', '0', + 'Maximum number of retry attempts for failed retryable requests<br/>\ + If -1 the configured RetryPolicy will be used to control the retry count') + .pc-form-grid-col-30 + +number('Socket timeout:', clientCfgModel + '.socketTimeout', '"checkpointS3SocketTimeout"', 'true', '50000', '0', + 'Amount of time in milliseconds to wait for data to be transfered over an established, open connection before the connection times out and is closed<br/>\ + A value of <b>0</b> means infinity') + .pc-form-grid-col-30 + +number('Connection timeout:', clientCfgModel + '.connectionTimeout', '"checkpointS3ConnectionTimeout"', 'true', '50000', '0', + 'Amount of time in milliseconds to wait when initially establishing a connection before giving up and timing out<br/>\ + A value of <b>0</b> means infinity') + .pc-form-grid-col-30 + +number('Request timeout:', clientCfgModel + '.requestTimeout', '"checkpointS3RequestTimeout"', 'true', '0', '-1', + 'Amount of time in milliseconds to wait for the request to complete before giving up and timing out<br/>\ + A non - positive value means infinity') + .pc-form-grid-col-30 + +number('Idle timeout:', clientCfgModel + '.connectionMaxIdleMillis', '"checkpointS3ConnectionMaxIdleMillis"', 'true', '60000', '0', + 'Maximum amount of time that an idle connection may sit in the connection pool and still be eligible for reuse') + .pc-form-grid-col-30 + +text('Signature algorithm:', clientCfgModel + '.signerOverride', '"checkpointS3SignerOverride"', 'false', 'Not specified', + 'Name of the signature algorithm to use for signing requests made by this client') + .pc-form-grid-col-30 + +number('Connection TTL:', clientCfgModel + '.connectionTTL', '"checkpointS3ConnectionTTL"', 'true', '-1', '-1', + 'Expiration time in milliseconds for a connection in the connection pool<br/>\ + By default, it is set to <b>-1</b>, i.e. connections do not expire') + .pc-form-grid-col-60 + +java-class('DNS resolver:', clientCfgModel + '.dnsResolver', '"checkpointS3DnsResolver"', 'true', 'false', + 'DNS Resolver that should be used to for resolving AWS IP addresses', checkpointS3) + .pc-form-grid-col-60 + +number('Response metadata cache size:', clientCfgModel + '.responseMetadataCacheSize', '"checkpointS3ResponseMetadataCacheSize"', 'true', '50', '0', + 'Response metadata cache size') + .pc-form-grid-col-60 + +java-class('SecureRandom class name:', clientCfgModel + '.secureRandom', '"checkpointS3SecureRandom"', 'true', 'false', + 'SecureRandom to be used by the SDK class name', checkpointS3) + .pc-form-grid-col-60 + +number('Client execution timeout:', clientCfgModel + '.clientExecutionTimeout', '"checkpointS3ClientExecutionTimeout"', 'true', '0', '0', + 'Amount of time in milliseconds to allow the client to complete the execution of an API call<br/>\ + <b>0</b> value disables that feature') + .pc-form-grid-col-60 + +checkbox('Cache response metadata', clientCfgModel + '.cacheResponseMetadata', '"checkpointS3CacheResponseMetadata"', 'Cache response metadata') + .pc-form-grid-col-60 + +checkbox('Use expect continue', clientCfgModel + '.useExpectContinue', '"checkpointS3UseExpectContinue"', 'Optional override to enable/disable support for HTTP/1.1 handshake utilizing EXPECT: 100-Continue') + .pc-form-grid-col-60 + +checkbox('Use throttle retries', clientCfgModel + '.useThrottleRetries', '"checkpointS3UseThrottleRetries"', 'Retry throttling will be used') + .pc-form-grid-col-60 + +checkbox('Use reaper', clientCfgModel + '.useReaper', '"checkpointS3UseReaper"', 'Checks if the IdleConnectionReaper is to be started') + .pc-form-grid-col-60 + +checkbox('Use GZIP', clientCfgModel + '.useGzip', '"checkpointS3UseGzip"', 'Checks if gzip compression is used') + .pc-form-grid-col-60 + +checkbox('Preemptively basic authentication', clientCfgModel + '.preemptiveBasicProxyAuth', '"checkpointS3PreemptiveBasicProxyAuth"', + 'Attempt to authenticate preemptively against proxy servers using basic authentication') + .pc-form-grid-col-60 + +checkbox('TCP KeepAlive', clientCfgModel + '.useTcpKeepAlive', '"checkpointS3UseTcpKeepAlive"', 'TCP KeepAlive support is enabled') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug new file mode 100644 index 0000000..d27fa14 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/client-connector.pug @@ -0,0 +1,76 @@ +//- + 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 = 'clientConnector' +-var model = '$ctrl.clonedCluster' +-var connectionModel = `${model}.clientConnectorConfiguration` +-var connectionEnabled = `${connectionModel}.enabled` +-var sslEnabled = `${connectionEnabled} && ${connectionModel}.sslEnabled` +-var sslFactoryEnabled = `${sslEnabled} && !${connectionModel}.useIgniteSslContextFactory` + +panel-collapsible(ng-show='$ctrl.available("2.3.0")' ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Client connector configuration + panel-content.pca-form-row(ng-if=`$ctrl.available("2.3.0") && ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +checkbox('Enabled', connectionEnabled, '"ClientConnectorEnabled"', 'Flag indicating whether to configure client connector configuration') + .pc-form-grid-col-40 + +text-enabled('Host:', `${connectionModel}.host`, '"ClientConnectorHost"', connectionEnabled, 'false', 'localhost') + .pc-form-grid-col-20 + +number('Port:', `${connectionModel}.port`, '"ClientConnectorPort"', connectionEnabled, '10800', '1025') + .pc-form-grid-col-20 + +number('Port range:', `${connectionModel}.portRange`, '"ClientConnectorPortRange"', connectionEnabled, '100', '0') + .pc-form-grid-col-20 + +number('Socket send buffer size:', `${connectionModel}.socketSendBufferSize`, '"ClientConnectorSocketSendBufferSize"', connectionEnabled, '0', '0', + 'Socket send buffer size<br/>\ + When set to <b>0</b>, operation system default will be used') + .pc-form-grid-col-20 + +number('Socket receive buffer size:', `${connectionModel}.socketReceiveBufferSize`, '"ClientConnectorSocketReceiveBufferSize"', connectionEnabled, '0', '0', + 'Socket receive buffer size<br/>\ + When set to <b>0</b>, operation system default will be used') + .pc-form-grid-col-30 + +number('Max connection cursors:', `${connectionModel}.maxOpenCursorsPerConnection`, '"ClientConnectorMaxOpenCursorsPerConnection"', connectionEnabled, '128', '0', + 'Max number of opened cursors per connection') + .pc-form-grid-col-30 + +number('Pool size:', `${connectionModel}.threadPoolSize`, '"ClientConnectorThreadPoolSize"', connectionEnabled, 'max(8, availableProcessors)', '1', + 'Size of thread pool that is in charge of processing SQL requests') + .pc-form-grid-col-60 + +checkbox-enabled('TCP_NODELAY option', `${connectionModel}.tcpNoDelay`, '"ClientConnectorTcpNoDelay"', connectionEnabled) + .pc-form-grid-col-60(ng-if='$ctrl.available("2.4.0")') + +number('Idle timeout:', `${connectionModel}.idleTimeout`, '"ClientConnectorIdleTimeout"', connectionEnabled, '0', '-1', + 'Idle timeout for client connections<br/>\ + Zero or negative means no timeout') + .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.5.0")') + +checkbox-enabled('Enable SSL', `${connectionModel}.sslEnabled`, '"ClientConnectorSslEnabled"', connectionEnabled, 'Enable secure socket layer on client connector') + .pc-form-grid-col-60 + +checkbox-enabled('Enable SSL client auth', `${connectionModel}.sslClientAuth`, '"ClientConnectorSslClientAuth"', sslEnabled, 'Flag indicating whether or not SSL client authentication is required') + .pc-form-grid-col-60 + +checkbox-enabled('Use Ignite SSL', `${connectionModel}.useIgniteSslContextFactory`, '"ClientConnectorUseIgniteSslContextFactory"', sslEnabled, 'Use SSL factory Ignite configuration') + .pc-form-grid-col-60(ng-if-end) + +java-class('SSL factory:', `${connectionModel}.sslContextFactory`, '"ClientConnectorSslContextFactory"', sslFactoryEnabled, sslFactoryEnabled, + 'If SSL factory specified then replication will be performed through secure SSL channel created with this factory<br/>\ + If not present <b>isUseIgniteSslContextFactory()</b> flag will be evaluated<br/>\ + If set to <b>true</b> and <b>IgniteConfiguration#getSslContextFactory()</b> exists, then Ignite SSL context factory will be used to establish secure connection') + .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.4.0")') + +checkbox-enabled('JDBC Enabled', `${connectionModel}.jdbcEnabled`, '"ClientConnectorJdbcEnabled"', connectionEnabled, 'Access through JDBC is enabled') + .pc-form-grid-col-60 + +checkbox-enabled('ODBC Enabled', `${connectionModel}.odbcEnabled`, '"ClientConnectorOdbcEnabled"', connectionEnabled, 'Access through ODBC is enabled') + .pc-form-grid-col-60(ng-if-end) + +checkbox-enabled('Thin client enabled', `${connectionModel}.thinClientEnabled`, '"ClientConnectorThinCliEnabled"', connectionEnabled, 'Access through thin client is enabled') + .pca-form-column-6 + +preview-xml-java(model, 'clusterClientConnector') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug new file mode 100644 index 0000000..c315af1 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision.pug @@ -0,0 +1,58 @@ +//- + 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 = 'collision' +-var model = '$ctrl.clonedCluster.collision' +-var modelCollisionKind = model + '.kind'; + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Collision configuration + panel-description + | Configuration Collision SPI allows to regulate how grid jobs get executed when they arrive on a destination node for execution. + | #[a.link-success(href="https://apacheignite.readme.io/docs/job-scheduling" target="_blank") More info] + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +dropdown('CollisionSpi:', modelCollisionKind, '"collisionKind"', 'true', '', + '[\ + {value: "JobStealing", label: "Job stealing"},\ + {value: "FifoQueue", label: "FIFO queue"},\ + {value: "PriorityQueue", label: "Priority queue"},\ + {value: "Custom", label: "Custom"},\ + {value: "Noop", label: "Default"}\ + ]', + 'Regulate how grid jobs get executed when they arrive on a destination node for execution\ + <ul>\ + <li>Job stealing - supports job stealing from over-utilized nodes to under-utilized nodes</li>\ + <li>FIFO queue - jobs are ordered as they arrived</li>\ + <li>Priority queue - jobs are first ordered by their priority</li>\ + <li>Custom - custom CollisionSpi implementation</li>\ + <li>Default - jobs are activated immediately on arrival to mapped node</li>\ + </ul>') + .pc-form-group(ng-show=`${modelCollisionKind} !== 'Noop'`) + .pc-form-grid-row(ng-show=`${modelCollisionKind} === 'JobStealing'`) + include ./collision/job-stealing + .pc-form-grid-row(ng-show=`${modelCollisionKind} === 'FifoQueue'`) + include ./collision/fifo-queue + .pc-form-grid-row(ng-show=`${modelCollisionKind} === 'PriorityQueue'`) + include ./collision/priority-queue + .pc-form-grid-row(ng-show=`${modelCollisionKind} === 'Custom'`) + include ./collision/custom + .pca-form-column-6 + -var model = '$ctrl.clonedCluster.collision' + +preview-xml-java(model, 'clusterCollision') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug new file mode 100644 index 0000000..c1d11d5 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/custom.pug @@ -0,0 +1,23 @@ +//- + 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 model = '$ctrl.clonedCluster.collision.Custom' +-var required = '$ctrl.clonedCluster.collision.kind === "Custom"' + +.pc-form-grid-col-60 + +java-class('Class:', `${model}.class`, '"collisionCustom"', 'true', required, 'CollisionSpi implementation class', required) http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug new file mode 100644 index 0000000..c009386 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/fifo-queue.pug @@ -0,0 +1,26 @@ +//- + 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 model = '$ctrl.clonedCluster.collision.FifoQueue' + +.pc-form-grid-col-30 + +number('Parallel jobs number:', `${model}.parallelJobsNumber`, '"fifoParallelJobsNumber"', 'true', 'availableProcessors * 2', '1', + 'Number of jobs that can be executed in parallel') +.pc-form-grid-col-30 + +number('Wait jobs number:', `${model}.waitingJobsNumber`, '"fifoWaitingJobsNumber"', 'true', 'Integer.MAX_VALUE', '0', + 'Maximum number of jobs that are allowed to wait in waiting queue') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug new file mode 100644 index 0000000..f1b0a56 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/job-stealing.pug @@ -0,0 +1,51 @@ +//- + 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 model = '$ctrl.clonedCluster.collision.JobStealing' +-var stealingAttributes = `${model}.stealingAttributes` + +.pc-form-grid-col-30 + +number('Active jobs threshold:', `${model}.activeJobsThreshold`, '"jsActiveJobsThreshold"', 'true', '95', '0', + 'Number of jobs that can be executed in parallel') +.pc-form-grid-col-30 + +number('Wait jobs threshold:', `${model}.waitJobsThreshold`, '"jsWaitJobsThreshold"', 'true', '0', '0', + 'Job count threshold at which this node will start stealing jobs from other nodes') +.pc-form-grid-col-30 + +number('Message expire time:', `${model}.messageExpireTime`, '"jsMessageExpireTime"', 'true', '1000', '1', + 'Message expire time in ms') +.pc-form-grid-col-30 + +number('Maximum stealing attempts:', `${model}.maximumStealingAttempts`, '"jsMaximumStealingAttempts"', 'true', '5', '1', + 'Maximum number of attempts to steal job by another node') +.pc-form-grid-col-60 + +checkbox('Stealing enabled', `${model}.stealingEnabled`, '"jsStealingEnabled"', + 'Node should attempt to steal jobs from other nodes') +.pc-form-grid-col-60 + +java-class('External listener:', `${model}.externalCollisionListener`, '"jsExternalCollisionListener"', 'true', 'false', + 'Listener to be set for notification of external collision events', '$ctrl.clonedCluster.collision.kind === "JobStealing"') +.pc-form-grid-col-60 + .ignite-form-field + +ignite-form-field__label('Stealing attributes:', '"stealingAttributes"') + +tooltip(`Configuration parameter to enable stealing to/from only nodes that have these attributes set`) + .ignite-form-field__control + +list-pair-edit({ + items: stealingAttributes, + keyLbl: 'Attribute name', + valLbl: 'Attribute value', + itemName: 'stealing attribute', + itemsName: 'stealing attributes' + }) http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug new file mode 100644 index 0000000..fd198ce --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/collision/priority-queue.pug @@ -0,0 +1,41 @@ +//- + 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 model = '$ctrl.clonedCluster.collision.PriorityQueue' + +.pc-form-grid-col-30 + +number('Parallel jobs number:', `${model}.parallelJobsNumber`, '"priorityParallelJobsNumber"', 'true', 'availableProcessors * 2', '1', + 'Number of jobs that can be executed in parallel') +.pc-form-grid-col-30 + +number('Waiting jobs number:', `${model}.waitingJobsNumber`, '"priorityWaitingJobsNumber"', 'true', 'Integer.MAX_VALUE', '0', + 'Maximum number of jobs that are allowed to wait in waiting queue') +.pc-form-grid-col-30 + +text('Priority attribute key:', `${model}.priorityAttributeKey`, '"priorityPriorityAttributeKey"', 'false', 'grid.task.priority', + 'Task priority attribute key') +.pc-form-grid-col-30 + +text('Job priority attribute key:', `${model}.jobPriorityAttributeKey`, '"priorityJobPriorityAttributeKey"', 'false', 'grid.job.priority', + 'Job priority attribute key') +.pc-form-grid-col-30 + +number('Default priority:', `${model}.defaultPriority`, '"priorityDefaultPriority"', 'true', '0', '0', + 'Default priority to use if a job does not have priority attribute set') +.pc-form-grid-col-30 + +number('Starvation increment:', `${model}.starvationIncrement`, '"priorityStarvationIncrement"', 'true', '1', '0', + 'Value to increment job priority by every time a lower priority job gets behind a higher priority job') +.pc-form-grid-col-60 + +checkbox('Starvation prevention enabled', `${model}.starvationPreventionEnabled`, '"priorityStarvationPreventionEnabled"', + 'Job starvation prevention is enabled') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug new file mode 100644 index 0000000..8b43521 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/communication.pug @@ -0,0 +1,134 @@ +//- + 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 = 'communication' +-var model = '$ctrl.clonedCluster' +-var communication = model + '.communication' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Communication + panel-description + | Configuration of communication with other nodes by TCP/IP. + | Provide basic plumbing to send and receive grid messages and is utilized for all distributed grid operations. + | #[a.link-success(href="https://apacheignite.readme.io/docs/network-config" target="_blank") More info] + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-30 + +number('Timeout:', `${model}.networkTimeout`, '"commNetworkTimeout"', 'true', '5000', '1', 'Maximum timeout in milliseconds for network requests') + .pc-form-grid-col-30 + +number('Send retry delay:', `${model}.networkSendRetryDelay`, '"networkSendRetryDelay"', 'true', '1000', '1', 'Interval in milliseconds between message send retries') + .pc-form-grid-col-30 + +number('Send retry count:', `${model}.networkSendRetryCount`, '"networkSendRetryCount"', 'true', '3', '1', 'Message send retries count') + .pc-form-grid-col-30(ng-if='$ctrl.available(["1.0.0", "2.3.0"])') + +number('Discovery startup delay:', `${model}.discoveryStartupDelay`, '"discoveryStartupDelay"', 'true', '60000', '1', 'This value is used to expire messages from waiting list whenever node discovery discrepancies happen') + .pc-form-grid-col-60 + +java-class('Communication listener:', `${communication}.listener`, '"comListener"', 'true', 'false', 'Listener of communication events') + .pc-form-grid-col-30 + +text-ip-address('Local IP address:', `${communication}.localAddress`, '"comLocalAddress"', 'true', '0.0.0.0', + 'Local host address for socket binding<br/>\ + If not specified use all available addres on local host') + .pc-form-grid-col-30 + +number-min-max('Local port:', `${communication}.localPort`, '"comLocalPort"', 'true', '47100', '1024', '65535', 'Local port for socket binding') + .pc-form-grid-col-30 + +number('Local port range:', `${communication}.localPortRange`, '"comLocalPortRange"', 'true', '100', '1', 'Local port range for local host ports') + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'Shared memory port:', + model: `${communication}.sharedMemoryPort`, + name: '"sharedMemoryPort"', + placeholder: '{{ ::$ctrl.Clusters.sharedMemoryPort.default }}', + min: '{{ ::$ctrl.Clusters.sharedMemoryPort.min }}', + max: '{{ ::$ctrl.Clusters.sharedMemoryPort.max }}', + tip: `Local port to accept shared memory connections<br/>If set to <b>-1</b> shared memory communication will be disabled` + })( + pc-not-in-collection='::$ctrl.Clusters.sharedMemoryPort.invalidValues' + ) + +form-field-feedback('"sharedMemoryPort"', 'notInCollection', 'Shared memory port should be more than "{{ ::$ctrl.Clusters.sharedMemoryPort.invalidValues[0] }}" or equal to "{{ ::$ctrl.Clusters.sharedMemoryPort.min }}"') + .pc-form-grid-col-30 + +number('Idle connection timeout:', `${communication}.idleConnectionTimeout`, '"idleConnectionTimeout"', 'true', '30000', '1', + 'Maximum idle connection timeout upon which a connection to client will be closed') + .pc-form-grid-col-30 + +number('Connect timeout:', `${communication}.connectTimeout`, '"connectTimeout"', 'true', '5000', '0', 'Connect timeout used when establishing connection with remote nodes') + .pc-form-grid-col-30 + +number('Max. connect timeout:', `${communication}.maxConnectTimeout`, '"maxConnectTimeout"', 'true', '600000', '0', 'Maximum connect timeout') + .pc-form-grid-col-30 + +number('Reconnect count:', `${communication}.reconnectCount`, '"comReconnectCount"', 'true', '10', '1', + 'Maximum number of reconnect attempts used when establishing connection with remote nodes') + .pc-form-grid-col-30 + +number('Socket send buffer:', `${communication}.socketSendBuffer`, '"socketSendBuffer"', 'true', '32768', '0', 'Send buffer size for sockets created or accepted by this SPI') + .pc-form-grid-col-30 + +number('Socket receive buffer:', `${communication}.socketReceiveBuffer`, '"socketReceiveBuffer"', 'true', '32768', '0', 'Receive buffer size for sockets created or accepted by this SPI') + .pc-form-grid-col-30 + +number('Slow client queue limit:', `${communication}.slowClientQueueLimit`, '"slowClientQueueLimit"', 'true', '0', '0', 'Slow client queue limit') + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'Ack send threshold:', + model: `${communication}.ackSendThreshold`, + name: '"ackSendThreshold"', + placeholder: '{{ ::$ctrl.Clusters.ackSendThreshold.default }}', + min: '{{ ::$ctrl.Clusters.ackSendThreshold.min }}', + tip: 'Number of received messages per connection to node after which acknowledgment message is sent' + }) + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'Message queue limit:', + model: `${communication}.messageQueueLimit`, + name: '"messageQueueLimit"', + placeholder: '{{ ::$ctrl.Clusters.messageQueueLimit.default }}', + min: '{{ ::$ctrl.Clusters.messageQueueLimit.min }}', + tip: 'Message queue limit for incoming and outgoing messages' + }) + .pc-form-grid-col-30 + //- allowInvalid: true prevents from infinite digest loop when old value was 0 and becomes less than allowed minimum + +sane-ignite-form-field-number({ + label: 'Unacknowledged messages:', + model: `${communication}.unacknowledgedMessagesBufferSize`, + name: '"unacknowledgedMessagesBufferSize"', + placeholder: '{{ ::$ctrl.Clusters.unacknowledgedMessagesBufferSize.default }}', + min: `{{ $ctrl.Clusters.unacknowledgedMessagesBufferSize.min( + ${communication}.unacknowledgedMessagesBufferSize, + ${communication}.messageQueueLimit, + ${communication}.ackSendThreshold + ) }}`, + tip: `Maximum number of stored unacknowledged messages per connection to node<br/> + If specified non zero value it should be + <ul> + <li>At least ack send threshold * {{ ::$ctrl.Clusters.unacknowledgedMessagesBufferSize.validRatio }}</li> + <li>At least message queue limit * {{ ::$ctrl.Clusters.unacknowledgedMessagesBufferSize.validRatio }}</li> + </ul>` + })( + ng-model-options=`{ + allowInvalid: true + }` + ) + .pc-form-grid-col-30 + +number('Socket write timeout:', `${communication}.socketWriteTimeout`, '"socketWriteTimeout"', 'true', '2000', '0', 'Socket write timeout') + .pc-form-grid-col-30 + +number('Selectors count:', `${communication}.selectorsCount`, '"selectorsCount"', 'true', 'min(4, availableProcessors)', '1', 'Count of selectors te be used in TCP server') + .pc-form-grid-col-60 + +java-class('Address resolver:', `${communication}.addressResolver`, '"comAddressResolver"', 'true', 'false', 'Provides resolution between external and internal addresses') + .pc-form-grid-col-60 + +checkbox('Direct buffer', `${communication}.directBuffer`, '"directBuffer"', + 'If value is true, then SPI will use ByteBuffer.allocateDirect(int) call<br/>\ + Otherwise, SPI will use ByteBuffer.allocate(int) call') + .pc-form-grid-col-60 + +checkbox('Direct send buffer', `${communication}.directSendBuffer`, '"directSendBuffer"', 'Flag defining whether direct send buffer should be used') + .pc-form-grid-col-60 + +checkbox('TCP_NODELAY option', `${communication}.tcpNoDelay`, '"tcpNoDelay"', 'Value for TCP_NODELAY socket option') + .pca-form-column-6 + +preview-xml-java(model, 'clusterCommunication')