http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug new file mode 100644 index 0000000..74b1f02 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/odbc.pug @@ -0,0 +1,70 @@ +//- + 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 = 'odbcConfiguration' +-var model = '$ctrl.clonedCluster.odbc' +-var enabled = model + '.odbcEnabled' + +panel-collapsible( + ng-form=form + on-open=`ui.loadPanel('${form}')` + ng-show='$ctrl.available(["1.0.0", "2.1.0"])' +) + panel-title ODBC configuration + panel-description + | ODBC server configuration. + | #[a.link-success(href="https://apacheignite.readme.io/docs/odbc-driver" target="_blank") More info] + panel-content.pca-form-row(ng-if=`$ctrl.available(["1.0.0", "2.1.0"]) && ui.isPanelLoaded('${form}')`) + .pca-form-column-6 + .settings-row + +sane-form-field-checkbox({ + label: 'Enabled', + model: enabled, + name: '"odbcEnabled"', + tip: 'Flag indicating whether to configure ODBC configuration' + })( + ui-validate=`{ + correctMarshaller: '$ctrl.Clusters.odbc.odbcEnabled.correctMarshaller($ctrl.clonedCluster, $value)' + }` + ui-validate-watch='$ctrl.Clusters.odbc.odbcEnabled.correctMarshallerWatch("$ctrl.clonedCluster")' + ) + +form-field-feedback(null, 'correctMarshaller', 'ODBC can only be used with BinaryMarshaller') + .settings-row + +text-ip-address-with-port-range('ODBC endpoint address:', `${model}.endpointAddress`, '"endpointAddress"', enabled, '0.0.0.0:10800..10810', + 'ODBC endpoint address. <br/>\ + The following address formats are permitted:\ + <ul>\ + <li>hostname - will use provided hostname and default port range</li>\ + <li>hostname:port - will use provided hostname and port</li>\ + <li>hostname:port_from..port_to - will use provided hostname and port range</li>\ + </ul>') + .settings-row + +number('Send buffer size:', `${model}.socketSendBufferSize`, '"ODBCSocketSendBufferSize"', enabled, '0', '0', + 'Socket send buffer size.<br/>\ + When set to <b>0</b>, operation system default will be used') + .settings-row + +number('Socket receive buffer size:', `${model}.socketReceiveBufferSize`, '"ODBCSocketReceiveBufferSize"', enabled, '0', '0', + 'Socket receive buffer size.<br/>\ + When set to <b>0</b>, operation system default will be used') + .settings-row + +number('Maximum open cursors', `${model}.maxOpenCursors`, '"maxOpenCursors"', enabled, '128', '1', 'Maximum number of opened cursors per connection') + .settings-row + +number('Pool size:', `${model}.threadPoolSize`, '"ODBCThreadPoolSize"', enabled, 'max(8, availableProcessors)', '1', + 'Size of thread pool that is in charge of processing ODBC tasks') + .pca-form-column-6 + +preview-xml-java(model, 'clusterODBC')
http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug new file mode 100644 index 0000000..2c8d10a --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/persistence.pug @@ -0,0 +1,82 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'persistenceConfiguration' +-var model = '$ctrl.clonedCluster.persistenceStoreConfiguration' +-var enabled = model + '.enabled' + +panel-collapsible( + ng-form=form + on-open=`ui.loadPanel('${form}')` + ng-show='$ctrl.available(["2.1.0", "2.3.0"])' +) + panel-title Persistence store + panel-description + | Configures Apache Ignite Native Persistence. + 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.1.0", "2.3.0"]) && ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +checkbox('Enabled', enabled, '"PersistenceEnabled"', 'Flag indicating whether to configure persistent configuration') + .pc-form-grid-col-60 + +text-enabled('Store path:', `${model}.persistentStorePath`, '"PersistenceStorePath"', enabled, 'false', 'Input store path', + 'A path the root directory where the Persistent Store will persist data and indexes') + .pc-form-grid-col-60 + +checkbox-enabled('Metrics enabled', `${model}.metricsEnabled`, '"PersistenceMetricsEnabled"', enabled, 'Flag indicating whether persistence metrics collection is enabled') + .pc-form-grid-col-60 + +checkbox-enabled('Always write full pages', `${model}.alwaysWriteFullPages`, '"PersistenceAlwaysWriteFullPages"', enabled, 'Flag indicating whether always write full pages') + .pc-form-grid-col-60 + +number('Checkpointing frequency:', `${model}.checkpointingFrequency`, '"PersistenceCheckpointingFrequency"', enabled, '180000', '1', + 'Frequency which is a minimal interval when the dirty pages will be written to the Persistent Store') + .pc-form-grid-col-60 + +number('Checkpointing page buffer size:', `${model}.checkpointingPageBufferSize`, '"PersistenceCheckpointingPageBufferSize"', enabled, '268435456', '0', + 'Amount of memory allocated for a checkpointing temporary buffer') + .pc-form-grid-col-60 + +number('Checkpointing threads:', `${model}.checkpointingThreads`, '"PersistenceCheckpointingThreads"', enabled, '1', '1', 'A number of threads to use for the checkpointing purposes') + .pc-form-grid-col-60 + +text-enabled('WAL store path:', `${model}.walStorePath`, '"PersistenceWalStorePath"', enabled, 'false', 'Input store path', 'A path to the directory where WAL is stored') + .pc-form-grid-col-60 + +text-enabled('WAL archive path:', `${model}.walArchivePath`, '"PersistenceWalArchivePath"', enabled, 'false', 'Input archive path', 'A path to the WAL archive directory') + .pc-form-grid-col-30 + +number('WAL segments:', `${model}.walSegments`, '"PersistenceWalSegments"', enabled, '10', '1', 'A number of WAL segments to work with') + .pc-form-grid-col-30 + +number('WAL segment size:', `${model}.walSegmentSize`, '"PersistenceWalSegmentSize"', enabled, '67108864', '0', 'Size of a WAL segment') + .pc-form-grid-col-30 + +number('WAL history size:', `${model}.walHistorySize`, '"PersistenceWalHistorySize"', enabled, '20', '1', 'A total number of checkpoints to keep in the WAL history') + .pc-form-grid-col-30 + +number('WAL flush frequency:', `${model}.walFlushFrequency`, '"PersistenceWalFlushFrequency"', enabled, '2000', '1', + '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`, '"PersistenceWalFsyncDelay"', enabled, '1000', '1', 'WAL fsync delay, in nanoseconds') + .pc-form-grid-col-30 + +number('WAL record iterator buffer size:', `${model}.walRecordIteratorBufferSize`, '"PersistenceWalRecordIteratorBufferSize"', enabled, '67108864', '1', + '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`, '"PersistenceLockWaitTime"', enabled, '10000', '1', + 'Time out in second, while wait and try get file lock for start persist manager') + .pc-form-grid-col-30 + +number('Rate time interval:', `${model}.rateTimeInterval`, '"PersistenceRateTimeInterval"', enabled, '60000', '1000', + '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 + +number('Thread local buffer size:', `${model}.tlbSize`, '"PersistenceTlbSize"', enabled, '131072', '1', + '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('Sub intervals:', `${model}.subIntervals`, '"PersistenceSubIntervals"', enabled, '5', '1', + 'Number of sub - intervals the whole rate time interval will be split into to calculate rate - based metrics') + .pca-form-column-6 + +preview-xml-java(model, 'clusterPersistence') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug new file mode 100644 index 0000000..a244602 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/service.pug @@ -0,0 +1,89 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'serviceConfiguration' +-var model = '$ctrl.clonedCluster.serviceConfigurations' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Service configuration + panel-description + | Service Grid allows for deployments of arbitrary user-defined services on the cluster. + | #[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 + mixin clusters-service-configurations + .ignite-form-field(ng-init='serviceConfigurationsTbl={type: "serviceConfigurations", model: "serviceConfigurations", focusId: "kind", ui: "failover-table"}') + +ignite-form-field__label('Service configurations:', '"serviceConfigurations"') + .ignite-form-field__control + -let items = model + + list-editable(ng-model=items name='serviceConfigurations') + list-editable-item-edit + - form = '$parent.form' + + -var nodeFilter = '$item.nodeFilter'; + -var nodeFilterKind = nodeFilter + '.kind'; + -var customFilter = nodeFilterKind + ' === "Custom"' + + .settings-row + +sane-ignite-form-field-text({ + label: 'Name:', + model: '$item.name', + name: '"serviceName"', + required: true, + placeholder: 'Input service name' + })( + ui-validate=`{ + uniqueName: '$ctrl.Clusters.serviceConfigurations.serviceConfiguration.name.customValidators.uniqueName($item, ${items})' + }` + ui-validate-watch=`"${items}"` + ui-validate-watch-object-equality='true' + ng-model-options='{allowInvalid: true}' + ) + +form-field-feedback('"serviceName', 'uniqueName', 'Service with that name is already configured') + .settings-row + +java-class('Service class', '$item.service', '"serviceService"', 'true', 'true', 'Service implementation class name') + .settings-row + +number('Max per node count:', '$item.maxPerNodeCount', '"ServiceMaxPerNodeCount"', 'true', 'Unlimited', '0', + 'Maximum number of deployed service instances on each node.<br/>' + + 'Zero for unlimited') + .settings-row + +number('Total count:', '$item.totalCount', '"serviceTotalCount"', 'true', 'Unlimited', '0', + 'Total number of deployed service instances in the cluster.<br/>' + + 'Zero for unlimited') + .settings-row + +dropdown-required-empty('Cache:', '$item.cache', '"serviceCache"', 'true', 'false', + 'Choose cache', 'No caches configured for current cluster', '$ctrl.cachesMenu', 'Cache name used for key-to-node affinity calculation')( + pc-is-in-collection='$ctrl.clonedCluster.caches' + ).settings-row + +form-field-feedback(form, 'isInCollection', `Cluster doesn't have such a cache`) + .settings-row + +text('Affinity key:', '$item.affinityKey', '"serviceAffinityKey"', 'false', 'Input affinity key', + 'Affinity key used for key-to-node affinity calculation') + + list-editable-no-items + list-editable-add-item-button( + add-item=`$ctrl.Clusters.addServiceConfiguration($ctrl.clonedCluster)` + label-single='service configuration' + label-multiple='service configurations' + ) + + +clusters-service-configurations + + .pca-form-column-6 + +preview-xml-java('$ctrl.clonedCluster', 'clusterServiceConfiguration', '$ctrl.caches') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug new file mode 100644 index 0000000..2e61fc2 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/sql-connector.pug @@ -0,0 +1,58 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'query' +-var model = '$ctrl.clonedCluster' +-var connectionModel = model + '.sqlConnectorConfiguration' +-var connectionEnabled = connectionModel + '.enabled' + +panel-collapsible( + ng-form=form + on-open=`ui.loadPanel('${form}')` + ng-show='$ctrl.available(["2.1.0", "2.3.0"])' +) + panel-title Query configuration + //- TODO IGNITE-5415 Add link to documentation. + panel-content.pca-form-row(ng-if=`$ctrl.available(["2.1.0", "2.3.0"]) && ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +checkbox('Enabled', connectionEnabled, '"SqlConnectorEnabled"', 'Flag indicating whether to configure SQL connector configuration') + .pc-form-grid-col-40 + +text-enabled('Host:', `${connectionModel}.host`, '"SqlConnectorHost"', connectionEnabled, 'false', 'localhost') + .pc-form-grid-col-20 + +number('Port:', `${connectionModel}.port`, '"SqlConnectorPort"', connectionEnabled, '10800', '1025') + .pc-form-grid-col-20 + +number('Port range:', `${connectionModel}.portRange`, '"SqlConnectorPortRange"', connectionEnabled, '100', '0') + .pc-form-grid-col-20 + +number('Socket send buffer size:', `${connectionModel}.socketSendBufferSize`, '"SqlConnectorSocketSendBufferSize"', connectionEnabled, '0', '0', + 'Socket send buffer size.<br/>\ + When set to <b>0</b>, operation system default will be used') + .pc-form-grid-col-20 + +number('Socket receive buffer size:', `${connectionModel}.socketReceiveBufferSize`, '"SqlConnectorSocketReceiveBufferSize"', connectionEnabled, '0', '0', + 'Socket receive buffer size.<br/>\ + When set to <b>0</b>, operation system default will be used') + .pc-form-grid-col-30 + +number('Max connection cursors:', `${connectionModel}.maxOpenCursorsPerConnection`, '"SqlConnectorMaxOpenCursorsPerConnection"', connectionEnabled, '128', '0', + 'Max number of opened cursors per connection') + .pc-form-grid-col-30 + +number('Pool size:', `${connectionModel}.threadPoolSize`, '"SqlConnectorThreadPoolSize"', connectionEnabled, 'max(8, availableProcessors)', '1', + 'Size of thread pool that is in charge of processing SQL requests') + .pc-form-grid-col-60 + +checkbox-enabled('TCP_NODELAY option', `${connectionModel}.tcpNoDelay`, '"SqlConnectorTcpNoDelay"', connectionEnabled) + .pca-form-column-6 + +preview-xml-java(model, 'clusterQuery') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug new file mode 100644 index 0000000..2745f53 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/ssl.pug @@ -0,0 +1,89 @@ +//- + 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 = 'sslConfiguration' +-var cluster = '$ctrl.clonedCluster' +-var enabled = '$ctrl.clonedCluster.sslEnabled' +-var model = cluster + '.sslContextFactory' +-var trust = model + '.trustManagers' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title SSL configuration + panel-description + | Settings for SSL configuration for creating a secure socket layer. + | #[a.link-success(href="https://apacheignite.readme.io/docs/ssltls" 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, '"sslEnabled"', 'Flag indicating whether to configure SSL configuration') + .pc-form-grid-col-60 + +text-options('Algorithm to create a key manager:', `${model}.keyAlgorithm`, '"keyAlgorithm"', '["SumX509", "X509"]', enabled, 'false', 'SumX509', + 'Sets key manager algorithm that will be used to create a key manager<br/>\ + Notice that in most cased default value suites well, however, on Android platform this value need to be set to X509') + .pc-form-grid-col-60 + +text-enabled('Key store file:', `${model}.keyStoreFilePath`, '"keyStoreFilePath"', enabled, enabled, 'Path to the key store file', + 'Path to the key store file<br/>\ + This is a mandatory parameter since ssl context could not be initialized without key manager') + .pc-form-grid-col-30 + +text-options('Key store type:', `${model}.keyStoreType`, '"keyStoreType"', '["JKS", "PCKS11", "PCKS12"]', enabled, 'false', 'JKS', + 'Key store type used in context initialization') + .pc-form-grid-col-30 + +text-options('Protocol:', `${model}.protocol`, '"protocol"', '["TSL", "SSL"]', enabled, 'false', 'TSL', 'Protocol for secure transport') + .pc-form-grid-col-60 + .ignite-form-field + .ignite-form-field__control + list-editable( + ng-model=trust + name='trustManagers' + list-editable-cols=`::[{name: "Pre-configured trust managers:"}]` + ng-disabled=enabledToDisabled(enabled) + ng-required=`${enabled} && !${model}.trustStoreFilePath` + ) + list-editable-item-view {{ $item }} + + list-editable-item-edit + +list-java-class-field('Trust manager', '$item', '"trustManager"', trust) + +unique-feedback('"trustManager"', 'Such trust manager already exists!') + + list-editable-no-items + list-editable-add-item-button( + add-item=`$editLast((${trust} = ${trust} || []).push(''))` + label-single='trust manager' + label-multiple='trust managers' + ) + .ignite-form-field__errors( + ng-messages=`sslConfiguration.trustManagers.$error` + ng-show=`sslConfiguration.trustManagers.$invalid` + ) + +form-field-feedback(_, 'required', 'Trust managers or trust store file should be configured') + + .pc-form-grid-col-30(ng-if-start=`!${trust}.length`) + +sane-ignite-form-field-text({ + label: 'Trust store file:', + model: `${model}.trustStoreFilePath`, + name: '"trustStoreFilePath"', + required: `${enabled} && !${trust}.length`, + disabled: enabledToDisabled(enabled), + placeholder: 'Path to the trust store file', + tip: 'Path to the trust store file' + }) + +form-field-feedback(_, 'required', 'Trust store file or trust managers should be configured') + .pc-form-grid-col-30(ng-if-end) + +text-options('Trust store type:', `${model}.trustStoreType`, '"trustStoreType"', '["JKS", "PCKS11", "PCKS12"]', enabled, 'false', 'JKS', 'Trust store type used in context initialization') + .pca-form-column-6 + +preview-xml-java(cluster, 'clusterSsl') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug new file mode 100644 index 0000000..ef73ab9 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/swap.pug @@ -0,0 +1,74 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'swap' +-var model = '$ctrl.clonedCluster' +-var swapModel = model + '.swapSpaceSpi' +-var fileSwapModel = swapModel + '.FileSwapSpaceSpi' + +panel-collapsible( + ng-form=form + on-open=`ui.loadPanel('${form}')` + ng-show='$ctrl.available(["1.0.0", "2.0.0"])' +) + panel-title Swap + panel-description + | Settings for overflow data to disk if it cannot fit in memory. + | #[a.link-success(href="https://apacheignite.readme.io/v1.9/docs/off-heap-memory#swap-space" target="_blank") More info] + panel-content.pca-form-row(ng-if=`$ctrl.available(["1.0.0", "2.0.0"]) && ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +dropdown('Swap space SPI:', `${swapModel}.kind`, '"swapSpaceSpi"', 'true', 'Choose swap SPI', + '::$ctrl.Clusters.swapSpaceSpis', + 'Provides a mechanism in grid for storing data on disk<br/>\ + Ignite cache uses swap space to overflow data to disk if it cannot fit in memory\ + <ul>\ + <li>File-based swap - File-based swap space SPI implementation which holds keys in memory</li>\ + <li>Not set - File-based swap space SPI with default configuration when it needed</li>\ + </ul>') + .pc-form-group.pc-form-grid-row(ng-show=`${swapModel}.kind`) + .pc-form-grid-col-60 + +text('Base directory:', `${fileSwapModel}.baseDirectory`, '"baseDirectory"', 'false', 'swapspace', + 'Base directory where to write files') + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'Read stripe size:', + model: `${fileSwapModel}.readStripesNumber`, + name: '"readStripesNumber"', + placeholder: '{{ ::$ctrl.Clusters.swapSpaceSpi.readStripesNumber.default }}', + tip: 'Read stripe size defines number of file channels to be used concurrently' + })( + ui-validate=`{ + powerOfTwo: '$ctrl.Clusters.swapSpaceSpi.readStripesNumber.customValidators.powerOfTwo($value)' + }` + ) + +form-field-feedback('"readStripesNumber"', 'powerOfTwo', 'Read stripe size must be positive and power of two') + .pc-form-grid-col-30 + +number-min-max-step('Maximum sparsity:', `${fileSwapModel}.maximumSparsity`, '"maximumSparsity"', 'true', '0.5', '0', '0.999', '0.05', + 'This property defines maximum acceptable wasted file space to whole file size ratio<br/>\ + When this ratio becomes higher than specified number compacting thread starts working') + .pc-form-grid-col-30 + +number('Max write queue size:', `${fileSwapModel}.maxWriteQueueSize`, '"maxWriteQueueSize"', 'true', '1024 * 1024', '0', + 'Max write queue size in bytes<br/>\ + If there are more values are waiting for being written to disk then specified size, SPI will block on store operation') + .pc-form-grid-col-30 + +number('Write buffer size:', `${fileSwapModel}.writeBufferSize`, '"writeBufferSize"', 'true', '64 * 1024', '0', + 'Write buffer size in bytes<br/>\ + Write to disk occurs only when this buffer is full') + .pca-form-column-6 + +preview-xml-java(model, 'clusterSwap') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug new file mode 100644 index 0000000..ebe3bcd --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/thread.pug @@ -0,0 +1,144 @@ +//- + 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 = 'pools' +-var model = '$ctrl.clonedCluster' +-var executors = model + '.executorConfiguration' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Thread pools size + panel-description Settings for node thread pools. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-30 + +number('Public:', model + '.publicThreadPoolSize', '"publicThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1', + 'Thread pool that is in charge of processing ComputeJob, GridJobs and user messages sent to node') + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'System:', + model: `${model}.systemThreadPoolSize`, + name: '"systemThreadPoolSize"', + placeholder: '{{ ::$ctrl.Clusters.systemThreadPoolSize.default }}', + min: '{{ ::$ctrl.Clusters.systemThreadPoolSize.min }}', + tip: 'Thread pool that is in charge of processing internal system messages' + }) + .pc-form-grid-col-30 + +number('Service:', model + '.serviceThreadPoolSize', '"serviceThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1', + 'Thread pool that is in charge of processing proxy invocation') + .pc-form-grid-col-30 + +number('Management:', model + '.managementThreadPoolSize', '"managementThreadPoolSize"', 'true', '4', '1', + 'Thread pool that is in charge of processing internal and Visor ComputeJob, GridJobs') + .pc-form-grid-col-30 + +number('IGFS:', model + '.igfsThreadPoolSize', '"igfsThreadPoolSize"', 'true', 'availableProcessors', '1', + 'Thread pool that is in charge of processing outgoing IGFS messages') + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'Rebalance:', + model: `${model}.rebalanceThreadPoolSize`, + name: '"rebalanceThreadPoolSize"', + placeholder: '{{ ::$ctrl.Clusters.rebalanceThreadPoolSize.default }}', + min: '{{ ::$ctrl.Clusters.rebalanceThreadPoolSize.min }}', + max: `{{ $ctrl.Clusters.rebalanceThreadPoolSize.max(${model}) }}`, + tip: 'Max count of threads can be used at rebalancing' + }) + +form-field-feedback('max', 'Rebalance thread pool size should not exceed or be equal to System thread pool size') + .pc-form-grid-col-30 + +number('Utility cache:', model + '.utilityCacheThreadPoolSize', '"utilityCacheThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1', + 'Default thread pool size that will be used to process utility cache messages') + .pc-form-grid-col-30 + pc-form-field-size( + label='Utility cache keep alive time:' + ng-model=`${model}.utilityCacheKeepAliveTime` + name='utilityCacheKeepAliveTime' + size-type='seconds' + size-scale-label='s' + tip='Keep alive time of thread pool size that will be used to process utility cache messages' + min='0' + placeholder='{{ 60000 / _s1.value }}' + on-scale-change='_s1 = $event' + ) + .pc-form-grid-col-30 + +number('Async callback:', model + '.asyncCallbackPoolSize', '"asyncCallbackPoolSize"', 'true', 'max(8, availableProcessors)', '1', + 'Size of thread pool that is in charge of processing asynchronous callbacks') + .pc-form-grid-col-30 + +number('Striped:', model + '.stripedPoolSize', '"stripedPoolSize"', 'true', 'max(8, availableProcessors)', '1', + 'Striped pool size that should be used for cache requests processing') + + //- Since ignite 2.0 + .pc-form-grid-col-30(ng-if-start='$ctrl.available("2.0.0")') + +number('Data streamer:', model + '.dataStreamerThreadPoolSize', '"dataStreamerThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1', + 'Size of thread pool that is in charge of processing data stream messages') + .pc-form-grid-col-30 + +number('Query:', model + '.queryThreadPoolSize', '"queryThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1', + 'Size of thread pool that is in charge of processing query messages') + .pc-form-grid-col-60(ng-if-end) + .ignite-form-field + +ignite-form-field__label('Executor configurations:', '"executorConfigurations"') + +tooltip(`Custom thread pool configurations for compute tasks`) + .ignite-form-field__control + list-editable( + ng-model=executors + ng-model-options='{allowInvalid: true}' + name='executorConfigurations' + ui-validate=`{ + allNamesExist: '$ctrl.Clusters.executorConfigurations.allNamesExist($value)', + allNamesUnique: '$ctrl.Clusters.executorConfigurations.allNamesUnique($value)' + }` + ) + list-editable-item-view + | {{ $item.name }} / + | {{ $item.size || 'max(8, availableProcessors)'}} + + list-editable-item-edit + .pc-form-grid-row + .pc-form-grid-col-30 + +sane-ignite-form-field-text({ + label: 'Name:', + model: '$item.name', + name: '"ExecutorName"', + required: true, + placeholder: 'Input executor name', + tip: 'Thread pool name' + })( + ui-validate=`{ + uniqueName: '$ctrl.Clusters.executorConfiguration.name.customValidators.uniqueName($item, ${executors})' + }` + ui-validate-watch=`"${executors}"` + ui-validate-watch-object-equality='true' + ng-model-options='{allowInvalid: true}' + data-ignite-form-field-input-autofocus='true' + ) + +form-field-feedback(null, 'uniqueName', 'Service with that name is already configured') + .pc-form-grid-col-30 + +number('Pool size:', '$item.size', '"ExecutorPoolSize"', 'true', 'max(8, availableProcessors)', '1', 'Thread pool size') + + list-editable-no-items + list-editable-add-item-button( + add-item=`$edit($ctrl.Clusters.addExecutorConfiguration(${model}))` + label-single='executor configuration' + label-multiple='executor configurations' + ) + .ignite-form-field__errors( + ng-messages=`pools.executorConfigurations.$error` + ng-show=`pools.executorConfigurations.$invalid` + ) + +form-field-feedback(_, 'allNamesExist', 'All executor configurations should have a name') + +form-field-feedback(_, 'allNamesUnique', 'All executor configurations should have a unique name') + + .pca-form-column-6 + +preview-xml-java(model, 'clusterPools') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug new file mode 100644 index 0000000..fa85a5d --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/time.pug @@ -0,0 +1,44 @@ +//- + 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 = 'time' +-var model = '$ctrl.clonedCluster' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Time configuration + panel-description Time settings for CLOCK write ordering mode. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + //- Removed in ignite 2.0 + .pc-form-grid-col-30(ng-if-start='$ctrl.available(["1.0.0", "2.0.0"])') + +number('Samples size:', `${model}.clockSyncSamples`, '"clockSyncSamples"', 'true', '8', '0', + 'Number of samples used to synchronize clocks between different nodes<br/>\ + Clock synchronization is used for cache version assignment in CLOCK order mode') + .pc-form-grid-col-30(ng-if-end) + +number('Frequency:', `${model}.clockSyncFrequency`, '"clockSyncFrequency"', 'true', '120000', '0', + 'Frequency at which clock is synchronized between nodes, in milliseconds<br/>\ + Clock synchronization is used for cache version assignment in CLOCK order mode') + + .pc-form-grid-col-30 + +number-min-max('Port base:', `${model}.timeServerPortBase`, '"timeServerPortBase"', 'true', '31100', '0', '65535', + 'Time server provides clock synchronization between nodes<br/>\ + Base UPD port number for grid time server. Time server will be started on one of free ports in range') + .pc-form-grid-col-30 + +number('Port range:', `${model}.timeServerPortRange`, '"timeServerPortRange"', 'true', '100', '1', 'Time server port range') + .pca-form-column-6 + +preview-xml-java(model, 'clusterTime') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug new file mode 100644 index 0000000..b5f80df --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/cluster-edit-form/templates/transactions.pug @@ -0,0 +1,65 @@ +//- + 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 = 'transactions' +-var model = '$ctrl.clonedCluster.transactionConfiguration' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Transactions + panel-description + | Settings for transactions. + | #[a.link-success(href="https://apacheignite.readme.io/docs/transactions" target="_blank") More info] + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-30 + +dropdown('Concurrency:', `${model}.defaultTxConcurrency`, '"defaultTxConcurrency"', 'true', 'PESSIMISTIC', + '[\ + {value: "OPTIMISTIC", label: "OPTIMISTIC"},\ + {value: "PESSIMISTIC", label: "PESSIMISTIC"}\ + ]', + 'Cache transaction concurrency to use when one is not explicitly specified\ + <ul>\ + <li>OPTIMISTIC - All cache operations are not distributed to other nodes until commit is called</li>\ + <li>PESSIMISTIC - A lock is acquired on all cache operations with exception of read operations in READ_COMMITTED mode</li>\ + </ul>') + .pc-form-grid-col-30 + +dropdown('Isolation:', `${model}.defaultTxIsolation`, '"defaultTxIsolation"', 'true', 'REPEATABLE_READ', + '[\ + {value: "READ_COMMITTED", label: "READ_COMMITTED"},\ + {value: "REPEATABLE_READ", label: "REPEATABLE_READ"},\ + {value: "SERIALIZABLE", label: "SERIALIZABLE"}\ + ]', + 'Default transaction isolation\ + <ul>\ + <li>READ_COMMITTED - Always a committed value will be provided for read operations</li>\ + <li>REPEATABLE_READ - If a value was read once within transaction, then all consecutive reads will provide the same in-transaction value</li>\ + <li>SERIALIZABLE - All transactions occur in a completely isolated fashion, as if all transactions in the system had executed serially, one after the other.</li>\ + </ul>') + .pc-form-grid-col-60 + +number('Default timeout:', `${model}.defaultTxTimeout`, '"defaultTxTimeout"', 'true', '0', '0', 'Default transaction timeout') + .pc-form-grid-col-30 + +number('Pessimistic log cleanup delay:', `${model}.pessimisticTxLogLinger`, '"pessimisticTxLogLinger"', 'true', '10000', '0', + 'Delay, in milliseconds, after which pessimistic recovery entries will be cleaned up for failed node') + .pc-form-grid-col-30 + +number('Pessimistic log size:', `${model}.pessimisticTxLogSize`, '"pessimisticTxLogSize"', 'true', '0', '0', + 'Size of pessimistic transactions log stored on node in order to recover transaction commit if originating node has left grid before it has sent all messages to transaction nodes') + .pc-form-grid-col-60 + +java-class('Manager factory:', `${model}.txManagerFactory`, '"txManagerFactory"', 'true', 'false', + 'Class name of transaction manager factory for integration with JEE app servers') + .pca-form-column-6 + +preview-xml-java(model, 'clusterTransactions') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug index fe8b218..f505e58 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/template.tpl.pug @@ -15,15 +15,15 @@ limitations under the License. form(id='igfs' name='ui.inputForm' novalidate ng-submit='$ctrl.save()') - include /app/modules/states/configuration/igfs/general + include ./templates/general - include /app/modules/states/configuration/igfs/secondary - include /app/modules/states/configuration/igfs/ipc - include /app/modules/states/configuration/igfs/fragmentizer + include ./templates/secondary + include ./templates/ipc + include ./templates/fragmentizer //- Removed in ignite 2.0 - include /app/modules/states/configuration/igfs/dual - include /app/modules/states/configuration/igfs/misc + include ./templates/dual + include ./templates/misc .pc-form-actions-panel .pc-form-actions-panel__right-after http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug new file mode 100644 index 0000000..67a37ad --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/dual.pug @@ -0,0 +1,42 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'dualMode' +-var model = 'backupItem' + +panel-collapsible( + ng-form=form + on-open=`ui.loadPanel('${form}')` + ng-if='$ctrl.available(["1.0.0", "2.0.0"])' +) + panel-title Dual mode + panel-description + | IGFS supports dual-mode that allows it to work as either a standalone file system in Hadoop cluster, or work in tandem with HDFS, providing a primary caching layer for the secondary HDFS. + | As a caching layer it provides highly configurable read-through and write-through behaviour. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6 + .settings-row + +number('Maximum pending puts size:', `${model}.dualModeMaxPendingPutsSize`, '"dualModeMaxPendingPutsSize"', 'true', '0', 'Number.MIN_SAFE_INTEGER', + 'Maximum amount of pending data read from the secondary file system and waiting to be written to data cache<br/>\ + Zero or negative value stands for unlimited size') + .settings-row + +java-class('Put executor service:', `${model}.dualModePutExecutorService`, '"dualModePutExecutorService"', 'true', 'false', 'DUAL mode put operation executor service') + .settings-row + +checkbox('Put executor service shutdown', `${model}.dualModePutExecutorServiceShutdown`, '"dualModePutExecutorServiceShutdown"', 'DUAL mode put operation executor service shutdown flag') + .pca-form-column-6 + +preview-xml-java(model, 'igfsDualMode') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug new file mode 100644 index 0000000..a8194c2 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/fragmentizer.pug @@ -0,0 +1,37 @@ +//- + 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 = 'fragmentizer' +-var model = 'backupItem' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Fragmentizer + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + -var enabled = `${model}.fragmentizerEnabled` + + .pc-form-grid-col-60 + +checkbox('Enabled', enabled, '"fragmentizerEnabled"', 'Fragmentizer enabled flag') + .pc-form-grid-col-30 + +number('Concurrent files:', `${model}.fragmentizerConcurrentFiles`, '"fragmentizerConcurrentFiles"', enabled, '0', '0', 'Number of files to process concurrently by fragmentizer') + .pc-form-grid-col-30 + +number('Throttling block length:', `${model}.fragmentizerThrottlingBlockLength`, '"fragmentizerThrottlingBlockLength"', enabled, '16777216', '1', 'Length of file chunk to transmit before throttling is delayed') + .pc-form-grid-col-60 + +number('Throttling delay:', `${model}.fragmentizerThrottlingDelay`, '"fragmentizerThrottlingDelay"', enabled, '200', '0', 'Delay in milliseconds for which fragmentizer is paused') + .pca-form-column-6 + +preview-xml-java(model, 'igfsFragmentizer') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug new file mode 100644 index 0000000..b9eb8fc --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/general.pug @@ -0,0 +1,72 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'general' +-var model = 'backupItem' + +panel-collapsible(opened=`::true` ng-form=form) + panel-title General + panel-description + | General IGFS configuration. + a.link-success(href="https://apacheignite-fs.readme.io/docs/in-memory-file-system" target="_blank") More info + panel-content.pca-form-row + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +sane-ignite-form-field-text({ + label: 'Name:', + model: `${model}.name`, + name: '"igfsName"', + placeholder: 'Input name', + required: true + })( + ignite-unique='$ctrl.igfss' + ignite-unique-property='name' + ignite-unique-skip=`["_id", ${model}]` + ) + +unique-feedback(`${model}.name`, 'IGFS name should be unique.') + .pc-form-grid-col-30 + +sane-ignite-form-field-dropdown({ + label: 'IGFS mode:', + model: `${model}.defaultMode`, + name: '"defaultMode"', + placeholder: '{{::$ctrl.IGFSs.defaultMode.default}}', + options: '{{::$ctrl.IGFSs.defaultMode.values}}', + tip: ` + Mode to specify how IGFS interacts with Hadoop file system + <ul> + <li>PRIMARY - in this mode IGFS will not delegate to secondary Hadoop file system and will cache all the files in memory only</li> + <li>PROXY - in this mode IGFS will not cache any files in memory and will only pass them through to secondary file system</li> + <li>DUAL_SYNC - in this mode IGFS will cache files locally and also <b>synchronously</b> write them through to secondary file system</li> + <li>DUAL_ASYNC - in this mode IGFS will cache files locally and also <b> asynchronously </b> write them through to secondary file system</li> + </ul> + ` + }) + .pc-form-grid-col-30 + +sane-ignite-form-field-number({ + label: 'Group size:', + model: `${model}.affinnityGroupSize`, + name: '"affinnityGroupSize"', + placeholder: '{{::$ctrl.IGFSs.affinnityGroupSize.default}}', + min: '{{::$ctrl.IGFSs.affinnityGroupSize.min}}', + tip: ` + Size of the group in blocks<br/> + Required for construction of affinity mapper in IGFS data cache + ` + }) + .pca-form-column-6 + +preview-xml-java(model, 'igfsGeneral') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug new file mode 100644 index 0000000..ef024b4 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/ipc.pug @@ -0,0 +1,55 @@ +//- + 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 = 'ipc' +-var model = 'backupItem' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title IPC + panel-description IGFS Inter-process communication properties. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + -var ipcEndpointConfiguration = `${model}.ipcEndpointConfiguration` + -var enabled = `${model}.ipcEndpointEnabled` + + .pc-form-grid-col-60 + +checkbox('Enabled', enabled, '"ipcEndpointEnabled"', 'IPC endpoint enabled flag') + .pc-form-grid-col-60 + +dropdown('Type:', `${ipcEndpointConfiguration}.type`, '"ipcEndpointConfigurationType"', enabled, 'TCP', + '[\ + {value: "SHMEM", label: "SHMEM"},\ + {value: "TCP", label: "TCP"}\ + ]', + 'IPC endpoint type\ + <ul>\ + <li>SHMEM - shared memory endpoint</li>\ + <li>TCP - TCP endpoint</li>\ + </ul>') + .pc-form-grid-col-30 + +text-ip-address('Host:', `${ipcEndpointConfiguration}.host`, '"ipcEndpointConfigurationHost"', enabled, '127.0.0.1', 'Host endpoint is bound to') + .pc-form-grid-col-30 + +number-min-max('Port:', `${ipcEndpointConfiguration}.port`, '"ipcEndpointConfigurationPort"', enabled, '10500', '1', '65535', 'Port endpoint is bound to') + .pc-form-grid-col-30 + +number('Memory size:', `${ipcEndpointConfiguration}.memorySize`, '"ipcEndpointConfigurationMemorySize"', enabled, '262144', '1', 'Shared memory size in bytes allocated for endpoint communication') + .pc-form-grid-col-30 + +number('Thread count:', `${ipcEndpointConfiguration}.threadCount`, '"ipcEndpointConfigurationThreadCount"', enabled, 'availableProcessors', '1', + 'Number of threads used by this endpoint to process incoming requests') + .pc-form-grid-col-60 + +text-enabled('Token directory:', `${ipcEndpointConfiguration}.tokenDirectoryPath`, '"ipcEndpointConfigurationTokenDirectoryPath"', enabled, 'false', 'ipc/shmem', 'Directory where shared memory tokens are stored') + .pca-form-column-6 + +preview-xml-java(model, 'igfsIPC') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug new file mode 100644 index 0000000..9a39b3a --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/misc.pug @@ -0,0 +1,110 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include /app/helpers/jade/mixins + +-var form = 'misc' +-var model = 'backupItem' +-var pathModes = `${model}.pathModes` + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Miscellaneous + panel-description Various miscellaneous IGFS settings. + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +number('Block size:', `${model}.blockSize`, '"blockSize"', 'true', '65536', '0', 'File data block size in bytes') + + //- Since ignite 2.0 + .pc-form-grid-col-60(ng-if='$ctrl.available("2.0.0")') + +number('Buffer size:', `${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes') + + //- Removed in ignite 2.0 + .pc-form-grid-col-60(ng-if-start='$ctrl.available(["1.0.0", "2.0.0"])') + +number('Stream buffer size:', `${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes') + .pc-form-grid-col-60(ng-if-end) + +number('Maximum space size:', `${model}.maxSpaceSize`, '"maxSpaceSize"', 'true', '0', '0', 'Maximum space available for data cache to store file system entries') + + .pc-form-grid-col-30 + +number('Maximum task range length:', `${model}.maximumTaskRangeLength`, '"maximumTaskRangeLength"', 'true', '0', '0', 'Maximum default range size of a file being split during IGFS task execution') + .pc-form-grid-col-30 + +number-min-max('Management port:', `${model}.managementPort`, '"managementPort"', 'true', '11400', '0', '65535', 'Port number for management endpoint') + .pc-form-grid-col-30 + +number('Per node batch size:', `${model}.perNodeBatchSize`, '"perNodeBatchSize"', 'true', '100', '0', 'Number of file blocks collected on local node before sending batch to remote node') + .pc-form-grid-col-30 + +number('Per node parallel batch count:', `${model}.perNodeParallelBatchCount`, '"perNodeParallelBatchCount"', 'true', '8', '0', 'Number of file block batches that can be concurrently sent to remote node') + .pc-form-grid-col-60 + +number('Prefetch blocks:', `${model}.prefetchBlocks`, '"prefetchBlocks"', 'true', '0', '0', 'Number of pre-fetched blocks if specific file chunk is requested') + .pc-form-grid-col-60 + +number('Sequential reads before prefetch:', `${model}.sequentialReadsBeforePrefetch`, '"sequentialReadsBeforePrefetch"', 'true', '0', '0', 'Amount of sequential block reads before prefetch is triggered') + + //- Removed in ignite 2.0 + .pc-form-grid-col-60(ng-if='$ctrl.available(["1.0.0", "2.0.0"])') + +number('Trash purge timeout:', `${model}.trashPurgeTimeout`, '"trashPurgeTimeout"', 'true', '1000', '0', 'Maximum timeout awaiting for trash purging in case data cache oversize is detected') + + .pc-form-grid-col-60 + +checkbox('Colocate metadata', `${model}.colocateMetadata`, '"colocateMetadata"', 'Whether to co-locate metadata on a single node') + .pc-form-grid-col-60 + +checkbox('Relaxed consistency', `${model}.relaxedConsistency`, '"relaxedConsistency"', + 'If value of this flag is <b>true</b>, IGFS will skip expensive consistency checks<br/>\ + It is recommended to set this flag to <b>false</b> if your application has conflicting\ + operations, or you do not know how exactly users will use your system') + + //- Since ignite 2.0 + .pc-form-grid-col-60(ng-if='$ctrl.available("2.0.0")') + +checkbox('Update file length on flush', model + '.updateFileLengthOnFlush', '"updateFileLengthOnFlush"', 'Update file length on flush flag') + + .pc-form-grid-col-60 + mixin igfs-misc-path-modes + .ignite-form-field + +ignite-form-field__label('Path modes:', '"pathModes"') + +tooltip(`Map of path prefixes to IGFS modes used for them`) + .ignite-form-field__control + -let items = pathModes + + list-editable(ng-model=items) + list-editable-item-view + | {{ $item.path + " [" + $item.mode + "]"}} + + list-editable-item-edit + - form = '$parent.form' + + .pc-form-grid-row + .pc-form-grid-col-30 + +ignite-form-field-text('Path:', '$item.path', '"path"', false, true, 'Enter path')(ignite-auto-focus) + .pc-form-grid-col-30 + +sane-ignite-form-field-dropdown({ + label: 'Mode:', + model: `$item.mode`, + name: '"mode"', + required: true, + placeholder: 'Choose igfs mode', + options: '{{::$ctrl.IGFSs.defaultMode.values}}' + })( + ng-model-options='{allowInvalid: true}' + ) + + list-editable-no-items + list-editable-add-item-button( + add-item=`$editLast((${items} = ${items} || []).push({}))` + label-single='path mode' + label-multiple='path modes' + ) + + +igfs-misc-path-modes + + .pca-form-column-6 + +preview-xml-java(model, 'igfsMisc') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug new file mode 100644 index 0000000..92c8210 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/igfs-edit-form/templates/secondary.pug @@ -0,0 +1,55 @@ +//- + 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 = 'secondaryFileSystem' +-var model = 'backupItem' + +panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) + panel-title Secondary file system + panel-description + | Secondary file system is provided for pass-through, write-through, and read-through purposes. + a.link-success(href="https://apacheignite-fs.readme.io/docs/secondary-file-system" target="_blank") More info + panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) + .pca-form-column-6.pc-form-grid-row + -var enabled = `${model}.secondaryFileSystemEnabled` + -var secondaryFileSystem = `${model}.secondaryFileSystem` + + .pc-form-grid-col-60 + +sane-form-field-checkbox({ + label: 'Enabled', + name: '"secondaryFileSystemEnabled"', + model: enabled + })( + ng-model-options='{allowInvalid: true}' + ui-validate=`{ + requiredWhenIGFSProxyMode: '$ctrl.IGFSs.secondaryFileSystemEnabled.requiredWhenIGFSProxyMode(${model})', + requiredWhenPathModeProxyMode: '$ctrl.IGFSs.secondaryFileSystemEnabled.requiredWhenPathModeProxyMode(${model})' + }` + ui-validate-watch-collection=`"[${model}.defaultMode, ${model}.pathModes]"` + ui-validate-watch-object-equality='true' + ) + +form-field-feedback(null, 'requiredWhenIGFSProxyMode', 'Secondary file system should be configured for "PROXY" IGFS mode') + +form-field-feedback(null, 'requiredWhenPathModeProxyMode', 'Secondary file system should be configured for "PROXY" path mode') + .pc-form-grid-col-60 + +text-enabled('URI:', `${secondaryFileSystem}.uri`, '"hadoopURI"', enabled, 'false', 'hdfs://[namenodehost]:[port]/[path]', 'URI of file system') + .pc-form-grid-col-60 + +text-enabled('Config path:', `${secondaryFileSystem}.cfgPath`, '"cfgPath"', enabled, 'false', 'Path to additional config', 'Additional path to Hadoop configuration') + .pc-form-grid-col-60 + +text-enabled('User name:', `${secondaryFileSystem}.userName`, '"userName"', enabled, 'false', 'Input user name', 'User name') + .pca-form-column-6 + +preview-xml-java(model, 'igfsSecondFS') http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug index 8ebd11c..78ae769 100644 --- a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/template.tpl.pug @@ -15,9 +15,9 @@ limitations under the License. form(id='model' name='ui.inputForm' novalidate ng-submit='$ctrl.save()') - include /app/modules/states/configuration/domains/general - include /app/modules/states/configuration/domains/query - include /app/modules/states/configuration/domains/store + include ./templates/general + include ./templates/query + include ./templates/store .pc-form-actions-panel .pc-form-actions-panel__right-after http://git-wip-us.apache.org/repos/asf/ignite/blob/68719446/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug new file mode 100644 index 0000000..a6c8194 --- /dev/null +++ b/modules/web-console/frontend/app/components/page-configure-advanced/components/model-edit-form/templates/general.pug @@ -0,0 +1,57 @@ +//- + 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 = 'general' +-var model = 'backupItem' +-var generatePojo = `${model}.generatePojo` + +panel-collapsible(opened=`::true` ng-form=form) + panel-title General + panel-description + | Domain model properties common for Query and Store. + a.link-success(href="https://apacheignite.readme.io/docs/cache-queries" target="_blank") More info about query configuration. + a.link-success(href="https://apacheignite.readme.io/docs/3rd-party-store" target="_blank") More info about store. + panel-content.pca-form-row + .pca-form-column-6.pc-form-grid-row + .pc-form-grid-col-60 + +checkbox('Generate POJO classes', generatePojo, '"generatePojo"', 'If selected then POJO classes will be generated from database tables') + .pc-form-grid-col-30 + +sane-ignite-form-field-dropdown({ + label: 'Caches:', + model: `${model}.caches`, + name: '"caches"', + multiple: true, + placeholder: 'Choose caches', + placeholderEmpty: 'No valid caches configured', + options: '$ctrl.cachesMenu', + tip: 'Select caches to describe types in cache' + }) + .pc-form-grid-col-30 + +dropdown-required('Query metadata:', `${model}.queryMetadata`, '"queryMetadata"', 'true', 'true', '', '::$ctrl.Models.queryMetadata.values', + 'Query metadata configured with:\ + <ul>\ + <li>Java annotations like @QuerySqlField</li>\ + <li>Configuration via QueryEntity class</li>\ + </ul>') + .pc-form-grid-col-60 + +java-class-typeahead('Key type:', `${model}.keyType`, '"keyType"', '$ctrl.javaBuiltInClassesBase', 'true', 'true', '{{ ' + generatePojo + ' ? "Full class name for Key" : "Key type name" }}', 'Key class used to store key in cache', generatePojo) + .pc-form-grid-col-60 + +java-class-autofocus-placholder('Value type:', `${model}.valueType`, '"valueType"', 'true', 'true', 'false', '{{ ' + generatePojo +' ? "Enter fully qualified class name" : "Value type name" }}', 'Value class used to store value in cache', generatePojo) + + .pca-form-column-6 + +preview-xml-java(model, 'domainModelGeneral')