http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/deployment.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/deployment.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/deployment.jade new file mode 100644 index 0000000..b2f1fb9 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/deployment.jade @@ -0,0 +1,112 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../app/helpers/jade/mixins.jade + +-var form = 'deployment' +-var model = 'backupItem' +-var exclude = model + '.peerClassLoadingLocalClassPathExclude' +-var enabled = 'backupItem.peerClassLoadingEnabled' + +form.panel.panel-default(name='deployment' novalidate) + .panel-heading(bs-collapse-toggle ng-click='ui.loadPanel("#{form}")') + ignite-form-panel-chevron + label Class deployment + ignite-form-field-tooltip.tipLabel + | Task and resources deployment in cluster + ignite-form-revert + .panel-collapse(role='tabpanel' bs-collapse-target id='deployment') + .panel-body(ng-if='ui.isPanelLoaded("#{form}")') + .col-sm-6 + .settings-row + +dropdown('Deployment mode:', model + '.deploymentMode', 'deploymentMode', 'true', 'SHARED', + '[\ + {value: "PRIVATE", label: "PRIVATE"},\ + {value: "ISOLATED", label: "ISOLATED"}, \ + {value: "SHARED", label: "SHARED"},\ + {value: "CONTINUOUS", label: "CONTINUOUS"}\ + ]', + '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>') + .settings-row + +checkbox('Enable peer class loading', model + '.peerClassLoadingEnabled', 'peerClassLoadingEnabled', 'Enables/disables peer class loading') + .settings-row + +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') + .settings-row + +number('Pool size:', model + '.peerClassLoadingThreadPoolSize', 'peerClassLoadingThreadPoolSize', enabled, '2', '1', 'Thread pool size to use for peer class loading') + .settings-row + ignite-form-group(ng-model=exclude ng-form=form) + ignite-form-field-label + | Local class path exclude + ignite-form-group-tooltip + | List of packages from the system classpath that need to be peer-to-peer loaded from task originating node<br/> + | '*' is supported at the end of the package name which means that all sub-packages and their classes are included like in Java package import clause + ignite-form-group-add(ng-show='#{enabled}' ng-click='(group.add = [{}])') + | Add package name. + + -var uniqueTip = 'Such package already exists' + -var tipJavaPackageName = 'Package name is invalid' + -var tipJavaKeyWord = 'Package name could not contains reserved java keyword' + + .group-content(ng-if=exclude + '.length') + -var field = 'edit' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var javaPackageName = 'form[ngModelName].$error.javaPackageName' + -var javaKeywords = 'form[ngModelName].$error.javaKeywords' + -var save = exclude + '[$index] = ' + field + + ignite-form-field(ng-repeat='model in #{exclude} track by $index' type='internal' name='Package name') + .indexField + | {{ $index+1 }}) + +table-remove-button(exclude, 'Remove package name') + span(ng-hide='field.edit') + a.labelFormField(ng-click='#{enabled} && (field.edit = true)') {{ model }} + span(ng-if='field.edit' ng-init='#{field} = model') + +table-java-package-field(field, exclude, valid, save, false) + +table-save-button(valid, save, false) + +unique-feedback(unique, uniqueTip) + +error-feedback(javaPackageName, 'javaPackageName', tipJavaPackageName) + +error-feedback(javaKeywords, 'javaKeywords', tipJavaKeyWord) + + .group-content(ng-repeat='field in group.add') + -var field = 'new' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var javaPackageName = 'form[ngModelName].$error.javaPackageName' + -var javaKeywords = 'form[ngModelName].$error.javaKeywords' + -var save = exclude + '.push(' + field + ')' + + ignite-form-field(type='internal' name='Package name') + +table-java-package-field(field, exclude, valid, save, true) + +table-save-button(valid, save, true) + +unique-feedback(unique, uniqueTip) + +error-feedback(javaPackageName, 'javaPackageName', tipJavaPackageName) + +error-feedback(javaKeywords, 'javaKeywords', tipJavaKeyWord) + + + .group-content-empty(ng-if='!(#{exclude}.length) && !group.add.length') + | Not defined + .col-sm-6 + +preview-xml-java(model, 'clusterDeployment')
http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js new file mode 100644 index 0000000..f61d625 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './discovery.jade!'; + +export default ['igniteConfigurationClustersDiscovery', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.jade new file mode 100644 index 0000000..d1ee763 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/discovery.jade @@ -0,0 +1,81 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../app/helpers/jade/mixins.jade + +-var form = 'discovery' +-var model = 'backupItem.discovery' + +form.panel.panel-default(name=form novalidate) + .panel-heading(bs-collapse-toggle ng-click='ui.loadPanel("#{form}")') + ignite-form-panel-chevron + label Discovery + ignite-form-field-tooltip.tipLabel + | Discovery properties configuration + ignite-form-revert + .panel-collapse(role='tabpanel' bs-collapse-target id=form) + .panel-body(ng-if='ui.isPanelLoaded("#{form}")') + .col-sm-6 + .settings-row + +text-ip-address('Local address:', model + '.localAddress', 'discoLocalAddress', 'true', '228.1.2.4', 'Local address') + .settings-row + +number-min-max('Local port:', model + '.localPort', 'discoLocalPort', 'true', '47500', '1024', '65535', 'Local port which node uses') + .settings-row + +number('Local port range:', model + '.localPortRange', 'discoLocalPortRange', 'true', '100', '1', 'Local port range') + .settings-row + +java-class('Address resolver:', model + '.addressResolver', 'discoAddressResolver', 'true', 'false', + 'Class name of resolution between external and internal addresses provider') + .settings-row + +number('Socket timeout:', model + '.socketTimeout', 'socketTimeout', 'true', '5000', '0', 'Socket operations timeout') + .settings-row + +number('Acknowledgement timeout:', model + '.ackTimeout', 'ackTimeout', 'true', '5000', '0', 'Message acknowledgement timeout') + .settings-row + +number('Max acknowledgement timeout:', model + '.maxAckTimeout', 'maxAckTimeout', 'true', '600000', '0', 'Maximum message acknowledgement timeout') + .settings-row + +number('Network timeout:', model + '.networkTimeout', 'discoNetworkTimeout', 'true', '5000', '1', 'Network timeout') + .settings-row + +number('Join timeout:', model + '.joinTimeout', 'joinTimeout', 'true', '0', '0', 'Join timeout') + .settings-row + +number('Thread priority:', model + '.threadPriority', 'threadPriority', 'true', '10', '1', 'Thread priority for all threads started by SPI') + .settings-row + +number('Heartbeat frequency:', model + '.heartbeatFrequency', 'heartbeatFrequency', 'true', '2000', '1', 'Heartbeat messages issuing frequency') + .settings-row + +number('Max heartbeats miss w/o init:', model + '.maxMissedHeartbeats', 'maxMissedHeartbeats', 'true', '1', '1', + 'Max heartbeats count node can miss without initiating status check') + .settings-row + +number('Max heartbeats miss w/o failing client node:', model + '.maxMissedClientHeartbeats', 'maxMissedClientHeartbeats', 'true', '5', '1') + .settings-row + +number('Topology history:', model + '.topHistorySize', 'topHistorySize', 'true', '1000', '0', 'Size of topology snapshots history') + .settings-row + +java-class('Discovery listener:', model + '.listener', 'discoListener', 'true', 'false', 'Grid discovery listener') + .settings-row + +java-class('Data exchange:', model + '.dataExchange', 'dataExchange', 'true', 'false', 'Class name of handler for initial data exchange between Ignite nodes') + .settings-row + +java-class('Metrics provider:', model + '.metricsProvider', 'metricsProvider', 'true', 'false', 'Class name of metric provider to discovery SPI') + .settings-row + +number('Reconnect count:', model + '.reconnectCount', 'discoReconnectCount', 'true', '10', '1', 'Reconnect attempts count') + .settings-row + +number('Statistics frequency:', model + '.statisticsPrintFrequency', 'statisticsPrintFrequency', 'true', '0', '1', 'Statistics print frequency') + .settings-row + +number('IP finder clean frequency:', model + '.ipFinderCleanFrequency', 'ipFinderCleanFrequency', 'true', '60000', '1', 'IP finder clean frequency') + .settings-row + +java-class('Node authenticator:', model + '.authenticator', 'authenticator', 'true', 'false', 'Node authenticator') + .settings-row + +checkbox('Force server mode', model + '.forceServerMode', 'forceServerMode', 'Force server mode') + .settings-row + +checkbox('Client reconnect disabled', model + '.clientReconnectDisabled', 'clientReconnectDisabled', 'Client reconnect disabled') + .col-sm-6 + +preview-xml-java(model, 'clusterDiscovery') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.directive.js new file mode 100644 index 0000000..c04829d --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './events.jade!'; + +export default ['igniteConfigurationClustersEvents', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.jade new file mode 100644 index 0000000..42582ac --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/events.jade @@ -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.jade + +-var form = 'events' +-var model = 'backupItem' + +form.panel.panel-default(name=form novalidate) + .panel-heading(bs-collapse-toggle ng-click='ui.loadPanel("#{form}")') + ignite-form-panel-chevron + label Events + ignite-form-field-tooltip.tipLabel + | Grid events are used for notification about what happens within the grid + ignite-form-revert + .panel-collapse(role='tabpanel' bs-collapse-target id=form) + .panel-body(ng-if='ui.isPanelLoaded("#{form}")') + .col-sm-6 + .settings-row + +dropdown-multiple('Include type:', model + '.includeEventTypes', 'includeEventTypes', 'true', 'Choose recorded event types', '', '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') + .col-sm-6 + +preview-xml-java(model, 'clusterEvents') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.directive.js new file mode 100644 index 0000000..29644fc --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './general.jade!'; + +export default ['igniteConfigurationClustersGeneral', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.jade new file mode 100644 index 0000000..aea42d6 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general.jade @@ -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.jade + +-var form = 'general' +-var model = 'backupItem' + +form.panel.panel-default(name=form novalidate) + .panel-heading(bs-collapse-toggle) + ignite-form-panel-chevron + label General + ignite-form-revert + .panel-collapse(role='tabpanel' bs-collapse-target id=form) + .panel-body + .col-sm-6 + .settings-row + +text('Name:', model + '.name', 'clusterName', 'true', 'Input name', 'Grid name') + .settings-row + +dropdown-multiple('<span>Caches:</span><a ui-sref="base.configuration.caches({id: ' + model + '._id})"> (add)</a>', + model + '.caches', 'caches', 'true', 'Choose caches', 'No caches configured', 'caches', + 'Select caches to start in cluster or add a new cache') + .settings-row + +text-ip-address('Local host:', model + '.localHost', 'localHost', 'true', '0.0.0.0', 'System-wide local address or host for all Ignite components to bind to') + .settings-row + +dropdown('Discovery:', model + '.discovery.kind', 'discovery', 'true', 'Choose discovery', 'discoveries', + 'Discovery allows to discover remote nodes in grid\ + <ul>\ + <li>Static IPs - IP Finder which works only with pre configured list of IP addresses specified</li>\ + <li>Multicast - Multicast based IP finder</li>\ + <li>AWS S3 - AWS S3 based IP finder</li>\ + <li>Apache jclouds - Apache jclouds multi cloud toolkit based IP finder</li>\ + <li>Google cloud storage - Google Cloud Storage based IP finder</li>\ + <li>JDBC - JDBC based IP finder</li>\ + <li>Shared filesystem - Shared filesystem based IP finder</li>\ + <li>Apache ZooKeeper - Apache ZooKeeper based IP finder</li>\ + </ul>') + .settings-row + .panel-details + ignite-configuration-clusters-general-discovery-cloud( + ng-if='#{model}.discovery.kind === "Cloud"') + ignite-configuration-clusters-general-discovery-google( + ng-if='#{model}.discovery.kind === "GoogleStorage"') + ignite-configuration-clusters-general-discovery-jdbc( + ng-if='#{model}.discovery.kind === "Jdbc"') + ignite-configuration-clusters-general-discovery-multicast( + ng-if='#{model}.discovery.kind === "Multicast"') + ignite-configuration-clusters-general-discovery-s3( + ng-if='#{model}.discovery.kind === "S3"') + ignite-configuration-clusters-general-discovery-shared( + ng-if='#{model}.discovery.kind === "SharedFs"') + ignite-configuration-clusters-general-discovery-vm( + ng-if='#{model}.discovery.kind === "Vm"') + ignite-configuration-clusters-general-discovery-zookeeper( + ng-if='#{model}.discovery.kind === "ZooKeeper"') + .col-sm-6 + +preview-xml-java(model, 'clusterCaches', 'caches') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.directive.js new file mode 100644 index 0000000..a785395 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './cloud.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryCloud', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.jade new file mode 100644 index 0000000..1f5ef16 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/cloud.jade @@ -0,0 +1,125 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.Cloud' +-var regions = model + '.regions' +-var zones = model + '.zones' +-var formRegions = 'discoveryCloudRegions' +-var formZones = 'discoveryCloudZones' + +div + .details-row + +text('Credential:', model + '.credential', 'credential', 'false', 'Input cloud credential', + 'Credential that is used during authentication on the cloud<br/>\ + Depending on a cloud platform it can be a password or access key') + .details-row + +text('Path to credential:', model + '.credentialPath', 'credentialPath', 'false', 'Input pathto credential', + 'Path to a credential that is used during authentication on the cloud<br/>\ + Access key or private key should be stored in a plain or PEM file without a passphrase') + .details-row + +text('Identity:', model + '.identity', 'identity', 'true', 'Input identity', + 'Identity that is used as a user name during a connection to the cloud<br/>\ + Depending on a cloud platform it can be an email address, user name, etc') + .details-row + +text('Provider:', model + '.provider', 'provider', 'true', 'Input provider', 'Cloud provider to use') + .details-row + ignite-form-group(ng-model=regions ng-form=formRegions) + -var uniqueTip = 'Such region already exists!' + + ignite-form-field-label + | Regions + ignite-form-group-tooltip + | List of regions where VMs are located#[br] + | If the regions are not set then every region, that a cloud provider has, will be investigated. This could lead to significant performance degradation#[br] + | Note, that some cloud providers, like Google Compute Engine, doesn't have a notion of a region. For such providers regions are redundant + ignite-form-group-add(ng-click='group.add = [{}]') + | Add new region + + .group-content(ng-if='#{regions}.length') + -var field = 'edit' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var save = regions + '[$index] = ' + field + + ignite-form-field(ng-repeat='model in #{regions} track by $index' type='internal' name='Region') + .indexField + | {{ $index+1 }}) + +table-remove-button(regions, 'Remove region') + span(ng-hide='field.edit') + a.labelFormField(ng-click='field.edit = true') {{ model }} + span(ng-if='field.edit' ng-init='#{field} = model') + +table-text-field(field, regions, valid, save, 'Region name', false) + +table-save-button(valid, save, false) + +unique-feedback(unique, uniqueTip) + + .group-content(ng-repeat='field in group.add') + -var field = 'new' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var save = regions + '.push(' + field + ')' + + ignite-form-field(type='internal' name='Region') + +table-text-field(field, regions, valid, save, 'Region name', true) + +table-save-button(valid, save, true) + +unique-feedback(unique, uniqueTip) + + .group-content-empty(ng-if='!(#{regions}.length) && !group.add.length') + | Not defined + .details-row + ignite-form-group(ng-model=zones ng-form=formZones) + -var uniqueTip = 'Such zone already exists!' + + ignite-form-field-label + | Zones + ignite-form-group-tooltip + | List of zones where VMs are located#[br] + | If the zones are not set then every zone from specified regions, will be taken into account#[br] + | Note, that some cloud providers, like Rackspace, doesn't have a notion of a zone. For such providers zones are redundant + ignite-form-group-add(ng-click='group.add = [{}]') + | Add new zone + + .group-content(ng-if='#{zones}.length') + -var field = 'edit' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var save = zones + '[$index] = ' + field + + ignite-form-field(ng-repeat='model in #{zones} track by $index' type='internal' name='Zone') + .indexField + | {{ $index+1 }}) + +table-remove-button(zones, 'Remove zone') + span(ng-hide='field.edit') + a.labelFormField(ng-click='field.edit = true') {{ model }} + span(ng-if='field.edit' ng-init='#{field} = model') + +table-text-field(field, zones, valid, save, 'Zone name', false) + +table-save-button(valid, save, false) + +unique-feedback(unique, uniqueTip) + + .group-content(ng-repeat='field in group.add') + -var field = 'new' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var save = zones + '.push(' + field + ')' + + ignite-form-field(type='internal' name='Zone') + +table-text-field(field, zones, valid, save, 'Zone name', true) + +table-save-button(valid, save, true) + +unique-feedback(unique, uniqueTip) + + .group-content-empty(ng-if='!(#{zones}.length) && !group.add.length') + | Not defined http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.directive.js new file mode 100644 index 0000000..d7df6d2 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './google.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryGoogle', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.jade new file mode 100644 index 0000000..54e4bb5 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/google.jade @@ -0,0 +1,35 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.GoogleStorage' + +div + .details-row + +text('Project name:', model + '.projectName', 'projectName', 'true', 'Input project name', '' + + 'Google Cloud Platforms project name<br/>\ + Usually this is an auto generated project number(ex. 208709979073) that can be found in "Overview" section of Google Developer Console') + .details-row + +text('Bucket name:', model + '.bucketName', 'bucketName', 'true', 'Input bucket name', + 'Google Cloud Storage bucket name<br/>\ + If the bucket does not exist Ignite will automatically create it<br/>\ + However the name must be unique across whole Google Cloud Storage and Service Account Id must be authorized to perform this operation') + .details-row + +text('Private key path:', model + '.serviceAccountP12FilePath', 'serviceAccountP12FilePath', 'true', 'Input private key path', + 'Full path to the private key in PKCS12 format of the Service Account') + .details-row + +text('Account id:', model + '.serviceAccountId', 'serviceAccountId', 'true', 'Input account id', 'Service account ID (typically an e-mail address)') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.directive.js new file mode 100644 index 0000000..44d4624 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './jdbc.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryJdbc', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.jade new file mode 100644 index 0000000..fbca508 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/jdbc.jade @@ -0,0 +1,24 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.Jdbc' + +div + .details-row + +checkbox('DB schema should be initialized by Ignite', model + '.initSchema', 'initSchema', + 'Flag indicating whether DB schema should be initialized by Ignite or was explicitly created by user') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.directive.js new file mode 100644 index 0000000..606bb9d --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './multicast.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryMulticast', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.jade new file mode 100644 index 0000000..2c9dd50 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/multicast.jade @@ -0,0 +1,109 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var form = 'general' +-var model = 'backupItem.discovery.Multicast' +-var addresses = model + '.addresses' + +div + .details-row + +text-ip-address('IP address:', model + '.multicastGroup', 'multicastGroup', 'true', '228.1.2.4', 'IP address of multicast group') + .details-row + +number-min-max('Port number:', model + '.multicastPort', 'multicastPort', 'true', '47400', '0', '65535', 'Port number which multicast messages are sent to') + .details-row + +number('Waits for reply:', model + '.responseWaitTime', 'responseWaitTime', 'true', '500', '0', + 'Time in milliseconds IP finder waits for reply to multicast address request') + .details-row + +number('Attempts count:', model + '.addressRequestAttempts', 'addressRequestAttempts', 'true', '2', '0', + 'Number of attempts to send multicast address request<br/>\ + IP finder re - sends request only in case if no reply for previous request is received') + .details-row + +text-ip-address('Local address:', model + '.localAddress', 'localAddress', 'true', '0.0.0.0', + 'Local host address used by this IP finder<br/>\ + If provided address is non - loopback then multicast socket is bound to this interface<br/>\ + If local address is not set or is any local address then IP finder creates multicast sockets for all found non - loopback addresses') + .details-row + -var form = 'discoveryMulticastAddresses'; + + ignite-form-group(ng-model=addresses ng-form=form) + -var uniqueTip = 'Such IP address already exists!' + -var ipAddressTip = 'Invalid IP address!' + + ignite-form-field-label + | Addresses + ignite-form-group-tooltip + | Addresses may be represented as follows:#[br] + ul: li IP address (e.g. 127.0.0.1, 9.9.9.9, etc) + li IP address and port (e.g. 127.0.0.1:47500, 9.9.9.9:47501, etc) + li IP address and port range (e.g. 127.0.0.1:47500..47510, 9.9.9.9:47501..47504, etc) + li Hostname (e.g. host1.com, host2, etc) + li Hostname and port (e.g. host1.com:47500, host2:47502, etc) + li Hostname and port range (e.g. host1.com:47500..47510, host2:47502..47508, etc) + | If port is 0 or not provided then default port will be used (depends on discovery SPI configuration)#[br] + | If port range is provided (e.g. host:port1..port2) the following should be considered:#[br] + ul: li port1 < port2 should be true + li Both port1 and port2 should be greater than 0 + ignite-form-group-add(ng-click='group.add = [{}]') + | Add new address + + .group-content(ng-if='#{addresses}.length') + -var field = 'edit' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var ipaddress = 'form[ngModelName].$error.ipaddress' + -var ipaddressPort = 'form[ngModelName].$error.ipaddressPort' + -var ipaddressPortRange = 'form[ngModelName].$error.ipaddressPortRange' + -var save = addresses + '[$index] = ' + field + + ignite-form-field(ng-repeat='model in #{addresses} track by $index' type='internal' name='Address') + .indexField + | {{ $index+1 }}) + +table-remove-button(addresses, 'Remove address') + + ignite-form-field-down(ng-if='!$last' ng-hide='field.edit' data-ng-model='model' data-models=addresses) + ignite-form-field-up(ng-if='!$first' ng-hide='field.edit' data-ng-model='model' data-models=addresses) + + span(ng-hide='field.edit') + a.labelFormField(ng-click='field.edit = true') {{ model }} + span(ng-if='field.edit' ng-init='#{field} = model') + +table-address-field(field, addresses, valid, save, false, true) + +table-save-button(valid, save, false) + +unique-feedback(unique, uniqueTip) + +ipaddress-feedback(ipaddress) + +ipaddress-port-feedback(ipaddressPort) + +ipaddress-port-range-feedback(ipaddressPortRange) + + .group-content(ng-repeat='field in group.add') + -var field = 'new' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var ipaddress = 'form[ngModelName].$error.ipaddress' + -var ipaddressPort = 'form[ngModelName].$error.ipaddressPort' + -var ipaddressPortRange = 'form[ngModelName].$error.ipaddressPortRange' + -var save = addresses + '.push(' + field + ')' + + ignite-form-field(type='internal' name='Address') + +table-address-field(field, addresses, valid, save, true, true) + +table-save-button(valid, save, true) + +unique-feedback(unique, uniqueTip) + +ipaddress-feedback(ipaddress) + +ipaddress-port-feedback(ipaddressPort) + +ipaddress-port-range-feedback(ipaddressPortRange) + + .group-content-empty(ng-if='!(#{addresses}.length) && !group.add.length') + | Not defined http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.directive.js new file mode 100644 index 0000000..c0624f0 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './s3.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryS3', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.jade new file mode 100644 index 0000000..d693709 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/s3.jade @@ -0,0 +1,25 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.S3' + +div + .details-row + +text('Bucket name:', model + '.bucketName', 'bucketName', 'true', 'Input bucket name', 'Bucket name for IP finder') + .details-row + label Note, AWS credentials will be generated as stub http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.directive.js new file mode 100644 index 0000000..6a5dce7 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './shared.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryShared', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.jade new file mode 100644 index 0000000..5ae808a --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/shared.jade @@ -0,0 +1,23 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.SharedFs' + +div + .details-row + +text('File path:', model + '.path', 'path', 'false', 'disco/tcp', 'Shared path') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.directive.js new file mode 100644 index 0000000..2bb3efd --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './vm.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryVm', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.jade new file mode 100644 index 0000000..cc39790 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/vm.jade @@ -0,0 +1,90 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.Vm' +-var addresses = model + '.addresses' +-var form = 'discoveryVmAddresses' + +.details-row + ignite-form-group(ng-model=addresses ng-form=form) + -var uniqueTip = 'Such IP address already exists!' + -var ipAddressTip = 'Invalid IP address!' + + ignite-form-field-label + | Addresses + ignite-form-group-tooltip + | Addresses may be represented as follows: + ul: li IP address (e.g. 127.0.0.1, 9.9.9.9, etc) + li IP address and port (e.g. 127.0.0.1:47500, 9.9.9.9:47501, etc) + li IP address and port range (e.g. 127.0.0.1:47500..47510, 9.9.9.9:47501..47504, etc) + li Hostname (e.g. host1.com, host2, etc) + li Hostname and port (e.g. host1.com:47500, host2:47502, etc) + li Hostname and port range (e.g. host1.com:47500..47510, host2:47502..47508, etc) + | If port is 0 or not provided then default port will be used (depends on discovery SPI configuration)#[br] + | If port range is provided (e.g. host:port1..port2) the following should be considered: + ul: li port1 < port2 should be true + li Both port1 and port2 should be greater than 0 + ignite-form-group-add(ng-click='group.add = [{}]') + | Add new address + + .group-content(ng-if='#{addresses}.length') + -var field = 'edit' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var ipaddress = 'form[ngModelName].$error.ipaddress' + -var ipaddressPort = 'form[ngModelName].$error.ipaddressPort' + -var ipaddressPortRange = 'form[ngModelName].$error.ipaddressPortRange' + -var save = addresses + '[$index] = ' + field + + ignite-form-field(ng-repeat='model in #{addresses} track by $index' type='internal' name='Address') + .indexField + | {{ $index+1 }}) + +table-remove-button(addresses, 'Remove address') + + ignite-form-field-down(ng-if='!$last' ng-hide='field.edit' data-ng-model='model' data-models=addresses) + ignite-form-field-up(ng-if='!$first' ng-hide='field.edit' data-ng-model='model' data-models=addresses) + + span(ng-hide='field.edit') + a.labelFormField(ng-click='field.edit = true') {{ model }} + span(ng-if='field.edit' ng-init='#{field} = model') + +table-address-field(field, addresses, valid, save, false, true) + +table-save-button(valid, save, false) + +unique-feedback(unique, uniqueTip) + +ipaddress-feedback(ipaddress) + +ipaddress-port-feedback(ipaddressPort) + +ipaddress-port-range-feedback(ipaddressPortRange) + + .group-content(ng-repeat='field in group.add') + -var field = 'new' + -var valid = 'form[ngModelName].$valid' + -var unique = 'form[ngModelName].$error.igniteUnique' + -var ipaddress = 'form[ngModelName].$error.ipaddress' + -var ipaddressPort = 'form[ngModelName].$error.ipaddressPort' + -var ipaddressPortRange = 'form[ngModelName].$error.ipaddressPortRange' + -var save = addresses + '.push(' + field + ')' + + ignite-form-field(type='internal' name='Address') + +table-address-field(field, addresses, valid, save, true, true) + +table-save-button(valid, save, true) + +unique-feedback(unique, uniqueTip) + +ipaddress-feedback(ipaddress) + +ipaddress-port-feedback(ipaddressPort) + +ipaddress-port-range-feedback(ipaddressPortRange) + + .group-content-empty(id='addresses' ng-if='!(#{addresses}.length) && !group.add.length') + | Not defined http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js new file mode 100644 index 0000000..42925a9 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './zookeeper.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryZookeeper', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade new file mode 100644 index 0000000..ad3dbea --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade @@ -0,0 +1,73 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.ZooKeeper' + +div + .details-row + +java-class('Curator:', model + '.curator', 'curator', 'true', 'false', + 'The Curator framework in use<br/>\ + By default generates curator of org.apache.curator. framework.imps.CuratorFrameworkImpl\ + class with configured connect string, retry policy, and default session and connection timeouts') + .details-row + +text('Connect string:', model + '.zkConnectionString', 'zkConnectionString', 'true', 'host:port[chroot][,host:port[chroot]]', + 'When "IGNITE_ZK_CONNECTION_STRING" system property is not configured this property will be used') + .details-row + +dropdown('Retry policy:', model + '.retryPolicy.kind', 'retryPolicy', 'true', 'Default', + '[\ + {value: "ExponentialBackoff", label: "Exponential backoff"},\ + {value: "BoundedExponentialBackoff", label: "Bounded exponential backoff"},\ + {value: "UntilElapsed", label: "Until elapsed"},\ + {value: "NTimes", label: "Max number of times"},\ + {value: "OneTime", label: "Only once"},\ + {value: "Forever", label: "Always allow retry"},\ + {value: "Custom", label: "Custom"},\ + {value: undefined, label: "Default"}\ + ]', + 'Available retry policies:\ + <ul>\ + <li>Exponential backoff - retries a set number of times with increasing sleep time between retries</li>\ + <li>Bounded exponential backoff - retries a set number of times with an increasing (up to a maximum bound) sleep time between retries</li>\ + <li>Until elapsed - retries until a given amount of time elapses</li>\ + <li>Max number of times - retries a max number of times</li>\ + <li>Only once - retries only once</li>\ + <li>Always allow retry - retries infinitely</li>\ + <li>Custom - custom retry policy implementation</li>\ + <li>Default - exponential backoff retry policy with configured base sleep time equal to 1000ms and max retry count equal to 10</li>\ + </ul>') + .details-row(ng-if='#{model}.retryPolicy.kind') + .panel-details + div(ng-switch='#{model}.retryPolicy.kind') + ignite-configuration-clusters-general-discovery-zookeeper-exponential(ng-switch-when='ExponentialBackoff') + ignite-configuration-clusters-general-discovery-zookeeper-bounded-exponential(ng-switch-when='BoundedExponentialBackoff') + ignite-configuration-clusters-general-discovery-zookeeper-until-elapsed(ng-switch-when='UntilElapsed') + ignite-configuration-clusters-general-discovery-zookeeper-n-times(ng-switch-when='NTimes') + ignite-configuration-clusters-general-discovery-zookeeper-one-time(ng-switch-when='OneTime') + ignite-configuration-clusters-general-discovery-zookeeper-forever(ng-switch-when='Forever') + ignite-configuration-clusters-general-discovery-zookeeper-custom(ng-switch-when='Custom') + .details-row + +text('Base path:', model + '.basePath', 'basePath', 'false', '/services', 'Base path for service registration') + .details-row + +text('Service name:', model + '.serviceName', 'serviceName', 'false', 'ignite', + 'Service name to use, as defined by Curator's ServiceDiscovery recipe<br/>\ + In physical ZooKeeper terms, it represents the node under basePath, under which services will be registered') + .details-row + +checkbox('Allow duplicate registrations', model + '.allowDuplicateRegistrations', 'allowDuplicateRegistrations', + 'Whether to register each node only once, or if duplicate registrations are allowed<br/>\ + Nodes will attempt to register themselves, plus those they know about<br/>\ + By default, duplicate registrations are not allowed, but you might want to set this property to <b>true</b> if you have multiple network interfaces or if you are facing troubles') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js new file mode 100644 index 0000000..68e338b --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './bounded-exponential-backoff.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperBoundedExponential', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade new file mode 100644 index 0000000..f8f78f8 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade @@ -0,0 +1,27 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.ZooKeeper.retryPolicy.BoundedExponentialBackoff' + +div + .details-row + +number('Base interval:', model + '.baseSleepTimeMs', 'baseSleepTimeMs', 'true', '1000', '0', 'Initial amount of time in ms to wait between retries') + .details-row + +number('Max interval:', model + '.maxSleepTimeMs', 'maxSleepTimeMs', 'true', 'Integer.MAX_VALUE', '0', 'Max time in ms to sleep on each retry') + .details-row + +number-min-max('Max retries:', model + '.maxRetries', 'maxRetries', 'true', '10', '0', '29', 'Max number of times to retry') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js new file mode 100644 index 0000000..dfd9b08 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './custom.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperCustom', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade new file mode 100644 index 0000000..8c55ad8 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade @@ -0,0 +1,22 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.ZooKeeper.retryPolicy.Custom' + +.details-row + +java-class('Class name:', model + '.className', 'className', 'true', 'true', 'Custom retry policy implementation class name') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js new file mode 100644 index 0000000..29c968c --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './exponential-backoff.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperExponential', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]]; http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade new file mode 100644 index 0000000..b039335 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade @@ -0,0 +1,27 @@ +//- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +include ../../../../../../../../../app/helpers/jade/mixins.jade + +-var model = 'backupItem.discovery.ZooKeeper.retryPolicy.ExponentialBackoff' + +div + .details-row + +number('Base interval:', model + '.baseSleepTimeMs', 'baseSleepTimeMs', 'true', '1000', '0', 'Initial amount of time in ms to wait between retries') + .details-row + +number-min-max('Max retries:', model + '.maxRetries', 'maxRetries', 'true', '10', '0', '29', 'Max number of times to retry') + .details-row + +number('Max interval:', model + '.maxSleepMs', 'maxSleepMs', 'true', 'Integer.MAX_VALUE', '0', 'Max time in ms to sleep on each retry') http://git-wip-us.apache.org/repos/asf/ignite/blob/eb5ac0ae/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js ---------------------------------------------------------------------- diff --git a/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js new file mode 100644 index 0000000..ec39f66 --- /dev/null +++ b/modules/web-console/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import template from './forever.jade!'; + +export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperForever', [() => { + return { + scope: true, + restrict: 'E', + template, + replace: true + }; +}]];
