http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/connector.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/connector.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/connector.pug index 76c5016..fd52e5c 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/connector.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/connector.pug @@ -24,77 +24,209 @@ include /app/helpers/jade/mixins panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) panel-title Connector configuration panel-description - | Configure HTTP REST configuration to enable HTTP server features. + | Configure HTTP REST configuration to enable HTTP server features. | #[a.link-success(href="https://apacheignite.readme.io/docs/rest-api#general-configuration" 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 - +checkbox('Enabled', enabled, '"restEnabled"', 'Flag indicating whether to configure connector configuration') + +form-field__checkbox({ + label: 'Enabled', + model: enabled, + name: '"restEnabled"', + tip: 'Flag indicating whether to configure connector configuration' + }) .pc-form-grid-col-60 - +text-enabled('Jetty configuration path:', `${model}.jettyPath`, '"connectorJettyPath"', enabled, 'false', 'Input path to Jetty configuration', - 'Path, either absolute or relative to IGNITE_HOME, to Jetty XML configuration file<br/>\ - Jetty is used to support REST over HTTP protocol for accessing Ignite APIs remotely<br/>\ - If not provided, Jetty instance with default configuration will be started picking IgniteSystemProperties.IGNITE_JETTY_HOST and IgniteSystemProperties.IGNITE_JETTY_PORT as host and port respectively') + +form-field__text({ + label: 'Jetty configuration path:', + model: `${model}.jettyPath`, + name: '"connectorJettyPath"', + disabled: `!(${enabled})`, + placeholder: 'Input path to Jetty configuration', + tip: 'Path, either absolute or relative to IGNITE_HOME, to Jetty XML configuration file<br/>\ + Jetty is used to support REST over HTTP protocol for accessing Ignite APIs remotely<br/>\ + If not provided, Jetty instance with default configuration will be started picking IgniteSystemProperties.IGNITE_JETTY_HOST and IgniteSystemProperties.IGNITE_JETTY_PORT as host and port respectively' + }) .pc-form-grid-col-20 - +text-ip-address('TCP host:', `${model}.host`, '"connectorHost"', enabled, 'IgniteConfiguration#getLocalHost()', - 'Host for TCP binary protocol server<br/>\ - This can be either an IP address or a domain name<br/>\ - If not defined, system - wide local address will be used IgniteConfiguration#getLocalHost()<br/>\ - You can also use "0.0.0.0" value to bind to all locally - available IP addresses') + +form-field__ip-address({ + label:'TCP host:', + model: `${model}.host`, + name: '"connectorHost"', + enabled: enabled, + placeholder: 'IgniteConfiguration#getLocalHost()', + tip: 'Host for TCP binary protocol server<br/>\ + This can be either an IP address or a domain name<br/>\ + If not defined, system - wide local address will be used IgniteConfiguration#getLocalHost()<br/>\ + You can also use "0.0.0.0" value to bind to all locally - available IP addresses' + }) .pc-form-grid-col-20 - +number-min-max('TCP port:', `${model}.port`, '"connectorPort"', enabled, '11211', '1024', '65535', 'Port for TCP binary protocol server') + +form-field__number({ + label: 'TCP port:', + model: `${model}.port`, + name: '"connectorPort"', + disabled: `!(${enabled})`, + placeholder: '11211', + min: '1024', + max: '65535', + tip: 'Port for TCP binary protocol server' + }) .pc-form-grid-col-20 - +number('TCP port range:', `${model}.portRange`, '"connectorPortRange"', enabled, '100', '1', 'Number of ports for TCP binary protocol server to try if configured port is already in use') + +form-field__number({ + label: 'TCP port range:', + model: `${model}.portRange`, + name: '"connectorPortRange"', + disabled: `!(${enabled})`, + placeholder: '100', + min: '1', + tip: 'Number of ports for TCP binary protocol server to try if configured port is already in use' + }) .pc-form-grid-col-60 - +number('Idle query cursor timeout:', `${model}.idleQueryCursorTimeout`, '"connectorIdleQueryCursorTimeout"', enabled, '600000', '0', - 'Reject open query cursors that is not used timeout<br/>\ - If no fetch query request come within idle timeout, it will be removed on next check for old query cursors') + +form-field__number({ + label: 'Idle query cursor timeout:', + model: `${model}.idleQueryCursorTimeout`, + name: '"connectorIdleQueryCursorTimeout"', + disabled: `!(${enabled})`, + placeholder: '600000', + min: '0', + tip: 'Reject open query cursors that is not used timeout<br/>\ + If no fetch query request come within idle timeout, it will be removed on next check for old query cursors' + }) .pc-form-grid-col-60 - +number('Idle query cursor check frequency:', `${model}.idleQueryCursorCheckFrequency`, '"connectorIdleQueryCursorCheckFrequency"', enabled, '60000', '0', - 'Idle query cursors check frequency<br/>\ - This setting is used to reject open query cursors that is not used') + +form-field__number({ + label: 'Idle query cursor check frequency:', + model: `${model}.idleQueryCursorCheckFrequency`, + name: '"connectorIdleQueryCursorCheckFrequency"', + disabled: `!(${enabled})`, + placeholder: '60000', + min: '0', + tip: 'Idle query cursors check frequency<br/>\ + This setting is used to reject open query cursors that is not used' + }) .pc-form-grid-col-30 - +number('Idle timeout:', `${model}.idleTimeout`, '"connectorIdleTimeout"', enabled, '7000', '0', - 'Idle timeout for REST server<br/>\ - This setting is used to reject half - opened sockets<br/>\ - If no packets come within idle timeout, the connection is closed') + +form-field__number({ + label: 'Idle timeout:', + model: `${model}.idleTimeout`, + name: '"connectorIdleTimeout"', + disabled: `!(${enabled})`, + placeholder: '7000', + min: '0', + tip: 'Idle timeout for REST server<br/>\ + This setting is used to reject half - opened sockets<br/>\ + If no packets come within idle timeout, the connection is closed' + }) .pc-form-grid-col-30 - +number('Receive buffer size:', `${model}.receiveBufferSize`, '"connectorReceiveBufferSize"', enabled, '32768', '0', 'REST TCP server receive buffer size') + +form-field__number({ + label: 'Receive buffer size:', + model: `${model}.receiveBufferSize`, + name: '"connectorReceiveBufferSize"', + disabled: `!(${enabled})`, + placeholder: '32768', + min: '0', + tip: 'REST TCP server receive buffer size' + }) .pc-form-grid-col-30 - +number('Send buffer size:', `${model}.sendBufferSize`, '"connectorSendBufferSize"', enabled, '32768', '0', 'REST TCP server send buffer size') + +form-field__number({ + label: 'Send buffer size:', + model: `${model}.sendBufferSize`, + name: '"connectorSendBufferSize"', + disabled: `!(${enabled})`, + placeholder: '32768', + min: '0', + tip: 'REST TCP server send buffer size' + }) .pc-form-grid-col-30 - +number('Send queue limit:', `${model}.sendQueueLimit`, '"connectorSendQueueLimit"', enabled, 'unlimited', '0', - 'REST TCP server send queue limit<br/>\ - If the limit exceeds, all successive writes will block until the queue has enough capacity') + +form-field__number({ + label: 'Send queue limit:', + model: `${model}.sendQueueLimit`, + name: '"connectorSendQueueLimit"', + disabled: `!(${enabled})`, + placeholder: 'unlimited', + min: '0', + tip: 'REST TCP server send queue limit<br/>\ + If the limit exceeds, all successive writes will block until the queue has enough capacity' + }) .pc-form-grid-col-60 - +checkbox-enabled('Direct buffer', `${model}.directBuffer`, '"connectorDirectBuffer"', enabled, - 'Flag indicating whether REST TCP server should use direct buffers<br/>\ - A direct buffer is a buffer that is allocated and accessed using native system calls, without using JVM heap<br/>\ - Enabling direct buffer may improve performance and avoid memory issues(long GC pauses due to huge buffer size)') + +form-field__checkbox({ + label: 'Direct buffer', + model: `${model}.directBuffer`, + name: '"connectorDirectBuffer"', + disabled: `!${enabled}`, + tip: 'Flag indicating whether REST TCP server should use direct buffers<br/>\ + A direct buffer is a buffer that is allocated and accessed using native system calls, without using JVM heap<br/>\ + Enabling direct buffer may improve performance and avoid memory issues(long GC pauses due to huge buffer size)' + }) .pc-form-grid-col-60 - +checkbox-enabled('TCP_NODELAY option', `${model}.noDelay`, '"connectorNoDelay"', enabled, - 'Flag indicating whether TCP_NODELAY option should be set for accepted client connections<br/>\ - Setting this option reduces network latency and should be enabled in majority of cases<br/>\ - For more information, see Socket#setTcpNoDelay(boolean)') + +form-field__checkbox({ + label: 'TCP_NODELAY option', + model: `${model}.noDelay`, + name: '"connectorNoDelay"', + disabled: `!${enabled}`, + tip: 'Flag indicating whether TCP_NODELAY option should be set for accepted client connections<br/>\ + Setting this option reduces network latency and should be enabled in majority of cases<br/>\ + For more information, see Socket#setTcpNoDelay(boolean)' + }) .pc-form-grid-col-30 - +number('Selector count:', `${model}.selectorCount`, '"connectorSelectorCount"', enabled, 'min(4, availableProcessors)', '1', - 'Number of selector threads in REST TCP server<br/>\ - Higher value for this parameter may increase throughput, but also increases context switching') + +form-field__number({ + label: 'Selector count:', + model: `${model}.selectorCount`, + name: '"connectorSelectorCount"', + disabled: `!(${enabled})`, + placeholder: 'min(4, availableProcessors)', + min: '1', + tip: 'Number of selector threads in REST TCP server<br/>\ + Higher value for this parameter may increase throughput, but also increases context switching' + }) .pc-form-grid-col-30 - +number('Thread pool size:', `${model}.threadPoolSize`, '"connectorThreadPoolSize"', enabled, 'max(8, availableProcessors) * 2', '1', - 'Thread pool size to use for processing of client messages (REST requests)') + +form-field__number({ + label: 'Thread pool size:', + model: `${model}.threadPoolSize`, + name: '"connectorThreadPoolSize"', + disabled: `!(${enabled})`, + placeholder: 'max(8, availableProcessors) * 2', + min: '1', + tip: 'Thread pool size to use for processing of client messages (REST requests)' + }) .pc-form-grid-col-60 - +java-class('Message interceptor:', `${model}.messageInterceptor`, '"connectorMessageInterceptor"', enabled, 'false', - 'Interceptor allows to transform all objects exchanged via REST protocol<br/>\ - For example if you use custom serialisation on client you can write interceptor to transform binary representations received from client to Java objects and later access them from java code directly') + +form-field__java-class({ + label: 'Message interceptor:', + model: `${model}.messageInterceptor`, + name: '"connectorMessageInterceptor"', + disabled: `!(${enabled})`, + tip: 'Interceptor allows to transform all objects exchanged via REST protocol<br/>\ + For example if you use custom serialisation on client you can write interceptor to transform binary representations received from client to Java objects and later access them from java code directly' + }) .pc-form-grid-col-60 - +text-enabled('Secret key:', `${model}.secretKey`, '"connectorSecretKey"', enabled, 'false', 'Specify to enable authentication', 'Secret key to authenticate REST requests') + +form-field__text({ + label: 'Secret key:', + model: `${model}.secretKey`, + name: '"connectorSecretKey"', + disabled: `!(${enabled})`, + placeholder: 'Specify to enable authentication', + tip: 'Secret key to authenticate REST requests' + }) .pc-form-grid-col-60 - +checkbox-enabled('Enable SSL', `${model}.sslEnabled`, '"connectorSslEnabled"', enabled, 'Enables/disables SSL for REST TCP binary protocol') + +form-field__checkbox({ + label: 'Enable SSL', + model: `${model}.sslEnabled`, + name: '"connectorSslEnabled"', + disabled: `!${enabled}`, + tip: 'Enables/disables SSL for REST TCP binary protocol' + }) .pc-form-grid-col-60 - +checkbox-enabled('Enable SSL client auth', `${model}.sslClientAuth`, '"connectorSslClientAuth"', sslEnabled, 'Flag indicating whether or not SSL client authentication is required') + +form-field__checkbox({ + label: 'Enable SSL client auth', + model: `${model}.sslClientAuth`, + name: '"connectorSslClientAuth"', + disabled: `!(${sslEnabled})`, + tip: 'Flag indicating whether or not SSL client authentication is required' + }) .pc-form-grid-col-60 - +java-class('SSL factory:', `${model}.sslFactory`, '"connectorSslFactory"', sslEnabled, sslEnabled, - 'Instance of Factory that will be used to create an instance of SSLContext for Secure Socket Layer on TCP binary protocol') + +form-field__java-class({ + label: 'SSL factory:', + model: `${model}.sslFactory`, + name: '"connectorSslFactory"', + disabled: `!(${sslEnabled})`, + required: sslEnabled, + tip: 'Instance of Factory that will be used to create an instance of SSLContext for Secure Socket Layer on TCP binary protocol' + }) .pca-form-column-6 +preview-xml-java(model, 'clusterConnector')
http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/data-storage.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/data-storage.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/data-storage.pug index 4af3a51..e18b0cb 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/data-storage.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/data-storage.pug @@ -60,24 +60,42 @@ mixin data-region-form({modelAt, namePlaceholder, dataRegionsAt}) ) .pc-form-grid-col-60(ng-if=`!${modelAt}.persistenceEnabled || ${modelAt}.swapPath`) - +text('Swap file path:', `${modelAt}.swapPath`, '"swapPath"', 'false', 'Input swap file path', 'An optional path to a memory mapped file for this data region') - + +form-field__text({ + label: 'Swap file path:', + model: `${modelAt}.swapPath`, + name: '"swapPath"', + placeholder: 'Input swap file path', + tip: 'An optional path to a memory mapped file for this data region' + }) + .pc-form-grid-col-60 - +number('Checkpoint page buffer:', `${modelAt}.checkpointPageBufferSize`, '"checkpointPageBufferSize"', 'true', '0', '0', 'Amount of memory allocated for a checkpoint temporary buffer in bytes') + +form-field__number({ + label: 'Checkpoint page buffer:', + model: `${modelAt}.checkpointPageBufferSize`, + name: '"checkpointPageBufferSize"', + placeholder: '0', + min: '0', + tip: 'Amount of memory allocated for a checkpoint temporary buffer in bytes' + }) .pc-form-grid-col-60 - +dropdown('Eviction mode:', `${modelAt}.pageEvictionMode`, '"pageEvictionMode"', 'true', 'DISABLED', - '[\ + +form-field__dropdown({ + label: 'Entry versioning:', + model: `${modelAt}.pageEvictionMode`, + name: '"pageEvictionMode"', + placeholder: 'DISABLED', + options: '[\ {value: "DISABLED", label: "DISABLED"},\ {value: "RANDOM_LRU", label: "RANDOM_LRU"},\ {value: "RANDOM_2_LRU", label: "RANDOM_2_LRU"}\ ]', - `An algorithm for memory pages eviction - <ul> - <li>DISABLED - Eviction is disabled</li> - <li>RANDOM_LRU - Once a memory region defined by a data region is configured, an off-heap array is allocated to track last usage timestamp for every individual data page</li> - <li>RANDOM_2_LRU - Differs from Random - LRU only in a way that two latest access timestamps are stored for every data page</li> - </ul>`) + tip: `An algorithm for memory pages eviction + <ul> + <li>DISABLED - Eviction is disabled</li> + <li>RANDOM_LRU - Once a memory region defined by a data region is configured, an off-heap array is allocated to track last usage timestamp for every individual data page</li> + <li>RANDOM_2_LRU - Differs from Random - LRU only in a way that two latest access timestamps are stored for every data page</li> + </ul>` + }) .pc-form-grid-col-30 +form-field__number({ @@ -126,19 +144,27 @@ mixin data-region-form({modelAt, namePlaceholder, dataRegionsAt}) on-scale-change='_metricsRateTimeIntervalScale = $event' size-scale-label='s' ) - + .pc-form-grid-col-60 - +checkbox('Metrics enabled', `${modelAt}.metricsEnabled`, '"MemoryPolicyMetricsEnabled"', - 'Whether memory metrics are enabled by default on node startup') + +form-field__checkbox({ + label: 'Metrics enabled', + model: `${modelAt}.metricsEnabled`, + name: '"MemoryPolicyMetricsEnabled"', + tip: 'Whether memory metrics are enabled by default on node startup' + }) .pc-form-grid-col-60(ng-if=`!${modelAt}.swapPath`) - +checkbox('Persistence enabled', `${modelAt}.persistenceEnabled`, '"RegionPersistenceEnabled" + $index', - 'Enable Ignite Native Persistence') + +form-field__checkbox({ + label: 'Persistence enabled', + model: `${modelAt}.persistenceEnabled`, + name: '"RegionPersistenceEnabled" + $index', + tip: 'Enable Ignite Native Persistence' + }) panel-collapsible(ng-show='$ctrl.available("2.3.0")' ng-form=form on-open=`ui.loadPanel('${form}')`) panel-title Data storage configuration panel-description - | Page memory is a manageable off-heap based memory architecture that is split into pages of fixed size. + | Page memory is a manageable off-heap based memory architecture that is split into pages of fixed size. | #[a.link-success(href="https://apacheignite.readme.io/docs/distributed-persistent-store" target="_blank") More info] panel-content.pca-form-row(ng-if=`$ctrl.available("2.3.0") && ui.isPanelLoaded('${form}')`) .pca-form-column-6.pc-form-grid-row @@ -151,8 +177,14 @@ panel-collapsible(ng-show='$ctrl.available("2.3.0")' ng-form=form on-open=`ui.lo tip: 'Every memory region is split on pages of fixed size' }) .pc-form-grid-col-30 - +number('Concurrency level:', model + '.concurrencyLevel', '"DataStorageConfigurationConcurrencyLevel"', - 'true', 'availableProcessors', '2', 'The number of concurrent segments in Ignite internal page mapping tables') + +form-field__number({ + label: 'Concurrency level:', + model: model + '.concurrencyLevel', + name: '"DataStorageConfigurationConcurrencyLevel"', + placeholder: 'availableProcessors', + min: '2', + tip: 'The number of concurrent segments in Ignite internal page mapping tables' + }) .pc-form-grid-col-60.pc-form-group__text-title span System region .pc-form-group.pc-form-grid-row @@ -208,97 +240,237 @@ panel-collapsible(ng-show='$ctrl.available("2.3.0")' ng-form=form on-open=`ui.lo ) .pc-form-grid-col-60 - +text-enabled('Storage path:', `${model}.storagePath`, '"DataStoragePath"', 'true', 'false', 'db', - 'Directory where index and partition files are stored') + +form-field__text({ + label: 'Storage path:', + model: `${model}.storagePath`, + name: '"DataStoragePath"', + placeholder: 'db', + tip: 'Directory where index and partition files are stored' + }) .pc-form-grid-col-60 - +number('Checkpoint frequency:', `${model}.checkpointFrequency`, '"DataStorageCheckpointFrequency"', 'true', '180000', '1', - 'Frequency which is a minimal interval when the dirty pages will be written to the Persistent Store') + +form-field__number({ + label: 'Checkpoint frequency:', + model: `${model}.checkpointFrequency`, + name: '"DataStorageCheckpointFrequency"', + placeholder: '180000', + min: '1', + tip: 'Frequency which is a minimal interval when the dirty pages will be written to the Persistent Store' + }) .pc-form-grid-col-20 - +number('Checkpoint threads:', `${model}.checkpointThreads`, '"DataStorageCheckpointThreads"', 'true', '4', '1', 'A number of threads to use for the checkpoint purposes') + +form-field__number({ + label: 'Checkpoint threads:', + model: `${model}.checkpointThreads`, + name: '"DataStorageCheckpointThreads"', + placeholder: '4', + min: '1', + tip: 'A number of threads to use for the checkpoint purposes' + }) .pc-form-grid-col-20 - +dropdown('Checkpoint write order:', `${model}.checkpointWriteOrder`, '"DataStorageCheckpointWriteOrder"', 'true', 'SEQUENTIAL', - '[\ + +form-field__dropdown({ + label: 'Checkpoint write order:', + model: `${model}.checkpointWriteOrder`, + name: '"DataStorageCheckpointWriteOrder"', + placeholder: 'SEQUENTIAL', + options: '[\ {value: "RANDOM", label: "RANDOM"},\ {value: "SEQUENTIAL", label: "SEQUENTIAL"}\ ]', - 'Order of writing pages to disk storage during checkpoint.\ - <ul>\ - <li>RANDOM - Pages are written in order provided by checkpoint pages collection iterator</li>\ - <li>SEQUENTIAL - All checkpoint pages are collected into single list and sorted by page index</li>\ - </ul>') + tip: 'Order of writing pages to disk storage during checkpoint.\ + <ul>\ + <li>RANDOM - Pages are written in order provided by checkpoint pages collection iterator</li>\ + <li>SEQUENTIAL - All checkpoint pages are collected into single list and sorted by page index</li>\ + </ul>' + }) .pc-form-grid-col-20 - +dropdown('WAL mode:', `${model}.walMode`, '"DataStorageWalMode"', 'true', 'DEFAULT', - '[\ + +form-field__dropdown({ + label: 'WAL mode:', + model: `${model}.walMode`, + name: '"DataStorageWalMode"', + placeholder: 'DEFAULT', + options: '[\ {value: "DEFAULT", label: "DEFAULT"},\ {value: "LOG_ONLY", label: "LOG_ONLY"},\ {value: "BACKGROUND", label: "BACKGROUND"},\ {value: "NONE", label: "NONE"}\ ]', - 'Type define behavior wal fsync.\ - <ul>\ - <li>DEFAULT - full-sync disk writes</li>\ - <li>LOG_ONLY - flushes application buffers</li>\ - <li>BACKGROUND - does not force application's buffer flush</li>\ - <li>NONE - WAL is disabled</li>\ - </ul>') + tip: 'Type define behavior wal fsync.\ + <ul>\ + <li>DEFAULT - full-sync disk writes</li>\ + <li>LOG_ONLY - flushes application buffers</li>\ + <li>BACKGROUND - does not force application's buffer flush</li>\ + <li>NONE - WAL is disabled</li>\ + </ul>' + }) .pc-form-grid-col-60 - +text-enabled('WAL path:', `${model}.walPath`, '"DataStorageWalPath"', 'true', 'false', 'db/wal', 'A path to the directory where WAL is stored') + +form-field__text({ + label: 'WAL path:', + model: `${model}.walPath`, + name: '"DataStorageWalPath"', + placeholder: 'db/wal', + tip: 'A path to the directory where WAL is stored' + }) .pc-form-grid-col-60 - +text-enabled('WAL archive path:', `${model}.walArchivePath`, '"DataStorageWalArchivePath"', 'true', 'false', 'db/wal/archive', 'A path to the WAL archive directory') + +form-field__text({ + label: 'WAL archive path:', + model: `${model}.walArchivePath`, + name: '"DataStorageWalArchivePath"', + placeholder: 'db/wal/archive', + tip: 'A path to the WAL archive directory' + }) .pc-form-grid-col-20 - +number('WAL segments:', `${model}.walSegments`, '"DataStorageWalSegments"', 'true', '10', '1', 'A number of WAL segments to work with') + +form-field__number({ + label: 'WAL segments:', + model: `${model}.walSegments`, + name: '"DataStorageWalSegments"', + placeholder: '10', + min: '1', + tip: 'A number of WAL segments to work with' + }) .pc-form-grid-col-20 - +number('WAL segment size:', `${model}.walSegmentSize`, '"DataStorageWalSegmentSize"', 'true', '67108864', '0', 'Size of a WAL segment') + +form-field__number({ + label: 'WAL segment size:', + model: `${model}.walSegmentSize`, + name: '"DataStorageWalSegmentSize"', + placeholder: '67108864', + min: '0', + tip: 'Size of a WAL segment' + }) .pc-form-grid-col-20 - +number('WAL history size:', `${model}.walHistorySize`, '"DataStorageWalHistorySize"', 'true', '20', '1', 'A total number of checkpoints to keep in the WAL history') + +form-field__number({ + label: 'WAL history size:', + model: `${model}.walHistorySize`, + name: '"DataStorageWalHistorySize"', + placeholder: '20', + min: '1', + tip: 'A total number of checkpoints to keep in the WAL history' + }) .pc-form-grid-col-60(ng-if='$ctrl.available("2.4.0")') - +number('WAL buffer size:', `${model}.walBufferSize`, '"DataStorageWalBufferSize"', 'true', 'WAL segment size / 4', '1', - 'Size of WAL buffer') + +form-field__number({ + label: 'WAL buffer size:', + model: `${model}.walBufferSize`, + name: '"DataStorageWalBufferSize"', + placeholder: 'WAL segment size / 4', + min: '1', + tip: 'Size of WAL buffer' + }) .pc-form-grid-col-30 - +number('WAL flush frequency:', `${model}.walFlushFrequency`, '"DataStorageWalFlushFrequency"', 'true', '2000', '1', - 'How often will be fsync, in milliseconds. In background mode, exist thread which do fsync by timeout') + +form-field__number({ + label: 'WAL flush frequency:', + model: `${model}.walFlushFrequency`, + name: '"DataStorageWalFlushFrequency"', + placeholder: '2000', + min: '1', + tip: 'How often will be fsync, in milliseconds. In background mode, exist thread which do fsync by timeout' + }) .pc-form-grid-col-30 - +number('WAL fsync delay:', `${model}.walFsyncDelayNanos`, '"DataStorageWalFsyncDelay"', 'true', '1000', '1', 'WAL fsync delay, in nanoseconds') + +form-field__number({ + label: 'WAL fsync delay:', + model: `${model}.walFsyncDelayNanos`, + name: '"DataStorageWalFsyncDelay"', + placeholder: '1000', + min: '1', + tip: 'WAL fsync delay, in nanoseconds' + }) .pc-form-grid-col-60 - +number('WAL record iterator buffer size:', `${model}.walRecordIteratorBufferSize`, '"DataStorageWalRecordIteratorBufferSize"', 'true', '67108864', '1', - 'How many bytes iterator read from disk(for one reading), during go ahead WAL') + +form-field__number({ + label: 'WAL record iterator buffer size:', + model: `${model}.walRecordIteratorBufferSize`, + name: '"DataStorageWalRecordIteratorBufferSize"', + placeholder: '67108864', + min: '1', + tip: 'How many bytes iterator read from disk(for one reading), during go ahead WAL' + }) .pc-form-grid-col-30 - +number('Lock wait time:', `${model}.lockWaitTime`, '"DataStorageLockWaitTime"', 'true', '10000', '1', - 'Time out in milliseconds, while wait and try get file lock for start persist manager') + +form-field__number({ + label: 'Lock wait time:', + model: `${model}.lockWaitTime`, + name: '"DataStorageLockWaitTime"', + placeholder: '10000', + min: '1', + tip: 'Time out in milliseconds, while wait and try get file lock for start persist manager' + }) .pc-form-grid-col-30 - +number('WAL thread local buffer size:', `${model}.walThreadLocalBufferSize`, '"DataStorageWalThreadLocalBufferSize"', 'true', '131072', '1', - 'Define size thread local buffer. Each thread which write to WAL have thread local buffer for serialize recode before write in WAL') + +form-field__number({ + label: 'WAL thread local buffer size:', + model: `${model}.walThreadLocalBufferSize`, + name: '"DataStorageWalThreadLocalBufferSize"', + placeholder: '131072', + min: '1', + tip: 'Define size thread local buffer. Each thread which write to WAL have thread local buffer for serialize recode before write in WAL' + }) .pc-form-grid-col-30 - +number('Metrics sub interval count:', `${model}.metricsSubIntervalCount`, '"DataStorageMetricsSubIntervalCount"', 'true', '5', '1', - 'Number of sub - intervals the whole rate time interval will be split into to calculate rate - based metrics') + +form-field__number({ + label: 'Metrics sub interval count:', + model: `${model}.metricsSubIntervalCount`, + name: '"DataStorageMetricsSubIntervalCount"', + placeholder: '5', + min: '1', + tip: 'Number of sub - intervals the whole rate time interval will be split into to calculate rate - based metrics' + }) .pc-form-grid-col-30 - +number('Metrics rate time interval:', `${model}.metricsRateTimeInterval`, '"DataStorageMetricsRateTimeInterval"', 'true', '60000', '1000', - 'The length of the time interval for rate - based metrics. This interval defines a window over which hits will be tracked') + +form-field__number({ + label: 'Metrics rate time interval:', + model: `${model}.metricsRateTimeInterval`, + name: '"DataStorageMetricsRateTimeInterval"', + placeholder: '60000', + min: '1000', + tip: 'The length of the time interval for rate - based metrics. This interval defines a window over which hits will be tracked' + }) .pc-form-grid-col-30 - +dropdown('File IO factory:', `${model}.fileIOFactory`, '"DataStorageFileIOFactory"', 'true', 'Default', - '[\ + +form-field__dropdown({ + label: 'File IO factory:', + model: `${model}.fileIOFactory`, + name: '"DataStorageFileIOFactory"', + placeholder: 'Default', + options: '[\ {value: "RANDOM", label: "RANDOM"},\ {value: "ASYNC", label: "ASYNC"},\ {value: null, label: "Default"},\ ]', - 'Order of writing pages to disk storage during checkpoint.\ - <ul>\ - <li>RANDOM - Pages are written in order provided by checkpoint pages collection iterator</li>\ - <li>SEQUENTIAL - All checkpoint pages are collected into single list and sorted by page index</li>\ - </ul>') + tip: 'Order of writing pages to disk storage during checkpoint.\ + <ul>\ + <li>RANDOM - Pages are written in order provided by checkpoint pages collection iterator</li>\ + <li>SEQUENTIAL - All checkpoint pages are collected into single list and sorted by page index</li>\ + </ul>' + }) + .pc-form-grid-col-30 - +number('WAL auto archive after inactivity:', `${model}.walAutoArchiveAfterInactivity`, '"DataStorageWalAutoArchiveAfterInactivity"', 'true', '-1', '-1', - 'Time in millis to run auto archiving segment after last record logging') + +form-field__number({ + label: 'WAL auto archive after inactivity:', + model: `${model}.walAutoArchiveAfterInactivity`, + name: '"DataStorageWalAutoArchiveAfterInactivity"', + placeholder: '-1', + min: '-1', + tip: 'Time in millis to run auto archiving segment after last record logging' + }) .pc-form-grid-col-60 - +checkbox-enabled('Metrics enabled', `${model}.metricsEnabled`, '"DataStorageMetricsEnabled"', 'true', 'Flag indicating whether persistence metrics collection is enabled') + +form-field__checkbox({ + label: 'Metrics enabled', + model: `${model}.metricsEnabled`, + name: '"DataStorageMetricsEnabled"', + tip: 'Flag indicating whether persistence metrics collection is enabled' + }) .pc-form-grid-col-60 - +checkbox-enabled('Always write full pages', `${model}.alwaysWriteFullPages`, '"DataStorageAlwaysWriteFullPages"', 'true', 'Flag indicating whether always write full pages') + +form-field__checkbox({ + label: 'Always write full pages', + model: `${model}.alwaysWriteFullPages`, + name: '"DataStorageAlwaysWriteFullPages"', + tip: 'Flag indicating whether always write full pages' + }) .pc-form-grid-col-60 - +checkbox('Write throttling enabled', `${model}.writeThrottlingEnabled`, '"DataStorageWriteThrottlingEnabled"', - 'Throttle threads that generate dirty pages too fast during ongoing checkpoint') + +form-field__checkbox({ + label: 'Write throttling enabled', + model: `${model}.writeThrottlingEnabled`, + name: '"DataStorageWriteThrottlingEnabled"', + tip: 'Throttle threads that generate dirty pages too fast during ongoing checkpoint' + }) .pc-form-grid-col-60(ng-if='$ctrl.available("2.4.0")') - +checkbox('Enable WAL compaction', `${model}.walCompactionEnabled`, '"DataStorageWalCompactionEnabled"', - 'If true, system filters and compresses WAL archive in background') + +form-field__checkbox({ + label: 'Enable WAL compaction', + model: `${model}.walCompactionEnabled`, + name: '"DataStorageWalCompactionEnabled"', + tip: 'If true, system filters and compresses WAL archive in background' + }) .pca-form-column-6 +preview-xml-java(model, 'clusterDataStorageConfiguration') http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/deployment.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/deployment.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/deployment.pug index 3f56410..1d93886 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/deployment.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/deployment.pug @@ -35,34 +35,58 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) .pca-form-column-6.pc-form-grid-row .pc-form-grid-col-60 - +dropdown('Deployment mode:', `${model}.deploymentMode`, '"deploymentMode"', 'true', 'SHARED', - '[\ + +form-field__dropdown({ + label: 'Deployment mode:', + model: `${model}.deploymentMode`, + name: '"deploymentMode"', + placeholder: 'SHARED', + options: '[\ {value: "PRIVATE", label: "PRIVATE"},\ {value: "ISOLATED", label: "ISOLATED"}, \ {value: "SHARED", label: "SHARED"},\ {value: "CONTINUOUS", label: "CONTINUOUS"}\ ]', - 'Task classes and resources sharing mode<br/>\ + tip: 'Task classes and resources sharing mode<br/>\ The following deployment modes are supported:\ - <ul>\ - <li>PRIVATE - in this mode deployed classes do not share resources</li>\ - <li>ISOLATED - in this mode tasks or classes deployed within the same class loader will share the same instances of resources</li>\ - <li>SHARED - same as ISOLATED, but now tasks from different master nodes with the same user version and same class loader will share the same class loader on remote nodes</li>\ - <li>CONTINUOUS - same as SHARED deployment mode, but resources will not be undeployed even after all master nodes left grid</li>\ - </ul>') + <ul>\ + <li>PRIVATE - in this mode deployed classes do not share resources</li>\ + <li>ISOLATED - in this mode tasks or classes deployed within the same class loader will share the same instances of resources</li>\ + <li>SHARED - same as ISOLATED, but now tasks from different master nodes with the same user version and same class loader will share the same class loader on remote nodes</li>\ + <li>CONTINUOUS - same as SHARED deployment mode, but resources will not be undeployed even after all master nodes left grid</li>\ + </ul>' + }) .pc-form-grid-col-60 - +checkbox('Enable peer class loading', `${model}.peerClassLoadingEnabled`, '"peerClassLoadingEnabled"', 'Enables/disables peer class loading') + +form-field__checkbox({ + label: 'Enable peer class loading', + model: `${model}.peerClassLoadingEnabled`, + name: '"peerClassLoadingEnabled"', + tip: 'Enables/disables peer class loading' + }) .pc-form-grid-col-60 - +number('Missed resources cache size:', `${model}.peerClassLoadingMissedResourcesCacheSize`, '"peerClassLoadingMissedResourcesCacheSize"', enabled, '100', '0', - 'If size greater than 0, missed resources will be cached and next resource request ignored<br/>\ - If size is 0, then request for the resource will be sent to the remote node every time this resource is requested') + +form-field__number({ + label: 'Missed resources cache size:', + model: `${model}.peerClassLoadingMissedResourcesCacheSize`, + name: '"peerClassLoadingMissedResourcesCacheSize"', + disabled: `!(${enabled})`, + placeholder: '100', + min: '0', + tip: 'If size greater than 0, missed resources will be cached and next resource request ignored<br/>\ + If size is 0, then request for the resource will be sent to the remote node every time this resource is requested' + }) .pc-form-grid-col-60 - +number('Pool size:', `${model}.peerClassLoadingThreadPoolSize`, '"peerClassLoadingThreadPoolSize"', enabled, '2', '1', 'Thread pool size to use for peer class loading') + +form-field__number({ + label: 'Pool size:', + model: `${model}.peerClassLoadingThreadPoolSize`, + name: '"peerClassLoadingThreadPoolSize"', + disabled: `!(${enabled})`, + placeholder: '2', + min: '1', + tip: 'Thread pool size to use for peer class loading' + }) .pc-form-grid-col-60 mixin clusters-deployment-packages .ignite-form-field -let items = exclude - -var uniqueTip = 'Such package already exists!' list-editable( ng-model=items @@ -84,10 +108,10 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) placeholder: 'Enter package name', required: enabled })( - data-ignite-unique=items - data-ignite-form-field-input-autofocus='true' + ignite-unique=items + ignite-form-field-input-autofocus='true' ) - +unique-feedback('"packageName"', uniqueTip) + +form-field__error({ error: 'igniteUnique', message: 'Such package already exists!' }) list-editable-no-items list-editable-add-item-button( @@ -102,30 +126,38 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) //- Since ignite 2.0 .pc-form-grid-col-60(ng-if='$ctrl.available("2.0.0")') - +java-class('Class loader:', model + '.classLoader', '"classLoader"', 'true', 'false', - 'Loader which will be used for instantiating execution context') + +form-field__java-class({ + label: 'Class loader:', + model: `${model}.classLoader`, + name: '"classLoader"', + tip: 'Loader which will be used for instantiating execution context' + }) .pc-form-grid-col-60 - +dropdown('Deployment variant:', modelDeployment + '.kind', '"deploymentKind"', 'true', 'Default', - '[\ + +form-field__dropdown({ + label: 'Deployment variant:', + model: `${modelDeployment}.kind`, + name: '"deploymentKind"', + placeholder: 'Default', + options: '[\ {value: "URI", label: "URI"},\ {value: "Local", label: "Local"}, \ {value: "Custom", label: "Custom"},\ {value: null, label: "Default"}\ ]', - 'Grid deployment SPI is in charge of deploying tasks and classes from different sources:\ - <ul>\ - <li>URI - Deploy tasks from different sources like file system folders, email and HTTP</li>\ - <li>Local - Only within VM deployment on local node</li>\ - <li>Custom - Custom implementation of DeploymentSpi</li>\ - <li>Default - Default configuration of LocalDeploymentSpi will be used</li>\ - </ul>') + tip: 'Grid deployment SPI is in charge of deploying tasks and classes from different sources:\ + <ul>\ + <li>URI - Deploy tasks from different sources like file system folders, email and HTTP</li>\ + <li>Local - Only within VM deployment on local node</li>\ + <li>Custom - Custom implementation of DeploymentSpi</li>\ + <li>Default - Default configuration of LocalDeploymentSpi will be used</li>\ + </ul>' + }) .pc-form-group(ng-show=uriDeployment).pc-form-grid-row .pc-form-grid-col-60 mixin clusters-deployment-uri .ignite-form-field -let items = uriListModel - -var uniqueTip = 'Such URI already configured!' list-editable( ng-model=items @@ -139,7 +171,7 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) list-editable-item-edit +list-url-field('URL', '$item', '"url"', items) - +unique-feedback('"url"', uniqueTip) + +form-field__error({ error: 'igniteUnique', message: 'Such URI already configured!' }) list-editable-no-items list-editable-add-item-button( @@ -153,13 +185,17 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) - var form = 'deployment' .pc-form-grid-col-60 - +text('Temporary directory path:', modelDeployment + '.URI.temporaryDirectoryPath', '"DeploymentURITemporaryDirectoryPath"', 'false', 'Temporary directory path', - 'Absolute path to temporary directory which will be used by deployment SPI to keep all deployed classes in') + +form-field__text({ + label: 'Temporary directory path:', + model: modelDeployment + '.URI.temporaryDirectoryPath', + name: '"DeploymentURITemporaryDirectoryPath"', + placeholder: 'Temporary directory path', + tip: 'Absolute path to temporary directory which will be used by deployment SPI to keep all deployed classes in' + }) .pc-form-grid-col-60 mixin clusters-deployment-scanner .ignite-form-field -let items = scannerModel - -var uniqueTip = 'Such scanner already configured!' list-editable( ng-model=items @@ -170,7 +206,7 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) list-editable-item-edit +list-java-class-field('Scanner', '$item', '"scanner"', items) - +unique-feedback('"scanner"', uniqueTip) + +form-field__error({ error: 'igniteUnique', message: 'Such scanner already configured!' }) list-editable-no-items list-editable-add-item-button( @@ -184,16 +220,45 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) - var form = 'deployment' .pc-form-grid-col-60 - +java-class('Listener:', `${modelDeployment}.URI.listener`, '"DeploymentURIListener"', 'true', 'false', 'Deployment event listener', uriDeployment) + +form-field__java-class({ + label: 'Listener:', + model: `${modelDeployment}.URI.listener`, + name: '"DeploymentURIListener"', + tip: 'Deployment event listener', + validationActive: uriDeployment + }) .pc-form-grid-col-60 - +checkbox('Check MD5', `${modelDeployment}.URI.checkMd5`, '"DeploymentURICheckMd5"', 'Exclude files with same md5s from deployment') + +form-field__checkbox({ + label: 'Check MD5', + model: `${modelDeployment}.URI.checkMd5`, + name: '"DeploymentURICheckMd5"', + tip: 'Exclude files with same md5s from deployment' + }) .pc-form-grid-col-60 - +checkbox('Encode URI', `${modelDeployment}.URI.encodeUri`, '"DeploymentURIEncodeUri"', 'URI must be encoded before usage') + +form-field__checkbox({ + label: 'Encode URI', + model: `${modelDeployment}.URI.encodeUri`, + name: '"DeploymentURIEncodeUri"', + tip: 'URI must be encoded before usage' + }) .pc-form-group(ng-show=localDeployment).pc-form-grid-row .pc-form-grid-col-60 - +java-class('Listener:', `${modelDeployment}.Local.listener`, '"DeploymentLocalListener"', 'true', 'false', 'Deployment event listener', localDeployment) + +form-field__java-class({ + label: 'Listener:', + model: `${modelDeployment}.Local.listener`, + name: '"DeploymentLocalListener"', + tip: 'Deployment event listener', + validationActive: localDeployment + }) .pc-form-group(ng-show=customDeployment).pc-form-grid-row .pc-form-grid-col-60 - +java-class('Class:', `${modelDeployment}.Custom.className`, '"DeploymentCustom"', 'true', customDeployment, 'DeploymentSpi implementation class', customDeployment) + +form-field__java-class({ + label: 'Class:', + model: `${modelDeployment}.Custom.className`, + name: '"DeploymentCustom"', + required: customDeployment, + tip: 'DeploymentSpi implementation class', + validationActive: customDeployment + }) .pca-form-column-6 +preview-xml-java(model, 'clusterDeployment') http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/discovery.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/discovery.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/discovery.pug index a3c6d68..0f777f9 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/discovery.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/discovery.pug @@ -27,24 +27,55 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) .pca-form-column-6.pc-form-grid-row .pc-form-grid-col-20 - +text-ip-address('Local address:', `${model}.localAddress`, '"discoLocalAddress"', 'true', '228.1.2.4', - 'Local host IP address that discovery SPI uses<br/>\ - If not provided a first found non-loopback address will be used') + +form-field__ip-address({ + label: 'Local address:', + model: `${model}.localAddress`, + name: '"discoLocalAddress"', + enabled: 'true', + placeholder: '228.1.2.4', + tip: 'Local host IP address that discovery SPI uses<br/>\ + If not provided a first found non-loopback address will be used' + }) .pc-form-grid-col-20 - +number-min-max('Local port:', `${model}.localPort`, '"discoLocalPort"', 'true', '47500', '1024', '65535', 'Local port which node uses') + +form-field__number({ + label: 'Local port:', + model: `${model}.localPort`, + name: '"discoLocalPort"', + placeholder: '47500', + min: '1024', + max: '65535', + tip: 'Local port which node uses' + }) .pc-form-grid-col-20 - +number('Local port range:', `${model}.localPortRange`, '"discoLocalPortRange"', 'true', '100', '1', 'Local port range') + +form-field__number({ + label: 'Local port range:', + model: `${model}.localPortRange`, + name: '"discoLocalPortRange"', + placeholder: '100', + min: '1', + tip: 'Local port range' + }) .pc-form-grid-col-60 - +java-class('Address resolver:', `${model}.addressResolver`, '"discoAddressResolver"', 'true', 'false', - 'Provides resolution between external and internal addresses') + +form-field__java-class({ + label:'Address resolver:', + model: `${model}.addressResolver`, + name: '"discoAddressResolver"', + tip: 'Provides resolution between external and internal addresses' + }) .pc-form-grid-col-30 - +number('Socket timeout:', `${model}.socketTimeout`, '"socketTimeout"', 'true', '5000', '0', 'Socket operations timeout') + +form-field__number({ + label: 'Socket timeout:', + model: `${model}.socketTimeout`, + name: '"socketTimeout"', + placeholder: '5000', + min: '0', + tip: 'Socket operations timeout' + }) .pc-form-grid-col-30 +form-field__number({ label: 'Acknowledgement timeout:', model: `${model}.ackTimeout`, name: '"ackTimeout"', - disabled: 'false', placeholder: '5000', min: '0', max: `{{ ${model}.maxAckTimeout || 600000 }}`, @@ -52,46 +83,149 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) }) +form-field__error({ error: 'max', message: `Acknowledgement timeout should be less than max acknowledgement timeout ({{ ${model}.maxAckTimeout || 60000 }}).` }) .pc-form-grid-col-30 - +number('Max acknowledgement timeout:', `${model}.maxAckTimeout`, '"maxAckTimeout"', 'true', '600000', '0', 'Maximum message acknowledgement timeout') + +form-field__number({ + label: 'Max acknowledgement timeout:', + model: `${model}.maxAckTimeout`, + name: '"maxAckTimeout"', + placeholder: '600000', + min: '0', + tip: 'Maximum message acknowledgement timeout' + }) .pc-form-grid-col-30 - +number('Network timeout:', `${model}.networkTimeout`, '"discoNetworkTimeout"', 'true', '5000', '1', 'Timeout to use for network operations') + +form-field__number({ + label: 'Network timeout:', + model: `${model}.networkTimeout`, + name: '"discoNetworkTimeout"', + placeholder: '5000', + min: '1', + tip: 'Timeout to use for network operations' + }) .pc-form-grid-col-30 - +number('Join timeout:', `${model}.joinTimeout`, '"joinTimeout"', 'true', '0', '0', - 'Join timeout<br/>' + - '0 means wait forever') + +form-field__number({ + label: 'Join timeout:', + model: `${model}.joinTimeout`, + name: '"joinTimeout"', + placeholder: '0', + min: '0', + tip: 'Join timeout<br/>' + + '0 means wait forever' + }) .pc-form-grid-col-30 - +number('Thread priority:', `${model}.threadPriority`, '"threadPriority"', 'true', '10', '1', 'Thread priority for all threads started by SPI') + +form-field__number({ + label: 'Thread priority:', + model: `${model}.threadPriority`, + name: '"threadPriority"', + placeholder: '10', + min: '1', + tip: 'Thread priority for all threads started by SPI' + }) //- Removed in ignite 2.0 .pc-form-grid-col-60(ng-if-start='$ctrl.available(["1.0.0", "2.0.0"])') - +number('Heartbeat frequency:', `${model}.heartbeatFrequency`, '"heartbeatFrequency"', 'true', '2000', '1', 'Heartbeat messages issuing frequency') + +form-field__number({ + label: 'Heartbeat frequency:', + model: `${model}.heartbeatFrequency`, + name: '"heartbeatFrequency"', + placeholder: '2000', + min: '1', + tip: 'Heartbeat messages issuing frequency' + }) .pc-form-grid-col-30 - +number('Max heartbeats miss w/o init:', `${model}.maxMissedHeartbeats`, '"maxMissedHeartbeats"', 'true', '1', '1', - 'Max heartbeats count node can miss without initiating status check') + +form-field__number({ + label: 'Max heartbeats miss w/o init:', + model: `${model}.maxMissedHeartbeats`, + name: '"maxMissedHeartbeats"', + placeholder: '1', + min: '1', + tip: 'Max heartbeats count node can miss without initiating status check' + }) .pc-form-grid-col-30(ng-if-end) - +number('Max missed client heartbeats:', `${model}.maxMissedClientHeartbeats`, '"maxMissedClientHeartbeats"', 'true', '5', '1', - 'Max heartbeats count node can miss without failing client node') + +form-field__number({ + label: 'Max missed client heartbeats:', + model: `${model}.maxMissedClientHeartbeats`, + name: '"maxMissedClientHeartbeats"', + placeholder: '5', + min: '1', + tip: 'Max heartbeats count node can miss without failing client node' + }) .pc-form-grid-col-60 - +number('Topology history:', `${model}.topHistorySize`, '"topHistorySize"', 'true', '1000', '0', 'Size of topology snapshots history') + +form-field__number({ + label: 'Topology history:', + model: `${model}.topHistorySize`, + name: '"topHistorySize"', + placeholder: '1000', + min: '0', + tip: 'Size of topology snapshots history' + }) .pc-form-grid-col-60 - +java-class('Discovery listener:', `${model}.listener`, '"discoListener"', 'true', 'false', 'Listener for grid node discovery events') + +form-field__java-class({ + label: 'Discovery listener:', + model: `${model}.listener`, + name: '"discoListener"', + tip: 'Listener for grid node discovery events' + }) .pc-form-grid-col-60 - +java-class('Data exchange:', `${model}.dataExchange`, '"dataExchange"', 'true', 'false', 'Class name of handler for initial data exchange between Ignite nodes') + +form-field__java-class({ + label: 'Data exchange:', + model: `${model}.dataExchange`, + name: '"dataExchange"', + tip: 'Class name of handler for initial data exchange between Ignite nodes' + }) .pc-form-grid-col-60 - +java-class('Metrics provider:', `${model}.metricsProvider`, '"metricsProvider"', 'true', 'false', 'Class name of metric provider to discovery SPI') + +form-field__java-class({ + label: 'Metrics provider:', + model: `${model}.metricsProvider`, + name: '"metricsProvider"', + tip: 'Class name of metric provider to discovery SPI' + }) .pc-form-grid-col-30 - +number('Reconnect count:', `${model}.reconnectCount`, '"discoReconnectCount"', 'true', '10', '1', 'Reconnect attempts count') + +form-field__number({ + label: 'Reconnect count:', + model: `${model}.reconnectCount`, + name: '"discoReconnectCount"', + placeholder: '10', + min: '1', + tip: 'Reconnect attempts count' + }) .pc-form-grid-col-30 - +number('Statistics frequency:', `${model}.statisticsPrintFrequency`, '"statisticsPrintFrequency"', 'true', '0', '1', 'Statistics print frequency') + +form-field__number({ + label: 'Statistics frequency:', + model: `${model}.statisticsPrintFrequency`, + name: '"statisticsPrintFrequency"', + placeholder: '0', + min: '1', + tip: 'Statistics print frequency' + }) .pc-form-grid-col-60 - +number('IP finder clean frequency:', `${model}.ipFinderCleanFrequency`, '"ipFinderCleanFrequency"', 'true', '60000', '1', 'IP finder clean frequency') + +form-field__number({ + label: 'IP finder clean frequency:', + model: `${model}.ipFinderCleanFrequency`, + name: '"ipFinderCleanFrequency"', + placeholder: '60000', + min: '1', + tip: 'IP finder clean frequency' + }) .pc-form-grid-col-60 - +java-class('Node authenticator:', `${model}.authenticator`, '"authenticator"', 'true', 'false', 'Class name of node authenticator implementation') + +form-field__java-class({ + label: 'Node authenticator:', + model: `${model}.authenticator`, + name: '"authenticator"', + tip: 'Class name of node authenticator implementation' + }) .pc-form-grid-col-60 - +checkbox('Force server mode', `${model}.forceServerMode`, '"forceServerMode"', 'Force start TCP/IP discovery in server mode') + +form-field__checkbox({ + label: 'Force server mode', + model: `${model}.forceServerMode`, + name: '"forceServerMode"', + tip: 'Force start TCP/IP discovery in server mode' + }) .pc-form-grid-col-60 - +checkbox('Client reconnect disabled', `${model}.clientReconnectDisabled`, '"clientReconnectDisabled"', - 'Disable try of client to reconnect after server detected client node failure') + +form-field__checkbox({ + label: 'Client reconnect disabled', + model: `${model}.clientReconnectDisabled`, + name: '"clientReconnectDisabled"', + tip: 'Disable try of client to reconnect after server detected client node failure' + }) .pca-form-column-6 +preview-xml-java(model, 'clusterDiscovery') http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/events.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/events.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/events.pug index a41999e..9967af4 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/events.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/events.pug @@ -26,41 +26,87 @@ include /app/helpers/jade/mixins panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) panel-title Events panel-description - | Grid events are used for notification about what happens within the grid. + | Grid events are used for notification about what happens within the grid. | #[a.link-success(href="https://apacheignite.readme.io/docs/events" 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(ng-if='$ctrl.available(["1.0.0", "2.0.0"])') - +dropdown('Event storage:', modelEventStorageKind, '"eventStorageKind"', 'true', 'Disabled', '$ctrl.eventStorage', - 'Regulate how grid store events locally on node\ - <ul>\ - <li>Memory - All events are kept in the FIFO queue in-memory</li>\ - <li>Custom - Custom implementation of event storage SPI</li>\ - </ul>') + +form-field__dropdown({ + label: 'Event storage:', + model: modelEventStorageKind, + name: '"eventStorageKind"', + placeholder: 'Disabled', + options: '$ctrl.eventStorage', + tip: 'Regulate how grid store events locally on node\ + <ul>\ + <li>Memory - All events are kept in the FIFO queue in-memory</li>\ + <li>Custom - Custom implementation of event storage SPI</li>\ + </ul>' + }) .pc-form-grid-col-60(ng-if='$ctrl.available("2.0.0")') - +dropdown('Event storage:', modelEventStorageKind, '"eventStorageKind"', 'true', 'Disabled', '$ctrl.eventStorage', - 'Regulate how grid store events locally on node\ - <ul>\ - <li>Memory - All events are kept in the FIFO queue in-memory</li>\ - <li>Custom - Custom implementation of event storage SPI</li>\ - <li>Disabled - Events are not collected</li>\ - </ul>') + +form-field__dropdown({ + label: 'Event storage:', + model: modelEventStorageKind, + name: '"eventStorageKind"', + placeholder: 'Disabled', + options: '$ctrl.eventStorage', + tip: 'Regulate how grid store events locally on node\ + <ul>\ + <li>Memory - All events are kept in the FIFO queue in-memory</li>\ + <li>Custom - Custom implementation of event storage SPI</li>\ + <li>Disabled - Events are not collected</li>\ + </ul>' + }) .pc-form-group.pc-form-grid-row(ng-if=modelEventStorageKind) .pc-form-grid-col-30(ng-if-start=eventStorageMemory) - +number('Events expiration time:', `${modelEventStorage}.Memory.expireAgeMs`, '"EventStorageExpireAgeMs"', 'true', 'Long.MAX_VALUE', '1', 'All events that exceed this value will be removed from the queue when next event comes') + +form-field__number({ + label: 'Events expiration time:', + model: `${modelEventStorage}.Memory.expireAgeMs`, + name: '"writeBehindBatchSize"', + placeholder: 'Long.MAX_VALUE', + min: '1', + tip: 'All events that exceed this value will be removed from the queue when next event comes' + }) .pc-form-grid-col-30 - +number('Events queue size:', `${modelEventStorage}.Memory.expireCount`, '"EventStorageExpireCount"', 'true', '10000', '1', 'Events will be filtered out when new request comes') + +form-field__number({ + label: 'Events queue size:', + model: `${modelEventStorage}.Memory.expireCount`, + name: '"EventStorageExpireCount"', + placeholder: '10000', + min: '1', + tip: 'Events will be filtered out when new request comes' + }) .pc-form-grid-col-60(ng-if-end) - +java-class('Filter:', `${modelEventStorage}.Memory.filter`, '"EventStorageFilter"', 'true', 'false', - 'Filter for events to be recorded<br/>\ - Should be implementation of o.a.i.lang.IgnitePredicate<o.a.i.events.Event>', eventStorageMemory) + +form-field__java-class({ + label: 'Filter:', + model: `${modelEventStorage}.Memory.filter`, + name: '"EventStorageFilter"', + tip: 'Filter for events to be recorded<br/>\ + Should be implementation of o.a.i.lang.IgnitePredicate<o.a.i.events.Event>', + validationActive: eventStorageMemory + }) .pc-form-grid-col-60(ng-if=eventStorageCustom) - +java-class('Class:', `${modelEventStorage}.Custom.className`, '"EventStorageCustom"', 'true', eventStorageCustom, 'Event storage implementation class name', eventStorageCustom) + +form-field__java-class({ + label: 'Class:', + model: `${modelEventStorage}.Custom.className`, + name: '"EventStorageCustom"', + required: eventStorageCustom, + tip: 'Event storage implementation class name', + validationActive: eventStorageCustom + }) .pc-form-grid-col-60 - +dropdown-multiple('Include type:', `${model}.includeEventTypes`, '"includeEventTypes"', true, 'Choose recorded event types', '', '$ctrl.eventGroups', - 'Array of event types, which will be recorded by GridEventStorageManager#record(Event)<br/>\ - Note, that either the include event types or the exclude event types can be established') + +form-field__dropdown({ + label: 'Include type:', + model: `${model}.includeEventTypes`, + name: '"includeEventTypes"', + multiple: true, + placeholder: 'Choose recorded event types', + placeholderEmpty: '', + options: '$ctrl.eventGroups', + tip: 'Array of event types, which will be recorded by GridEventStorageManager#record(Event)<br/>\ + Note, that either the include event types or the exclude event types can be established' + }) .pca-form-column-6 +preview-xml-java(model, 'clusterEvents') http://git-wip-us.apache.org/repos/asf/ignite/blob/cca10d0c/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/failover.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/failover.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/failover.pug index 6e1fba1..3fafe9f 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/failover.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/failover.pug @@ -24,17 +24,29 @@ include /app/helpers/jade/mixins panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) panel-title Failover configuration panel-description - | Failover SPI provides ability to supply custom logic for handling failed execution of a grid job. + | Failover SPI provides ability to supply custom logic for handling failed execution of a grid job. | #[a.link-success(href="https://apacheignite.readme.io/docs/fault-tolerance" target="_blank") More info] panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) .pca-form-column-6.pc-form-grid-row //- Since ignite 2.0 .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.0.0")') - +number('Failure detection timeout:', model + '.failureDetectionTimeout', '"failureDetectionTimeout"', 'true', - '10000', '1', 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed') + +form-field__number({ + label: 'Failure detection timeout:', + model: model + '.failureDetectionTimeout', + name: '"failureDetectionTimeout"', + placeholder: '10000', + min: '1', + tip: 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed' + }) .pc-form-grid-col-60(ng-if-end) - +number('Client failure detection timeout:', model + '.clientFailureDetectionTimeout', '"clientFailureDetectionTimeout"', 'true', - '30000', '1', 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed') + +form-field__number({ + label: 'Client failure detection timeout:', + model: model + '.clientFailureDetectionTimeout', + name: '"clientFailureDetectionTimeout"', + placeholder: '30000', + min: '1', + tip: 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed' + }) .pc-form-grid-col-60 mixin clusters-failover-spi @@ -65,14 +77,32 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) }) .pc-form-grid-col-60(ng-show='$item.kind === "JobStealing"') - +number('Maximum failover attempts:', '$item.JobStealing.maximumFailoverAttempts', '"jsMaximumFailoverAttempts"', 'true', '5', '0', - 'Maximum number of attempts to execute a failed job on another node') + +form-field__number({ + label: 'Maximum failover attempts:', + model: '$item.JobStealing.maximumFailoverAttempts', + name: '"jsMaximumFailoverAttempts"', + placeholder: '5', + min: '0', + tip: 'Maximum number of attempts to execute a failed job on another node' + }) .pc-form-grid-col-60(ng-show='$item.kind === "Always"') - +number('Maximum failover attempts:', '$item.Always.maximumFailoverAttempts', '"alwaysMaximumFailoverAttempts"', 'true', '5', '0', - 'Maximum number of attempts to execute a failed job on another node') + +form-field__number({ + label: 'Maximum failover attempts:', + model: '$item.Always.maximumFailoverAttempts', + name: '"alwaysMaximumFailoverAttempts"', + placeholder: '5', + min: '0', + tip: 'Maximum number of attempts to execute a failed job on another node' + }) .pc-form-grid-col-60(ng-show=failoverCustom) - +java-class('SPI implementation', '$item.Custom.class', '"failoverSpiClass"', 'true', failoverCustom, - 'Custom FailoverSpi implementation class name.', failoverCustom) + +form-field__java-class({ + label: 'SPI implementation', + model: '$item.Custom.class', + name: '"failoverSpiClass"', + required: failoverCustom, + tip: 'Custom FailoverSpi implementation class name.', + validationActive: failoverCustom + }) list-editable-no-items list-editable-add-item-button(
