http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint.pug new file mode 100644 index 0000000..716e082 --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint.pug @@ -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. + +include /app/helpers/jade/mixins + +-var form = 'checkpoint' +-var model = 'backupItem.checkpointSpi' +-var CustomCheckpoint = 'model.kind === "Custom"' +-var CacheCheckpoint = 'model.kind === "Cache"' + +.panel.panel-default(ng-form=form novalidate) + .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) + ignite-form-panel-chevron + label Checkpointing + ignite-form-field-tooltip.tipLabel + | Checkpointing provides an ability to save an intermediate job state#[br] + | #[a(href="http://apacheignite.readme.io/docs/checkpointing" target="_blank") More info] + ignite-form-revert + .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) + .panel-body(ng-if=`ui.isPanelLoaded('${form}')`) + .col-sm-6 + .settings-row(ng-init='checkpointSpiTbl={type: "checkpointSpi", model: "checkpointSpi", focusId: "kind", ui: "checkpoint-table"}') + +ignite-form-group() + ignite-form-field-label + | Checkpoint SPI configurations + ignite-form-group-tooltip + | Checkpoint SPI configurations + ignite-form-group-add(ng-click='tableNewItem(checkpointSpiTbl)') + | Add checkpoint SPI + .group-content-empty(ng-if=`!(${model} && ${model}.length > 0)`) + | Not defined + .group-content(ng-show=`${model} && ${model}.length > 0` ng-repeat=`model in ${model} track by $index`) + hr(ng-if='$index != 0') + .settings-row + +dropdown-required-autofocus('Checkpoint SPI:', 'model.kind', '"checkpointKind" + $index', '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>') + +table-remove-button(model, 'Remove Checkpoint SPI') + + div(ng-show='model.kind === "FS"') + include ./checkpoint/fs + + div(ng-show=CacheCheckpoint) + .settings-row + +dropdown-required-empty('Cache:', 'model.Cache.cache', '"checkpointCacheCache" + $index', 'true', CacheCheckpoint, + 'Choose cache', 'No caches configured for current cluster', 'clusterCaches', 'Cache to use for storing checkpoints') + .settings-row + +java-class('Listener:', 'model.Cache.checkpointListener', '"checkpointCacheListener" + $index', 'true', 'false', + 'Checkpoint listener implementation class name', CacheCheckpoint) + + div(ng-show='model.kind === "S3"') + include ./checkpoint/s3 + + div(ng-show='model.kind === "JDBC"') + include ./checkpoint/jdbc + + .settings-row(ng-show=CustomCheckpoint) + +java-class('Class name:', 'model.Custom.className', '"checkpointCustomClassName" + $index', 'true', CustomCheckpoint, + 'Custom CheckpointSpi implementation class', CustomCheckpoint) + .col-sm-6 + +preview-xml-java('backupItem', 'clusterCheckpoint', 'caches')
http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.jade deleted file mode 100644 index 6ec4535..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.jade +++ /dev/null @@ -1,66 +0,0 @@ -//- - 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.jade - --var form = 'checkpointFsPaths' --var dirPaths = 'model.FS.directoryPaths' - -.details-row - +ignite-form-group(ng-form=form ng-model=dirPaths) - -var uniqueTip = 'Such path already exists!' - - ignite-form-field-label - | Paths - ignite-form-group-tooltip - | Paths to a shared directory where checkpoints will be stored - ignite-form-group-add(ng-click='(group.add = [{}])') - | Add new path - - .group-content(ng-if='#{dirPaths}.length') - -var model = 'obj.model'; - -var name = '"edit" + $index' - -var valid = form + '[' + name + '].$valid' - -var save = dirPaths + '[$index] = ' + model - - div(ng-repeat='item in #{dirPaths} track by $index' ng-init='obj = {}') - label.col-xs-12.col-sm-12.col-md-12 - .indexField - | {{ $index+1 }}) - +table-remove-conditional-button(dirPaths, 'true', 'Remove path', 'item') - span(ng-hide='field.edit') - a.labelFormField(ng-click='(field.edit = true) && (#{model} = item)') {{ item }} - span(ng-if='field.edit') - +table-text-field(name, model, dirPaths, valid, save, 'Input directory path', false) - +table-save-button(valid, save, false) - +unique-feedback(name, uniqueTip) - .group-content(ng-repeat='field in group.add') - -var model = 'new'; - -var name = '"new"' - -var valid = form + '[' + name + '].$valid' - -var save = dirPaths + '.push(' + model + ')' - - div - label.col-xs-12.col-sm-12.col-md-12 - +table-text-field(name, model, dirPaths, valid, save, 'Input directory path', true) - +table-save-button(valid, save, true) - +unique-feedback(name, uniqueTip) - .group-content-empty(ng-if='!(#{dirPaths}.length) && !group.add.length') - | Not defined - -.settings-row - +java-class('Listener:', 'model.FS.checkpointListener', '"checkpointFsListener" + $index', 'true', 'false', - 'Checkpoint listener implementation class name', 'model.kind === "FS"') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.pug new file mode 100644 index 0000000..04cc7fb --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/fs.pug @@ -0,0 +1,66 @@ +//- + 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 = 'checkpointFsPaths' +-var dirPaths = 'model.FS.directoryPaths' + +.details-row + +ignite-form-group(ng-form=form ng-model=dirPaths) + -var uniqueTip = 'Such path already exists!' + + ignite-form-field-label + | Paths + ignite-form-group-tooltip + | Paths to a shared directory where checkpoints will be stored + ignite-form-group-add(ng-click='(group.add = [{}])') + | Add new path + + .group-content(ng-if=`${dirPaths}.length`) + -var model = 'obj.model'; + -var name = '"edit" + $index' + -var valid = `${form}[${name}].$valid` + -var save = dirPaths + '[$index] = ' + model + + div(ng-repeat=`item in ${dirPaths} track by $index` ng-init='obj = {}') + label.col-xs-12.col-sm-12.col-md-12 + .indexField + | {{ $index+1 }}) + +table-remove-conditional-button(dirPaths, 'true', 'Remove path', 'item') + span(ng-hide='field.edit') + a.labelFormField(ng-click=`(field.edit = true) && (${model} = item)`) {{ item }} + span(ng-if='field.edit') + +table-text-field(name, model, dirPaths, valid, save, 'Input directory path', false) + +table-save-button(valid, save, false) + +unique-feedback(name, uniqueTip) + .group-content(ng-repeat='field in group.add') + -var model = 'new'; + -var name = '"new"' + -var valid = `${form}[${name}].$valid` + -var save = dirPaths + '.push(' + model + ')' + + div + label.col-xs-12.col-sm-12.col-md-12 + +table-text-field(name, model, dirPaths, valid, save, 'Input directory path', true) + +table-save-button(valid, save, true) + +unique-feedback(name, uniqueTip) + .group-content-empty(ng-if=`!(${dirPaths}.length) && !group.add.length`) + | Not defined + +.settings-row + +java-class('Listener:', 'model.FS.checkpointListener', '"checkpointFsListener" + $index', 'true', 'false', + 'Checkpoint listener implementation class name', 'model.kind === "FS"') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.jade deleted file mode 100644 index 5a13337..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.jade +++ /dev/null @@ -1,48 +0,0 @@ -//- - 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.jade - --var jdbcCheckpoint = 'model.kind === "JDBC"' - -.settings-row - +text('Data source bean name:', 'model.JDBC.dataSourceBean', '"checkpointJdbcDataSourceBean" + $index', jdbcCheckpoint, 'Input bean name', - 'Name of the data source bean in Spring context') -.settings-row - +dialect('Dialect:', 'model.JDBC.dialect', '"checkpointJdbcDialect" + $index', jdbcCheckpoint, - 'Dialect of SQL implemented by a particular RDBMS:', 'Generic JDBC dialect', 'Choose JDBC dialect') -.settings-row - +java-class('Listener:', 'model.JDBC.checkpointListener', '"checkpointJdbcListener" + $index', 'true', 'false', - 'Checkpoint listener implementation class name', jdbcCheckpoint) -+showHideLink('jdbcExpanded', 'settings') - .details-row - +text('User:', 'model.JDBC.user', '"checkpointJdbcUser" + $index', 'false', 'Input user name', 'Checkpoint jdbc user name') - .details-row - +text('Table name:', 'model.JDBC.checkpointTableName', '"checkpointJdbcCheckpointTableName" + $index', 'false', 'CHECKPOINTS', 'Checkpoint table name') - .details-row - +text('Key field name:', 'model.JDBC.keyFieldName', '"checkpointJdbcKeyFieldName" + $index', 'false', 'NAME', 'Checkpoint key field name') - .details-row - +dropdown('Key field type:', 'model.JDBC.keyFieldType', '"checkpointJdbcKeyFieldType" + $index', 'true', 'VARCHAR', 'supportedJdbcTypes', 'Checkpoint key field type') - .details-row - +text('Value field name:', 'model.JDBC.valueFieldName', '"checkpointJdbcValueFieldName" + $index', 'false', 'VALUE', 'Checkpoint value field name') - .details-row - +dropdown('Value field type:', 'model.JDBC.valueFieldType', '"checkpointJdbcValueFieldType" + $index', 'true', 'BLOB', 'supportedJdbcTypes', 'Checkpoint value field type') - .details-row - +text('Expire date field name:', 'model.JDBC.expireDateFieldName', '"checkpointJdbcExpireDateFieldName" + $index', 'false', 'EXPIRE_DATE', 'Checkpoint expire date field name') - .details-row - +dropdown('Expire date field type:', 'model.JDBC.expireDateFieldType', '"checkpointJdbcExpireDateFieldType"', 'true', 'DATETIME', 'supportedJdbcTypes', 'Checkpoint expire date field type') - .details-row - +number('Number of retries:', 'model.JDBC.numberOfRetries', '"checkpointJdbcNumberOfRetries"', 'true', '2', '0', 'Number of retries in case of DB failure') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.pug new file mode 100644 index 0000000..ea67977 --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/jdbc.pug @@ -0,0 +1,48 @@ +//- + 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 = 'model.kind === "JDBC"' + +.settings-row + +text('Data source bean name:', 'model.JDBC.dataSourceBean', '"checkpointJdbcDataSourceBean" + $index', jdbcCheckpoint, 'Input bean name', + 'Name of the data source bean in Spring context') +.settings-row + +dialect('Dialect:', 'model.JDBC.dialect', '"checkpointJdbcDialect" + $index', jdbcCheckpoint, + 'Dialect of SQL implemented by a particular RDBMS:', 'Generic JDBC dialect', 'Choose JDBC dialect') +.settings-row + +java-class('Listener:', 'model.JDBC.checkpointListener', '"checkpointJdbcListener" + $index', 'true', 'false', + 'Checkpoint listener implementation class name', jdbcCheckpoint) ++showHideLink('jdbcExpanded', 'settings') + .details-row + +text('User:', 'model.JDBC.user', '"checkpointJdbcUser" + $index', 'false', 'Input user name', 'Checkpoint jdbc user name') + .details-row + +text('Table name:', 'model.JDBC.checkpointTableName', '"checkpointJdbcCheckpointTableName" + $index', 'false', 'CHECKPOINTS', 'Checkpoint table name') + .details-row + +text('Key field name:', 'model.JDBC.keyFieldName', '"checkpointJdbcKeyFieldName" + $index', 'false', 'NAME', 'Checkpoint key field name') + .details-row + +dropdown('Key field type:', 'model.JDBC.keyFieldType', '"checkpointJdbcKeyFieldType" + $index', 'true', 'VARCHAR', 'supportedJdbcTypes', 'Checkpoint key field type') + .details-row + +text('Value field name:', 'model.JDBC.valueFieldName', '"checkpointJdbcValueFieldName" + $index', 'false', 'VALUE', 'Checkpoint value field name') + .details-row + +dropdown('Value field type:', 'model.JDBC.valueFieldType', '"checkpointJdbcValueFieldType" + $index', 'true', 'BLOB', 'supportedJdbcTypes', 'Checkpoint value field type') + .details-row + +text('Expire date field name:', 'model.JDBC.expireDateFieldName', '"checkpointJdbcExpireDateFieldName" + $index', 'false', 'EXPIRE_DATE', 'Checkpoint expire date field name') + .details-row + +dropdown('Expire date field type:', 'model.JDBC.expireDateFieldType', '"checkpointJdbcExpireDateFieldType"', 'true', 'DATETIME', 'supportedJdbcTypes', 'Checkpoint expire date field type') + .details-row + +number('Number of retries:', 'model.JDBC.numberOfRetries', '"checkpointJdbcNumberOfRetries"', 'true', '2', '0', 'Number of retries in case of DB failure') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.jade deleted file mode 100644 index 6531897..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.jade +++ /dev/null @@ -1,178 +0,0 @@ -//- - 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.jade - --var credentialsModel = 'model.S3.awsCredentials' --var clientCfgModel = 'model.S3.clientConfiguration' --var checkpointS3 = 'model.kind === "S3"' --var checkpointS3Path = checkpointS3 + ' && model.S3.awsCredentials.kind === "Properties"' --var checkpointS3Custom = checkpointS3 + ' && model.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"' - -.settings-row - +dropdown-required('AWS credentials:', 'model.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>') -.settings-row - label Note, AWS credentials will be generated as stub -.panel-details(ng-show=checkpointS3Path) - .details-row - +text('Path:', credentialsModel + '.Properties.path', '"checkpointS3PropertiesPath"', checkpointS3Path, 'Input properties file path', - 'The file from which to read the AWS credentials properties') -.panel-details(ng-show=checkpointS3Custom) - .details-row - +java-class('Class name:', credentialsModel + '.Custom.className', '"checkpointS3CustomClassName" + $index', 'true', checkpointS3Custom, - 'Custom AWS credentials provider implementation class', checkpointS3Custom) -.settings-row - +text('Bucket name suffix:', 'model.S3.bucketNameSuffix', '"checkpointS3BucketNameSuffix"', 'false', 'default-bucket', 'Bucket name suffix') -.settings-row - +java-class('Listener:', 'model.S3.checkpointListener', '"checkpointS3Listener" + $index', 'true', 'false', - 'Checkpoint listener implementation class name', checkpointS3) -+showHideLink('s3Expanded', 'client configuration') - .details-row - +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>') - .details-row - +number('Maximum connections:', clientCfgModel + '.maxConnections', '"checkpointS3MaxConnections"', - 'true', '50', '1', 'Maximum number of allowed open HTTP connections') - .details-row - +text('User agent:', clientCfgModel + '.userAgent', '"checkpointS3UserAgent"', 'false', 'System specific header', - 'HTTP user agent header to send with all requests') - .details-row - +text-ip-address('Local address:', clientCfgModel + '.localAddress', '"checkpointS3LocalAddress"', 'true', 'Not specified', - 'Optionally specifies the local address to bind to') - .details-row - +text('Proxy host:', clientCfgModel + '.proxyHost', '"checkpointS3ProxyHost"', 'false', 'Not specified', - 'Optional proxy host the client will connect through') - .details-row - +number('Proxy port:', clientCfgModel + '.proxyPort', '"checkpointS3ProxyPort"', 'true', 'Not specified', '0', - 'Optional proxy port the client will connect through') - .details-row - +text('Proxy user:', clientCfgModel + '.proxyUsername', '"checkpointS3ProxyUsername"', 'false', 'Not specified', - 'Optional proxy user name to use if connecting through a proxy') - .details-row - +text('Proxy domain:', clientCfgModel + '.proxyDomain', '"checkpointS3ProxyDomain"', 'false', 'Not specified', - 'Optional Windows domain name for configuring an NTLM proxy') - .details-row - +text('Proxy workstation:', clientCfgModel + '.proxyWorkstation', '"checkpointS3ProxyWorkstation"', 'false', 'Not specified', - 'Optional Windows workstation name for configuring NTLM proxy support') - .details-row - +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>') - .panel-details(ng-show=checkpointS3DefaultMaxRetry) - .details-row - +number-required('Maximum retry attempts:', clientRetryModel + '.DefaultMaxRetries.maxErrorRetry', '"checkpointS3DefaultMaxErrorRetry"', 'true', checkpointS3DefaultMaxRetry, '-1', '1', - 'Maximum number of retry attempts for failed requests') - .panel-details(ng-show=checkpointS3DynamoDbMaxRetry) - .details-row - +number-required('Maximum retry attempts:', clientRetryModel + '.DynamoDBMaxRetries.maxErrorRetry', '"checkpointS3DynamoDBMaxErrorRetry"', 'true', checkpointS3DynamoDbMaxRetry, '-1', '1', - 'Maximum number of retry attempts for failed requests') - .panel-details(ng-show=checkpointS3CustomRetry) - .details-row - +java-class('Retry condition:', clientRetryModel + '.Custom.retryCondition', '"checkpointS3CustomRetryPolicy" + $index', 'true', checkpointS3CustomRetry, - 'Retry condition on whether a specific request and exception should be retried', checkpointS3CustomRetry) - .details-row - +java-class('Backoff strategy:', clientRetryModel + '.Custom.backoffStrategy', '"checkpointS3CustomBackoffStrategy" + $index', 'true', checkpointS3CustomRetry, - 'Back-off strategy for controlling how long the next retry should wait', checkpointS3CustomRetry) - .details-row - +number-required('Maximum retry attempts:', clientRetryModel + '.Custom.maxErrorRetry', '"checkpointS3CustomMaxErrorRetry"', 'true', checkpointS3CustomRetry, '-1', '1', - 'Maximum number of retry attempts for failed requests') - .details-row - +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)') - .details-row - +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') - .details-row - +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') - .details-row - +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') - .details-row - +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') - .details-row - +text('Signature algorithm:', clientCfgModel + '.signerOverride', '"checkpointS3SignerOverride"', 'false', 'Not specified', - 'Name of the signature algorithm to use for signing requests made by this client') - .details-row - +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') - .details-row - +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') - .details-row - +java-class('DNS resolver:', clientCfgModel + '.dnsResolver', '"checkpointS3DnsResolver" + $index', 'true', 'false', - 'DNS Resolver that should be used to for resolving AWS IP addresses', checkpointS3) - .details-row - +number('Response metadata cache size:', clientCfgModel + '.responseMetadataCacheSize', '"checkpointS3ResponseMetadataCacheSize"', 'true', '50', '0', - 'Response metadata cache size') - .details-row - +java-class('SecureRandom class name:', clientCfgModel + '.secureRandom', '"checkpointS3SecureRandom" + $index', 'true', 'false', - 'SecureRandom to be used by the SDK class name', checkpointS3) - .details-row - +checkbox('Use reaper', clientCfgModel + '.useReaper', '"checkpointS3UseReaper"', 'Checks if the IdleConnectionReaper is to be started') - .details-row - +checkbox('Use GZIP', clientCfgModel + '.useGzip', '"checkpointS3UseGzip"', 'Checks if gzip compression is used') - .details-row - +checkbox('Preemptively basic authentication', clientCfgModel + '.preemptiveBasicProxyAuth', '"checkpointS3PreemptiveBasicProxyAuth"', - 'Attempt to authenticate preemptively against proxy servers using basic authentication') - .details-row - +checkbox('TCP KeepAlive', clientCfgModel + '.useTcpKeepAlive', '"checkpointS3UseTcpKeepAlive"', 'TCP KeepAlive support is enabled') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.pug new file mode 100644 index 0000000..16be6c0 --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/checkpoint/s3.pug @@ -0,0 +1,178 @@ +//- + 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 = 'model.S3.awsCredentials' +-var clientCfgModel = 'model.S3.clientConfiguration' +-var checkpointS3 = 'model.kind === "S3"' +-var checkpointS3Path = checkpointS3 + ' && model.S3.awsCredentials.kind === "Properties"' +-var checkpointS3Custom = checkpointS3 + ' && model.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"' + +.settings-row + +dropdown-required('AWS credentials:', 'model.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>') +.settings-row + label Note, AWS credentials will be generated as stub +.panel-details(ng-show=checkpointS3Path) + .details-row + +text('Path:', credentialsModel + '.Properties.path', '"checkpointS3PropertiesPath"', checkpointS3Path, 'Input properties file path', + 'The file from which to read the AWS credentials properties') +.panel-details(ng-show=checkpointS3Custom) + .details-row + +java-class('Class name:', credentialsModel + '.Custom.className', '"checkpointS3CustomClassName" + $index', 'true', checkpointS3Custom, + 'Custom AWS credentials provider implementation class', checkpointS3Custom) +.settings-row + +text('Bucket name suffix:', 'model.S3.bucketNameSuffix', '"checkpointS3BucketNameSuffix"', 'false', 'default-bucket', 'Bucket name suffix') +.settings-row + +java-class('Listener:', 'model.S3.checkpointListener', '"checkpointS3Listener" + $index', 'true', 'false', + 'Checkpoint listener implementation class name', checkpointS3) ++showHideLink('s3Expanded', 'client configuration') + .details-row + +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>') + .details-row + +number('Maximum connections:', clientCfgModel + '.maxConnections', '"checkpointS3MaxConnections"', + 'true', '50', '1', 'Maximum number of allowed open HTTP connections') + .details-row + +text('User agent:', clientCfgModel + '.userAgent', '"checkpointS3UserAgent"', 'false', 'System specific header', + 'HTTP user agent header to send with all requests') + .details-row + +text-ip-address('Local address:', clientCfgModel + '.localAddress', '"checkpointS3LocalAddress"', 'true', 'Not specified', + 'Optionally specifies the local address to bind to') + .details-row + +text('Proxy host:', clientCfgModel + '.proxyHost', '"checkpointS3ProxyHost"', 'false', 'Not specified', + 'Optional proxy host the client will connect through') + .details-row + +number('Proxy port:', clientCfgModel + '.proxyPort', '"checkpointS3ProxyPort"', 'true', 'Not specified', '0', + 'Optional proxy port the client will connect through') + .details-row + +text('Proxy user:', clientCfgModel + '.proxyUsername', '"checkpointS3ProxyUsername"', 'false', 'Not specified', + 'Optional proxy user name to use if connecting through a proxy') + .details-row + +text('Proxy domain:', clientCfgModel + '.proxyDomain', '"checkpointS3ProxyDomain"', 'false', 'Not specified', + 'Optional Windows domain name for configuring an NTLM proxy') + .details-row + +text('Proxy workstation:', clientCfgModel + '.proxyWorkstation', '"checkpointS3ProxyWorkstation"', 'false', 'Not specified', + 'Optional Windows workstation name for configuring NTLM proxy support') + .details-row + +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>') + .panel-details(ng-show=checkpointS3DefaultMaxRetry) + .details-row + +number-required('Maximum retry attempts:', clientRetryModel + '.DefaultMaxRetries.maxErrorRetry', '"checkpointS3DefaultMaxErrorRetry"', 'true', checkpointS3DefaultMaxRetry, '-1', '1', + 'Maximum number of retry attempts for failed requests') + .panel-details(ng-show=checkpointS3DynamoDbMaxRetry) + .details-row + +number-required('Maximum retry attempts:', clientRetryModel + '.DynamoDBMaxRetries.maxErrorRetry', '"checkpointS3DynamoDBMaxErrorRetry"', 'true', checkpointS3DynamoDbMaxRetry, '-1', '1', + 'Maximum number of retry attempts for failed requests') + .panel-details(ng-show=checkpointS3CustomRetry) + .details-row + +java-class('Retry condition:', clientRetryModel + '.Custom.retryCondition', '"checkpointS3CustomRetryPolicy" + $index', 'true', checkpointS3CustomRetry, + 'Retry condition on whether a specific request and exception should be retried', checkpointS3CustomRetry) + .details-row + +java-class('Backoff strategy:', clientRetryModel + '.Custom.backoffStrategy', '"checkpointS3CustomBackoffStrategy" + $index', 'true', checkpointS3CustomRetry, + 'Back-off strategy for controlling how long the next retry should wait', checkpointS3CustomRetry) + .details-row + +number-required('Maximum retry attempts:', clientRetryModel + '.Custom.maxErrorRetry', '"checkpointS3CustomMaxErrorRetry"', 'true', checkpointS3CustomRetry, '-1', '1', + 'Maximum number of retry attempts for failed requests') + .details-row + +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)') + .details-row + +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') + .details-row + +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') + .details-row + +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') + .details-row + +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') + .details-row + +text('Signature algorithm:', clientCfgModel + '.signerOverride', '"checkpointS3SignerOverride"', 'false', 'Not specified', + 'Name of the signature algorithm to use for signing requests made by this client') + .details-row + +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') + .details-row + +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') + .details-row + +java-class('DNS resolver:', clientCfgModel + '.dnsResolver', '"checkpointS3DnsResolver" + $index', 'true', 'false', + 'DNS Resolver that should be used to for resolving AWS IP addresses', checkpointS3) + .details-row + +number('Response metadata cache size:', clientCfgModel + '.responseMetadataCacheSize', '"checkpointS3ResponseMetadataCacheSize"', 'true', '50', '0', + 'Response metadata cache size') + .details-row + +java-class('SecureRandom class name:', clientCfgModel + '.secureRandom', '"checkpointS3SecureRandom" + $index', 'true', 'false', + 'SecureRandom to be used by the SDK class name', checkpointS3) + .details-row + +checkbox('Use reaper', clientCfgModel + '.useReaper', '"checkpointS3UseReaper"', 'Checks if the IdleConnectionReaper is to be started') + .details-row + +checkbox('Use GZIP', clientCfgModel + '.useGzip', '"checkpointS3UseGzip"', 'Checks if gzip compression is used') + .details-row + +checkbox('Preemptively basic authentication', clientCfgModel + '.preemptiveBasicProxyAuth', '"checkpointS3PreemptiveBasicProxyAuth"', + 'Attempt to authenticate preemptively against proxy servers using basic authentication') + .details-row + +checkbox('TCP KeepAlive', clientCfgModel + '.useTcpKeepAlive', '"checkpointS3UseTcpKeepAlive"', 'TCP KeepAlive support is enabled') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.jade deleted file mode 100644 index 91676df..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.jade +++ /dev/null @@ -1,63 +0,0 @@ -//- - 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.jade - --var form = 'collision' --var model = 'backupItem.collision' --var modelCollisionKind = model + '.kind'; - -.panel.panel-default(ng-form=form novalidate) - .panel-heading(bs-collapse-toggle ng-click='ui.loadPanel("#{form}")') - ignite-form-panel-chevron - label Collision configuration - ignite-form-field-tooltip.tipLabel - | Configuration Collision SPI allows to regulate how grid jobs get executed when they arrive on a destination node for execution#[br] - | #[a(href="https://apacheignite.readme.io/docs/job-scheduling" target="_blank") More info] - ignite-form-revert - .panel-collapse(role='tabpanel' bs-collapse-target id=form) - .panel-body(ng-if='ui.isPanelLoaded("#{form}")') - .col-sm-6 - .settings-row - +dropdown('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>') - .settings-row(ng-show='#{modelCollisionKind} !== "Noop"') - .panel-details - div(ng-show='#{modelCollisionKind} === "JobStealing"') - include ./collision/job-stealing.jade - div(ng-show='#{modelCollisionKind} === "FifoQueue"') - include ./collision/fifo-queue.jade - div(ng-show='#{modelCollisionKind} === "PriorityQueue"') - include ./collision/priority-queue.jade - div(ng-show='#{modelCollisionKind} === "Custom"') - include ./collision/custom.jade - .col-sm-6 - -var model = 'backupItem.collision' - +preview-xml-java(model, 'clusterCollision') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.pug new file mode 100644 index 0000000..2f58e0a --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision.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 = 'collision' +-var model = 'backupItem.collision' +-var modelCollisionKind = model + '.kind'; + +.panel.panel-default(ng-form=form novalidate) + .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) + ignite-form-panel-chevron + label Collision configuration + ignite-form-field-tooltip.tipLabel + | Configuration Collision SPI allows to regulate how grid jobs get executed when they arrive on a destination node for execution#[br] + | #[a(href="https://apacheignite.readme.io/docs/job-scheduling" target="_blank") More info] + ignite-form-revert + .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) + .panel-body(ng-if=`ui.isPanelLoaded('${form}')`) + .col-sm-6 + .settings-row + +dropdown('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>') + .settings-row(ng-show=`${modelCollisionKind} !== 'Noop'`) + .panel-details + div(ng-show=`${modelCollisionKind} === 'JobStealing'`) + include ./collision/job-stealing + div(ng-show=`${modelCollisionKind} === 'FifoQueue'`) + include ./collision/fifo-queue + div(ng-show=`${modelCollisionKind} === 'PriorityQueue'`) + include ./collision/priority-queue + div(ng-show=`${modelCollisionKind} === 'Custom'`) + include ./collision/custom + .col-sm-6 + -var model = 'backupItem.collision' + +preview-xml-java(model, 'clusterCollision') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.jade deleted file mode 100644 index 8e77ac4..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.jade +++ /dev/null @@ -1,24 +0,0 @@ -//- - 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.jade - --var model = 'backupItem.collision.Custom' --var required = 'backupItem.collision.kind === "Custom"' - -div - .details-row - +java-class('Class:', model + '.class', '"collisionCustom"', 'true', required, 'CollisionSpi implementation class', required) http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.pug new file mode 100644 index 0000000..dc5dee0 --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/custom.pug @@ -0,0 +1,24 @@ +//- + 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 = 'backupItem.collision.Custom' +-var required = 'backupItem.collision.kind === "Custom"' + +div + .details-row + +java-class('Class:', `${model}.class`, '"collisionCustom"', 'true', required, 'CollisionSpi implementation class', required) http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.jade deleted file mode 100644 index cd8b6a3..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.jade +++ /dev/null @@ -1,27 +0,0 @@ -//- - 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.jade - --var model = 'backupItem.collision.FifoQueue' - -div - .details-row - +number('Parallel jobs number:', model + '.parallelJobsNumber', '"fifoParallelJobsNumber"', 'true', 'availableProcessors * 2', '1', - 'Number of jobs that can be executed in parallel') - .details-row - +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/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.pug new file mode 100644 index 0000000..159b463 --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/fifo-queue.pug @@ -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. + +include /app/helpers/jade/mixins + +-var model = 'backupItem.collision.FifoQueue' + +div + .details-row + +number('Parallel jobs number:', `${model}.parallelJobsNumber`, '"fifoParallelJobsNumber"', 'true', 'availableProcessors * 2', '1', + 'Number of jobs that can be executed in parallel') + .details-row + +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/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.jade deleted file mode 100644 index dbe0478..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.jade +++ /dev/null @@ -1,63 +0,0 @@ -//- - 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.jade - --var model = 'backupItem.collision.JobStealing' --var stealingAttributes = model + '.stealingAttributes' - -div - .details-row - +number('Active jobs threshold:', model + '.activeJobsThreshold', '"jsActiveJobsThreshold"', 'true', '95', '0', - 'Number of jobs that can be executed in parallel') - .details-row - +number('Wait jobs threshold:', model + '.waitJobsThreshold', '"jsWaitJobsThreshold"', 'true', '0', '0', - 'Job count threshold at which this node will start stealing jobs from other nodes') - .details-row - +number('Message expire time:', model + '.messageExpireTime', '"jsMessageExpireTime"', 'true', '1000', '1', - 'Message expire time in ms') - .details-row - +number('Maximum stealing attempts:', model + '.maximumStealingAttempts', '"jsMaximumStealingAttempts"', 'true', '5', '1', - 'Maximum number of attempts to steal job by another node') - .details-row - +checkbox('Stealing enabled', model + '.stealingEnabled', '"jsStealingEnabled"', - 'Node should attempt to steal jobs from other nodes') - .details-row - +java-class('External listener:', model + '.externalCollisionListener', '"jsExternalCollisionListener"', 'true', 'false', - 'Listener to be set for notification of external collision events', 'backupItem.collision.kind === "JobStealing"') - .details-row - +ignite-form-group - ignite-form-field-label - | Stealing attributes - ignite-form-group-tooltip - | Configuration parameter to enable stealing to/from only nodes that have these attributes set - ignite-form-group-add(ng-click='tableNewItem(stealingAttributesTbl)') - | Add stealing attribute - .group-content-empty(ng-if='!((#{stealingAttributes} && #{stealingAttributes}.length > 0) || tableNewItemActive(stealingAttributesTbl))') - | Not defined - .group-content(ng-show='(#{stealingAttributes} && #{stealingAttributes}.length > 0) || tableNewItemActive(stealingAttributesTbl)') - table.links-edit(id='attributes' st-table=stealingAttributes) - tbody - tr(ng-repeat='item in #{stealingAttributes} track by $index') - td.col-sm-12(ng-show='!tableEditing(stealingAttributesTbl, $index)') - a.labelFormField(ng-click='tableStartEdit(backupItem, stealingAttributesTbl, $index)') {{item.name}} = {{item.value}} - +btn-remove('tableRemove(backupItem, stealingAttributesTbl, $index)', '"Remove attribute"') - td.col-sm-12(ng-show='tableEditing(stealingAttributesTbl, $index)') - +table-pair-edit('stealingAttributesTbl', 'cur', 'Attribute name', 'Attribute value', false, false, '{{::stealingAttributesTbl.focusId + $index}}', '$index', '=') - tfoot(ng-show='tableNewItemActive(stealingAttributesTbl)') - tr - td.col-sm-12 - +table-pair-edit('stealingAttributesTbl', 'new', 'Attribute name', 'Attribute value', false, false, '{{::stealingAttributesTbl.focusId + $index}}', '-1', '=') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.pug new file mode 100644 index 0000000..d10a02e --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/job-stealing.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 model = 'backupItem.collision.JobStealing' +-var stealingAttributes = `${model}.stealingAttributes` + +div + .details-row + +number('Active jobs threshold:', `${model}.activeJobsThreshold`, '"jsActiveJobsThreshold"', 'true', '95', '0', + 'Number of jobs that can be executed in parallel') + .details-row + +number('Wait jobs threshold:', `${model}.waitJobsThreshold`, '"jsWaitJobsThreshold"', 'true', '0', '0', + 'Job count threshold at which this node will start stealing jobs from other nodes') + .details-row + +number('Message expire time:', `${model}.messageExpireTime`, '"jsMessageExpireTime"', 'true', '1000', '1', + 'Message expire time in ms') + .details-row + +number('Maximum stealing attempts:', `${model}.maximumStealingAttempts`, '"jsMaximumStealingAttempts"', 'true', '5', '1', + 'Maximum number of attempts to steal job by another node') + .details-row + +checkbox('Stealing enabled', `${model}.stealingEnabled`, '"jsStealingEnabled"', + 'Node should attempt to steal jobs from other nodes') + .details-row + +java-class('External listener:', `${model}.externalCollisionListener`, '"jsExternalCollisionListener"', 'true', 'false', + 'Listener to be set for notification of external collision events', 'backupItem.collision.kind === "JobStealing"') + .details-row + +ignite-form-group + ignite-form-field-label + | Stealing attributes + ignite-form-group-tooltip + | Configuration parameter to enable stealing to/from only nodes that have these attributes set + ignite-form-group-add(ng-click='tableNewItem(stealingAttributesTbl)') + | Add stealing attribute + .group-content-empty(ng-if=`!((${stealingAttributes} && ${stealingAttributes}.length > 0) || tableNewItemActive(stealingAttributesTbl))`) + | Not defined + .group-content(ng-show=`(${stealingAttributes} && ${stealingAttributes}.length > 0) || tableNewItemActive(stealingAttributesTbl)`) + table.links-edit(id='attributes' st-table=stealingAttributes) + tbody + tr(ng-repeat=`item in ${stealingAttributes} track by $index`) + td.col-sm-12(ng-show='!tableEditing(stealingAttributesTbl, $index)') + a.labelFormField(ng-click='tableStartEdit(backupItem, stealingAttributesTbl, $index)') {{item.name}} = {{item.value}} + +btn-remove('tableRemove(backupItem, stealingAttributesTbl, $index)', '"Remove attribute"') + td.col-sm-12(ng-show='tableEditing(stealingAttributesTbl, $index)') + +table-pair-edit('stealingAttributesTbl', 'cur', 'Attribute name', 'Attribute value', false, false, '{{::stealingAttributesTbl.focusId + $index}}', '$index', '=') + tfoot(ng-show='tableNewItemActive(stealingAttributesTbl)') + tr + td.col-sm-12 + +table-pair-edit('stealingAttributesTbl', 'new', 'Attribute name', 'Attribute value', false, false, '{{::stealingAttributesTbl.focusId + $index}}', '-1', '=') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.jade deleted file mode 100644 index 6f52ee0..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.jade +++ /dev/null @@ -1,42 +0,0 @@ -//- - 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.jade - --var model = 'backupItem.collision.PriorityQueue' - -div - .details-row - +number('Parallel jobs number:', model + '.parallelJobsNumber', '"priorityParallelJobsNumber"', 'true', 'availableProcessors * 2', '1', - 'Number of jobs that can be executed in parallel') - .details-row - +number('Waiting jobs number:', model + '.waitingJobsNumber', '"priorityWaitingJobsNumber"', 'true', 'Integer.MAX_VALUE', '0', - 'Maximum number of jobs that are allowed to wait in waiting queue') - .details-row - +text('Priority attribute key:', model + '.priorityAttributeKey', '"priorityPriorityAttributeKey"', 'false', 'grid.task.priority', - 'Task priority attribute key') - .details-row - +text('Job priority attribute key:', model + '.jobPriorityAttributeKey', '"priorityJobPriorityAttributeKey"', 'false', 'grid.job.priority', - 'Job priority attribute key') - .details-row - +number('Default priority:', model + '.defaultPriority', '"priorityDefaultPriority"', 'true', '0', '0', - 'Default priority to use if a job does not have priority attribute set') - .details-row - +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') - .details-row - +checkbox('Starvation prevention enabled', model + '.starvationPreventionEnabled', '"priorityStarvationPreventionEnabled"', - 'Job starvation prevention is enabled') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.pug new file mode 100644 index 0000000..04056df --- /dev/null +++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/collision/priority-queue.pug @@ -0,0 +1,42 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var model = 'backupItem.collision.PriorityQueue' + +div + .details-row + +number('Parallel jobs number:', `${model}.parallelJobsNumber`, '"priorityParallelJobsNumber"', 'true', 'availableProcessors * 2', '1', + 'Number of jobs that can be executed in parallel') + .details-row + +number('Waiting jobs number:', `${model}.waitingJobsNumber`, '"priorityWaitingJobsNumber"', 'true', 'Integer.MAX_VALUE', '0', + 'Maximum number of jobs that are allowed to wait in waiting queue') + .details-row + +text('Priority attribute key:', `${model}.priorityAttributeKey`, '"priorityPriorityAttributeKey"', 'false', 'grid.task.priority', + 'Task priority attribute key') + .details-row + +text('Job priority attribute key:', `${model}.jobPriorityAttributeKey`, '"priorityJobPriorityAttributeKey"', 'false', 'grid.job.priority', + 'Job priority attribute key') + .details-row + +number('Default priority:', `${model}.defaultPriority`, '"priorityDefaultPriority"', 'true', '0', '0', + 'Default priority to use if a job does not have priority attribute set') + .details-row + +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') + .details-row + +checkbox('Starvation prevention enabled', `${model}.starvationPreventionEnabled`, '"priorityStarvationPreventionEnabled"', + 'Job starvation prevention is enabled') http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/modules/web-console/frontend/app/modules/states/configuration/clusters/communication.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/communication.jade b/modules/web-console/frontend/app/modules/states/configuration/clusters/communication.jade deleted file mode 100644 index 047c9a2..0000000 --- a/modules/web-console/frontend/app/modules/states/configuration/clusters/communication.jade +++ /dev/null @@ -1,100 +0,0 @@ -//- - 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.jade - --var form = 'communication' --var model = 'backupItem' --var communication = model + '.communication' - -.panel.panel-default(ng-form=form novalidate) - .panel-heading(bs-collapse-toggle ng-click='ui.loadPanel("#{form}")') - ignite-form-panel-chevron - label Communication - ignite-form-field-tooltip.tipLabel - | 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#[br] - | #[a(href="https://apacheignite.readme.io/docs/network-config" target="_blank") More info] - ignite-form-revert - .panel-collapse(role='tabpanel' bs-collapse-target id=form) - .panel-body(ng-if='ui.isPanelLoaded("#{form}")') - .col-sm-6 - .settings-row - +number('Timeout:', model + '.networkTimeout', '"commNetworkTimeout"', 'true', '5000', '1', 'Maximum timeout in milliseconds for network requests') - .settings-row - +number('Send retry delay:', model + '.networkSendRetryDelay', '"networkSendRetryDelay"', 'true', '1000', '1', 'Interval in milliseconds between message send retries') - .settings-row - +number('Send retry count:', model + '.networkSendRetryCount', '"networkSendRetryCount"', 'true', '3', '1', 'Message send retries count') - .settings-row - +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') - .settings-row - +java-class('Communication listener:', communication + '.listener', '"comListener"', 'true', 'false', 'Listener of communication events') - .settings-row - +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') - .settings-row - +number-min-max('Local port:', communication + '.localPort', '"comLocalPort"', 'true', '47100', '1024', '65535', 'Local port for socket binding') - .settings-row - +number('Local port range:', communication + '.localPortRange', '"comLocalPortRange"', 'true', '100', '1', 'Local port range for local host ports') - .settings-row - +number-min-max('Shared memory port:', communication + '.sharedMemoryPort', '"sharedMemoryPort"', 'true', '48100', '-1', '65535', - 'Local port to accept shared memory connections<br/>\ - If set to #[b -1] shared memory communication will be disabled') - .settings-row - +number('Idle connection timeout:', communication + '.idleConnectionTimeout', '"idleConnectionTimeout"', 'true', '30000', '1', - 'Maximum idle connection timeout upon which a connection to client will be closed') - .settings-row - +number('Connect timeout:', communication + '.connectTimeout', '"connectTimeout"', 'true', '5000', '0', 'Connect timeout used when establishing connection with remote nodes') - .settings-row - +number('Maximum connect timeout:', communication + '.maxConnectTimeout', '"maxConnectTimeout"', 'true', '600000', '0', 'Maximum connect timeout') - .settings-row - +number('Reconnect count:', communication + '.reconnectCount', '"comReconnectCount"', 'true', '10', '1', - 'Maximum number of reconnect attempts used when establishing connection with remote nodes') - .settings-row - +number('Socket send buffer:', communication + '.socketSendBuffer', '"socketSendBuffer"', 'true', '32768', '0', 'Send buffer size for sockets created or accepted by this SPI') - .settings-row - +number('Socket receive buffer:', communication + '.socketReceiveBuffer', '"socketReceiveBuffer"', 'true', '32768', '0', 'Receive buffer size for sockets created or accepted by this SPI') - .settings-row - +number('Slow client queue limit:', communication + '.slowClientQueueLimit', '"slowClientQueueLimit"', 'true', '0', '0', 'Slow client queue limit') - .settings-row - +number('Ack send threshold:', communication + '.ackSendThreshold', '"ackSendThreshold"', 'true', '16', '1', 'Number of received messages per connection to node after which acknowledgment message is sent') - .settings-row - +number('Message queue limit:', communication + '.messageQueueLimit', '"messageQueueLimit"', 'true', '1024', '0', 'Message queue limit for incoming and outgoing messages') - .settings-row - +number('Unacknowledged messages:', communication + '.unacknowledgedMessagesBufferSize', '"unacknowledgedMessagesBufferSize"', 'true', '0', '0', - '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 * 5</li>\ - <li>At least message queue limit * 5</li>\ - </ul>') - .settings-row - +number('Socket write timeout:', communication + '.socketWriteTimeout', '"socketWriteTimeout"', 'true', '2000', '0', 'Socket write timeout') - .settings-row - +number('Selectors count:', communication + '.selectorsCount', '"selectorsCount"', 'true', 'min(4, availableProcessors)', '1', 'Count of selectors te be used in TCP server') - .settings-row - +java-class('Address resolver:', communication + '.addressResolver', '"comAddressResolver"', 'true', 'false', 'Provides resolution between external and internal addresses') - .settings-row - +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') - .settings-row - +checkbox('Direct send buffer', communication + '.directSendBuffer', '"directSendBuffer"', 'Flag defining whether direct send buffer should be used') - .settings-row - +checkbox('TCP_NODELAY option', communication + '.tcpNoDelay', '"tcpNoDelay"', 'Value for TCP_NODELAY socket option') - .col-sm-6 - +preview-xml-java(model, 'clusterCommunication')