You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2016/03/04 10:31:25 UTC
[30/50] ignite git commit: IGNITE-2724 WIP support for ZooKeeper.
IGNITE-2724 WIP support for ZooKeeper.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/37bc9774
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/37bc9774
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/37bc9774
Branch: refs/heads/ignite-843
Commit: 37bc97741db7a08e7706aa529406017c01bba93c
Parents: 711086a
Author: vsisko <vs...@gridgain.com>
Authored: Thu Feb 25 19:20:37 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Thu Feb 25 19:20:37 2016 +0700
----------------------------------------------------------------------
.../control-center-web/src/main/js/.eslintrc | 2 +-
.../app/modules/states/configuration.state.js | 17 +++
.../states/configuration/clusters/general.jade | 2 +
.../general/discovery/zookeeper.directive.js | 27 +++++
.../clusters/general/discovery/zookeeper.jade | 113 +++++++++++++++++++
.../bounded-exponential-backoff.directive.js | 27 +++++
.../bounded-exponential-backoff.jade | 57 ++++++++++
.../zookeeper/retrypolicy/custom.directive.js | 27 +++++
.../discovery/zookeeper/retrypolicy/custom.jade | 30 +++++
.../exponential-backoff.directive.js | 27 +++++
.../retrypolicy/exponential-backoff.jade | 56 +++++++++
.../zookeeper/retrypolicy/forever.directive.js | 27 +++++
.../zookeeper/retrypolicy/forever.jade | 30 +++++
.../zookeeper/retrypolicy/n-times.directive.js | 27 +++++
.../zookeeper/retrypolicy/n-times.jade | 43 +++++++
.../zookeeper/retrypolicy/one-time.directive.js | 27 +++++
.../zookeeper/retrypolicy/one-time.jade | 31 +++++
.../retrypolicy/until-elapsed.directive.js | 27 +++++
.../zookeeper/retrypolicy/until-elapsed.jade | 43 +++++++
.../main/js/controllers/clusters-controller.js | 7 +-
.../main/js/helpers/generator/generator-java.js | 87 ++++++++++++++
.../main/js/helpers/generator/generator-pom.js | 3 +
.../main/js/helpers/generator/generator-xml.js | 102 +++++++++++++++++
.../src/main/js/serve/mongo.js | 40 ++++++-
24 files changed, 874 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/.eslintrc
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/.eslintrc b/modules/control-center-web/src/main/js/.eslintrc
index 000de6c..0341ed7 100644
--- a/modules/control-center-web/src/main/js/.eslintrc
+++ b/modules/control-center-web/src/main/js/.eslintrc
@@ -57,7 +57,7 @@ rules:
generator-star-spacing: 0
guard-for-in: 1
handle-callback-err: 0
- id-length: [2, {"min": 1, "max": 40}]
+ id-length: [2, {"min": 1, "max": 50}]
indent: [2, 4, {"SwitchCase": 1}]
key-spacing: [2, { "beforeColon": false, "afterColon": true }]
lines-around-comment: 0
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
index 57eb361..edd7f9d 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration.state.js
@@ -46,6 +46,15 @@ import generalDiscoveryMulticast from './configuration/clusters/general/discover
import generalDiscoveryS3 from './configuration/clusters/general/discovery/s3.directive';
import generalDiscoveryShared from './configuration/clusters/general/discovery/shared.directive';
import generalDiscoveryVm from './configuration/clusters/general/discovery/vm.directive';
+import generalDiscoveryZookeeper from './configuration/clusters/general/discovery/zookeeper.directive';
+
+import generalDiscoveryZookeeperRetryExponential from './configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive';
+import generalDiscoveryZookeeperRetryBoundedExponential from './configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive';
+import generalDiscoveryZookeeperRetryUntilElapsed from './configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive';
+import generalDiscoveryZookeeperRetryNTimes from './configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive';
+import generalDiscoveryZookeeperRetryOneTime from './configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive';
+import generalDiscoveryZookeeperRetryForever from './configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive';
+import generalDiscoveryZookeeperRetryCustom from './configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive';
angular
.module('ignite-console.states.configuration', [
@@ -76,6 +85,14 @@ angular
.directive(...generalDiscoveryS3)
.directive(...generalDiscoveryShared)
.directive(...generalDiscoveryVm)
+.directive(...generalDiscoveryZookeeper)
+.directive(...generalDiscoveryZookeeperRetryExponential)
+.directive(...generalDiscoveryZookeeperRetryBoundedExponential)
+.directive(...generalDiscoveryZookeeperRetryUntilElapsed)
+.directive(...generalDiscoveryZookeeperRetryNTimes)
+.directive(...generalDiscoveryZookeeperRetryOneTime)
+.directive(...generalDiscoveryZookeeperRetryForever)
+.directive(...generalDiscoveryZookeeperRetryCustom)
// Services.
.service(...ConfigurationSummaryResource)
.config(['$stateProvider', function($stateProvider) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
index 2f78db2..c750119 100644
--- a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general.jade
@@ -93,6 +93,8 @@ form.panel.panel-default(name='general' novalidate)
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"')
ignite-ui-ace-tabs.col-sm-6
.preview-panel(ng-init='mode = false')
.preview-legend
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.directive.js
new file mode 100644
index 0000000..42925a9
--- /dev/null
+++ b/modules/control-center-web/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/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
new file mode 100644
index 0000000..d99a7a7
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper.jade
@@ -0,0 +1,113 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper';
+
+div
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Curator:
+ ignite-form-field-tooltip
+ | The Curator framework in use
+ ignite-form-field-java-class(
+ data-id='curator'
+ data-name='curator'
+ data-ng-model='#{model}.curator'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Connection string:
+ ignite-form-field-tooltip
+ | This property will be used when "IGNITE_ZK_CONNECTION_STRING" system property is not configured
+ ignite-form-field-input-text(
+ data-id='zkConnectionString'
+ data-name='zkConnectionString'
+ data-ng-model='#{model}.zkConnectionString'
+ data-placeholder='host:port[chroot][,host:port[chroot]]'
+ data-ng-required='true'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Retry policy:
+ ignite-form-field-tooltip
+ | Retry policy
+ ignite-form-field-dropdown(
+ data-id='retryPolicy'
+ data-name='retryPolicy'
+ data-options='[\
+ {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 allowsRetry"},\
+ {value: "Custom", label: "Custom"},\
+ {value: undefined, label: "Default"}\
+ ]'
+ data-ng-model='#{model}.retryPolicy.kind'
+ data-multiple='false'
+ )
+ .details-row(ng-if='#{model}.retryPolicy.kind')
+ .col-sm-12.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
+ ignite-form-field
+ ignite-form-field-label
+ | Base path:
+ ignite-form-field-tooltip
+ | Base path for service registration
+ ignite-form-field-input-text(
+ data-id='basePath'
+ data-name='basePath'
+ data-ng-model='#{model}.basePath'
+ data-placeholder='/services'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Service name:
+ ignite-form-field-tooltip
+ | 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
+ ignite-form-field-input-text(
+ data-id='serviceName'
+ data-name='serviceName'
+ data-ng-model='#{model}.serviceName'
+ data-placeholder='ignite'
+ )
+ .details-row
+ ignite-form-field.checkbox
+ ignite-form-field-input-checkbox(
+ data-id='allowDuplicateRegistrations'
+ data-name='allowDuplicateRegistrations'
+ data-ng-model='#{model}.allowDuplicateRegistrations'
+ )
+ | Allow duplicate registrations
+ ignite-form-field-tooltip
+ | 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] if you have multiple network interfaces or if you are facing troubles
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.directive.js b/modules/control-center-web/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/control-center-web/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/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
new file mode 100644
index 0000000..06eb790
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/bounded-exponential-backoff.jade
@@ -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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.BoundedExponentialBackoff';
+
+div
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Base Sleep Time:
+ ignite-form-field-tooltip
+ | Initial amount of time to wait between retries
+ ignite-form-field-input-number(
+ data-id='baseSleepTimeMs'
+ data-name='baseSleepTimeMs'
+ data-ng-model='#{model}.baseSleepTimeMs'
+ data-ng-required='true'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Max sleep time:
+ ignite-form-field-tooltip
+ | Max time in ms to sleep on each retry
+ ignite-form-field-input-number(
+ data-id='maxSleepTimeMs'
+ data-name='maxSleepTimeMs'
+ data-ng-model='#{model}.maxSleepTimeMs'
+ data-placeholder='Integer.MAX_VALUE'
+ data-ng-required='true'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Max retries:
+ ignite-form-field-tooltip
+ | Max number of times to retry
+ ignite-form-field-input-number(
+ data-id='maxRetries'
+ data-name='maxRetries'
+ data-ng-model='#{model}.maxRetries'
+ data-ng-required='true'
+ data-max='29'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.directive.js b/modules/control-center-web/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/control-center-web/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/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
new file mode 100644
index 0000000..e5663a8
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/custom.jade
@@ -0,0 +1,30 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.Custom';
+
+.details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Class name:
+ ignite-form-field-tooltip
+ | Custom retry policy implementation class name
+ ignite-form-field-java-class(
+ data-id='className'
+ data-name='className'
+ data-ng-model='#{model}.className'
+ data-required='true'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.directive.js b/modules/control-center-web/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/control-center-web/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/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
new file mode 100644
index 0000000..79bcfa1
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/exponential-backoff.jade
@@ -0,0 +1,56 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.ExponentialBackoff';
+
+div
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Base sleep time:
+ ignite-form-field-tooltip
+ | Initial amount of time to wait between retries
+ ignite-form-field-input-number(
+ data-id='baseSleepTimeMs'
+ data-name='baseSleepTimeMs'
+ data-ng-model='#{model}.baseSleepTimeMs'
+ data-ng-required='true'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Max retries:
+ ignite-form-field-tooltip
+ | Max number of times to retry
+ ignite-form-field-input-number(
+ data-id='maxRetries'
+ data-name='maxRetries'
+ data-ng-model='#{model}.maxRetries'
+ data-ng-required='true'
+ data-max='29'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Max sleep time:
+ ignite-form-field-tooltip
+ | Max time in ms to sleep on each retry
+ ignite-form-field-input-number(
+ data-id='maxSleepMs'
+ data-name='maxSleepMs'
+ data-ng-model='#{model}.maxSleepMs'
+ data-placeholder='Integer.MAX_VALUE'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.directive.js b/modules/control-center-web/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/control-center-web/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
+ };
+}]];
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
new file mode 100644
index 0000000..705fa2a
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/forever.jade
@@ -0,0 +1,30 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.Forever';
+
+.details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Interval:
+ ignite-form-field-tooltip
+ | Time in ms between retry attempts
+ ignite-form-field-input-number(
+ data-id='retryIntervalMs'
+ data-name='retryIntervalMs'
+ data-ng-model='#{model}.retryIntervalMs'
+ data-ng-required='true'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.directive.js
new file mode 100644
index 0000000..ce83da4
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.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 './n-times.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperNTimes', [() => {
+ return {
+ scope: true,
+ restrict: 'E',
+ template,
+ replace: true
+ };
+}]];
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
new file mode 100644
index 0000000..0c44709
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/n-times.jade
@@ -0,0 +1,43 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.NTimes';
+
+div
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Retries:
+ ignite-form-field-tooltip
+ | Number of times to retry
+ ignite-form-field-input-number(
+ data-id='n'
+ data-name='n'
+ data-ng-model='#{model}.n'
+ data-ng-required='true'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Interval:
+ ignite-form-field-tooltip
+ | Time in ms between retry attempts
+ ignite-form-field-input-number(
+ data-id='sleepMsBetweenRetries'
+ data-name='sleepMsBetweenRetries'
+ data-ng-model='#{model}.sleepMsBetweenRetries'
+ data-ng-required='true'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.directive.js
new file mode 100644
index 0000000..7329cc2
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.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 './one-time.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperOneTime', [() => {
+ return {
+ scope: true,
+ restrict: 'E',
+ template,
+ replace: true
+ };
+}]];
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
new file mode 100644
index 0000000..24b3514
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/one-time.jade
@@ -0,0 +1,31 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.OneTime';
+
+div
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Interval:
+ ignite-form-field-tooltip
+ | Time in ms to retry attempt
+ ignite-form-field-input-number(
+ data-id='sleepMsBetweenRetry'
+ data-name='sleepMsBetweenRetry'
+ data-ng-model='#{model}.sleepMsBetweenRetry'
+ data-ng-required='true'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.directive.js
new file mode 100644
index 0000000..8997159
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.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 './until-elapsed.jade!';
+
+export default ['igniteConfigurationClustersGeneralDiscoveryZookeeperUntilElapsed', [() => {
+ return {
+ scope: true,
+ restrict: 'E',
+ template,
+ replace: true
+ };
+}]];
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
new file mode 100644
index 0000000..c4e701e
--- /dev/null
+++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/clusters/general/discovery/zookeeper/retrypolicy/until-elapsed.jade
@@ -0,0 +1,43 @@
+//-
+ 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.
+
+- var model = 'backupItem.discovery.ZooKeeper.retryPolicy.UntilElapsed';
+
+div
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Total time:
+ ignite-form-field-tooltip
+ | Total time in ms for execution of retry attempt
+ ignite-form-field-input-number(
+ data-id='maxElapsedTimeMs'
+ data-name='maxElapsedTimeMs'
+ data-ng-model='#{model}.maxElapsedTimeMs'
+ data-ng-required='true'
+ )
+ .details-row
+ ignite-form-field
+ ignite-form-field-label
+ | Interval:
+ ignite-form-field-tooltip
+ | Time in ms between retry attempts
+ ignite-form-field-input-number(
+ data-id='sleepMsBetweenRetries'
+ data-name='sleepMsBetweenRetries'
+ data-ng-model='#{model}.sleepMsBetweenRetries'
+ data-ng-required='true'
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/controllers/clusters-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
index 8f44788..7e49f81 100644
--- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js
@@ -65,10 +65,11 @@ consoleModule.controller('clustersController', function ($http, $timeout, $scope
{value: 'Vm', label: 'static IPs'},
{value: 'Multicast', label: 'multicast'},
{value: 'S3', label: 'AWS S3'},
- {value: 'Cloud', label: 'apache jclouds'},
- {value: 'GoogleStorage', label: 'google cloud storage'},
+ {value: 'Cloud', label: 'Apache jclouds'},
+ {value: 'GoogleStorage', label: 'Google cloud storage'},
{value: 'Jdbc', label: 'JDBC'},
- {value: 'SharedFs', label: 'shared filesystem'}
+ {value: 'SharedFs', label: 'shared filesystem'},
+ {value: 'ZooKeeper', label: 'Apache ZooKeeper'}
];
$scope.swapSpaceSpis = [
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
index 32023b9..732fe51 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-java.js
@@ -62,6 +62,18 @@ $generatorJava.setterName = function (propName, setterName) {
return setterName ? setterName : $commonUtils.toJavaName('set', propName);
};
+// Add constructor argument
+$generatorJava.constructorArg = function (obj, propName, notFirst, opt) {
+ var v = obj ? obj[propName] : undefined;
+
+ if ($commonUtils.isDefinedAndNotEmpty(v))
+ return (notFirst ? ', ' : '') + v;
+ else if (!opt)
+ return notFirst ? ', null' : 'null';
+ else
+ return '';
+};
+
/**
* Add variable declaration.
*
@@ -525,6 +537,81 @@ $generatorJava.clusterGeneral = function (cluster, clientNearCfg, res) {
break;
+ case 'ZooKeeper':
+ var finderVar = 'ipFinder';
+
+ $generatorJava.declareVariable(res, 'ipFinder', 'org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder');
+
+ if (d.ZooKeeper) {
+ if ($commonUtils.isDefinedAndNotEmpty(d.ZooKeeper.curator))
+ res.line(finderVar + '.setCurator(new ' + res.importClass(d.ZooKeeper.curator) + '());');
+
+ $generatorJava.property(res, finderVar, d.ZooKeeper, 'zkConnectionString');
+
+ if (d.ZooKeeper.retryPolicy && d.ZooKeeper.retryPolicy.kind) {
+ var kind = d.ZooKeeper.retryPolicy.kind;
+ var retryPolicy = d.ZooKeeper.retryPolicy[kind];
+
+ switch (kind) {
+ case 'ExponentialBackoff':
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.ExponentialBackoffRetry') + '(' +
+ $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs') +
+ $generatorJava.constructorArg(retryPolicy, 'maxRetries', true) +
+ $generatorJava.constructorArg(retryPolicy, 'maxSleepMs', true, true) + '));');
+
+ break;
+
+ case 'BoundedExponentialBackoff':
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.BoundedExponentialBackoffRetry') + '(' +
+ $generatorJava.constructorArg(retryPolicy, 'baseSleepTimeMs') +
+ $generatorJava.constructorArg(retryPolicy, 'maxSleepTimeMs', true) +
+ $generatorJava.constructorArg(retryPolicy, 'maxRetries', true) + '));');
+
+ break;
+
+ case 'UntilElapsed':
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryUntilElapsed') + '(' +
+ $generatorJava.constructorArg(retryPolicy, 'maxElapsedTimeMs') +
+ $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', true) + '));');
+
+ break;
+
+ case 'NTimes':
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryNTimes') + '(' +
+ $generatorJava.constructorArg(retryPolicy, 'n') +
+ $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetries', true) + '));');
+
+ break;
+
+ case 'OneTime':
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryOneTime') + '(' +
+ $generatorJava.constructorArg(retryPolicy, 'sleepMsBetweenRetry') + '));');
+
+ break;
+
+ case 'Forever':
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass('org.apache.curator.retry.RetryForever') + '(' +
+ $generatorJava.constructorArg(retryPolicy, 'retryIntervalMs') + '));');
+
+ break;
+
+ case 'Custom':
+ if (retryPolicy && $commonUtils.isDefinedAndNotEmpty(retryPolicy.className))
+ res.line(finderVar + '.setRetryPolicy(new ' + res.importClass(retryPolicy.className) + '());');
+
+ break;
+ }
+ }
+
+ $generatorJava.property(res, finderVar, d.ZooKeeper, 'basePath', null, null, '/services');
+ $generatorJava.property(res, finderVar, d.ZooKeeper, 'serviceName', null, null, 'ignite');
+ $generatorJava.property(res, finderVar, d.ZooKeeper, 'allowDuplicateRegistrations', null, null, false);
+ }
+
+ res.line('discovery.setIpFinder(ipFinder);');
+
+ break;
+
default:
res.line('Unknown discovery kind: ' + d.kind);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js b/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
index 804b607..f7bcf92 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-pom.js
@@ -176,6 +176,9 @@ $generatorPom.pom = function (cluster, igniteVersion, mvnRepositories, res) {
addDependency('org.apache.ignite', 'ignite-indexing', igniteVersion);
addDependency('org.apache.ignite', 'ignite-rest-http', igniteVersion);
+ if (cluster.discovery.kind === 'ZooKeeper')
+ addDependency('org.apache.ignite', 'ignite-zookeeper', igniteVersion);
+
if (_.find(cluster.igfss, function (igfs) { return igfs.secondaryFileSystemEnabled; }))
addDependency('org.apache.ignite', 'ignite-hadoop', igniteVersion);
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
index 9fab39b..2d2c5c8 100644
--- a/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
+++ b/modules/control-center-web/src/main/js/helpers/generator/generator-xml.js
@@ -26,6 +26,19 @@ $generatorXml.escape = function (s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
};
+// Add constructor argument
+$generatorXml.constructorArg = function (res, ix, obj, propName, opt) {
+ var v = obj ? obj[propName] : undefined;
+
+ if ($commonUtils.isDefinedAndNotEmpty(v))
+ res.line('<constructor-arg ' + (ix >= 0 ? 'index="' + ix + '" ' : '') + 'value="' + v + '"/>');
+ else if (!opt) {
+ res.startBlock('<constructor-arg ' + (ix >= 0 ? 'index="' + ix + '"' : '') + '>');
+ res.line('<null/>');
+ res.endBlock('</constructor-arg>');
+ }
+};
+
// Add XML element.
$generatorXml.element = function (res, tag, attr1, val1, attr2, val2) {
var elem = '<' + tag;
@@ -365,6 +378,95 @@ $generatorXml.clusterGeneral = function (cluster, res) {
break;
+ case 'ZooKeeper':
+ res.startBlock('<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder">');
+
+ if (d.ZooKeeper) {
+ if ($commonUtils.isDefinedAndNotEmpty(d.ZooKeeper.curator)) {
+ res.startBlock('<property name="curator">');
+ res.line('<bean class="' + d.ZooKeeper.curator + '"/>');
+ res.endBlock('</property>');
+ }
+
+ $generatorXml.property(res, d.ZooKeeper, 'zkConnectionString');
+
+ if (d.ZooKeeper.retryPolicy && d.ZooKeeper.retryPolicy.kind) {
+ var kind = d.ZooKeeper.retryPolicy.kind;
+ var retryPolicy = d.ZooKeeper.retryPolicy[kind];
+ var customClassDefined = retryPolicy && $commonUtils.isDefinedAndNotEmpty(retryPolicy.className);
+
+ if (kind !== 'Custom' || customClassDefined)
+ res.startBlock('<property name="retryPolicy">');
+
+ switch (kind) {
+ case 'ExponentialBackoff':
+ res.startBlock('<bean class="org.apache.curator.retry.ExponentialBackoffRetry">');
+ $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs');
+ $generatorXml.constructorArg(res, 1, retryPolicy, 'maxRetries');
+ $generatorXml.constructorArg(res, 2, retryPolicy, 'maxSleepMs', true);
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'BoundedExponentialBackoff':
+ res.startBlock('<bean class="org.apache.curator.retry.BoundedExponentialBackoffRetry">');
+ $generatorXml.constructorArg(res, 0, retryPolicy, 'baseSleepTimeMs');
+ $generatorXml.constructorArg(res, 1, retryPolicy, 'maxSleepTimeMs');
+ $generatorXml.constructorArg(res, 2, retryPolicy, 'maxRetries');
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'UntilElapsed':
+ res.startBlock('<bean class="org.apache.curator.retry.RetryUntilElapsed">');
+ $generatorXml.constructorArg(res, 0, retryPolicy, 'maxElapsedTimeMs');
+ $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries');
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'NTimes':
+ res.startBlock('<bean class="org.apache.curator.retry.RetryNTimes">');
+ $generatorXml.constructorArg(res, 0, retryPolicy, 'n');
+ $generatorXml.constructorArg(res, 1, retryPolicy, 'sleepMsBetweenRetries');
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'OneTime':
+ res.startBlock('<bean class="org.apache.curator.retry.RetryOneTime">');
+ $generatorXml.constructorArg(res, 0, retryPolicy, 'sleepMsBetweenRetry');
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'Forever':
+ res.startBlock('<bean class="org.apache.curator.retry.RetryForever">');
+ $generatorXml.constructorArg(res, 0, retryPolicy, 'retryIntervalMs');
+ res.endBlock('</bean>');
+
+ break;
+
+ case 'Custom':
+ if (customClassDefined)
+ res.line('<bean class="' + retryPolicy.className + '"/>');
+
+ break;
+ }
+
+ if (kind !== 'Custom' || customClassDefined)
+ res.endBlock('</property>');
+ }
+
+ $generatorXml.property(res, d.ZooKeeper, 'basePath', null, '/services');
+ $generatorXml.property(res, d.ZooKeeper, 'serviceName', null, 'ignite');
+ $generatorXml.property(res, d.ZooKeeper, 'allowDuplicateRegistrations', null, false);
+ }
+
+ res.endBlock('</bean>');
+
+ break;
+
default:
res.line('Unknown discovery kind: ' + d.kind);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/37bc9774/modules/control-center-web/src/main/js/serve/mongo.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/mongo.js b/modules/control-center-web/src/main/js/serve/mongo.js
index cfb0040..46a9629 100644
--- a/modules/control-center-web/src/main/js/serve/mongo.js
+++ b/modules/control-center-web/src/main/js/serve/mongo.js
@@ -331,7 +331,7 @@ module.exports.factory = function(deepPopulatePlugin, passportMongo, settings, p
authenticator: String,
forceServerMode: Boolean,
clientReconnectDisabled: Boolean,
- kind: {type: String, enum: ['Vm', 'Multicast', 'S3', 'Cloud', 'GoogleStorage', 'Jdbc', 'SharedFs']},
+ kind: {type: String, enum: ['Vm', 'Multicast', 'S3', 'Cloud', 'GoogleStorage', 'Jdbc', 'SharedFs', 'ZooKeeper']},
Vm: {
addresses: [String]
},
@@ -366,6 +366,44 @@ module.exports.factory = function(deepPopulatePlugin, passportMongo, settings, p
},
SharedFs: {
path: String
+ },
+ ZooKeeper: {
+ curator: String,
+ zkConnectionString: String,
+ retryPolicy: {
+ kind: {type: String, enum: ['ExponentialBackoff', 'BoundedExponentialBackoff', 'UntilElapsed',
+ 'NTimes', 'OneTime', 'Forever', 'Custom']},
+ ExponentialBackoff: {
+ baseSleepTimeMs: Number,
+ maxRetries: Number,
+ maxSleepMs: Number
+ },
+ BoundedExponentialBackoff: {
+ baseSleepTimeMs: Number,
+ maxSleepTimeMs: Number,
+ maxRetries: Number
+ },
+ UntilElapsed: {
+ maxElapsedTimeMs: Number,
+ sleepMsBetweenRetries: Number
+ },
+ NTimes: {
+ n: Number,
+ sleepMsBetweenRetries: Number
+ },
+ OneTime: {
+ sleepMsBetweenRetry: Number
+ },
+ Forever: {
+ retryIntervalMs: Number
+ },
+ Custom: {
+ className: String
+ }
+ },
+ basePath: String,
+ serviceName: String,
+ allowDuplicateRegistrations: Boolean
}
},
atomicConfiguration: {