You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2019/02/25 16:17:22 UTC
[ignite] branch master updated: IGNITE-11096 Web Agent: Implemented
support for "--disable-demo".
This is an automated email from the ASF dual-hosted git repository.
akuznetsov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 71ae9c0 IGNITE-11096 Web Agent: Implemented support for "--disable-demo".
71ae9c0 is described below
commit 71ae9c07627b8a677c49d70650f28eb05cec2d4d
Author: Vasiliy Sisko <vs...@gridgain.com>
AuthorDate: Mon Feb 25 23:16:32 2019 +0700
IGNITE-11096 Web Agent: Implemented support for "--disable-demo".
---
modules/web-console/backend/app/agentSocket.js | 23 ----------------
modules/web-console/backend/app/agentsHandler.js | 13 +++++++--
modules/web-console/backend/app/browsersHandler.js | 2 +-
.../components/demo-mode-button/controller.ts | 31 +++++++++++++++-------
.../app/modules/agent/AgentManager.service.js | 8 +++---
.../console/agent/handlers/RestListener.java | 3 +++
6 files changed, 41 insertions(+), 39 deletions(-)
diff --git a/modules/web-console/backend/app/agentSocket.js b/modules/web-console/backend/app/agentSocket.js
index dfebda0..0df5c5e 100644
--- a/modules/web-console/backend/app/agentSocket.js
+++ b/modules/web-console/backend/app/agentSocket.js
@@ -113,29 +113,6 @@ module.exports.factory = function() {
}
/**
- * @param {String} token
- * @param {Array.<Socket>} browserSockets
- */
- runDemoCluster(token, browserSockets) {
- this.emitEvent('demo:broadcast:start')
- .then(() => {
- this.demo.tokens.push(token);
- this.demo.browserSockets.push(...browserSockets);
-
- this.socket.on('demo:topology', (res) => {
- try {
- const top = this.restResultParse(res);
-
- _.forEach(this.demo.browserSockets, (sock) => sock.emit('topology', top));
- }
- catch (err) {
- _.forEach(this.demo.browserSockets, (sock) => sock.emit('topology:err', err));
- }
- });
- });
- }
-
- /**
* @param {Socket} browserSocket
*/
attachToDemoCluster(browserSocket) {
diff --git a/modules/web-console/backend/app/agentsHandler.js b/modules/web-console/backend/app/agentsHandler.js
index fd55ac3..f6e3da9 100644
--- a/modules/web-console/backend/app/agentsHandler.js
+++ b/modules/web-console/backend/app/agentsHandler.js
@@ -347,7 +347,7 @@ module.exports.factory = function(settings, mongo, AgentSocket) {
cb(null, activeTokens);
- return this.onConnect(sock, accounts, activeTokens, disableDemo);
+ return this.onConnect(sock, accounts, activeTokens, !disableDemo);
})
// TODO IGNITE-1379 send error to web master.
.catch(() => cb(`Invalid token(s): ${tokens.join(',')}. Please reload agent archive or check settings`));
@@ -368,7 +368,16 @@ module.exports.factory = function(settings, mongo, AgentSocket) {
if (_.isEmpty(socks))
return Promise.reject(new Error('Failed to find connected agent for this account'));
- if (demo || _.isNil(clusterId))
+ if (demo) {
+ const sock = _.find(socks, (sock) => sock.demo.enabled);
+
+ if (sock)
+ return Promise.resolve(sock);
+
+ return Promise.reject(new Error('Demo mode disabled by administrator'));
+ }
+
+ if (_.isNil(clusterId))
return Promise.resolve(_.head(socks));
const sock = _.find(socks, (agentSock) => _.get(agentSock, 'cluster.id') === clusterId);
diff --git a/modules/web-console/backend/app/browsersHandler.js b/modules/web-console/backend/app/browsersHandler.js
index 919b1f0..1bfba89 100644
--- a/modules/web-console/backend/app/browsersHandler.js
+++ b/modules/web-console/backend/app/browsersHandler.js
@@ -111,7 +111,7 @@ module.exports = {
.then((agentSocks) => {
const stat = _.reduce(agentSocks, (acc, agentSock) => {
acc.count += 1;
- acc.hasDemo |= _.get(agentSock, 'demo.enabled');
+ acc.hasDemo = acc.hasDemo || _.get(agentSock, 'demo.enabled');
if (agentSock.cluster)
acc.clusters.push(agentSock.cluster);
diff --git a/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
index 1a1bd1e..23280d9 100644
--- a/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
+++ b/modules/web-console/frontend/app/components/web-console-header/components/demo-mode-button/controller.ts
@@ -19,12 +19,15 @@ import {StateService} from '@uirouter/angularjs';
import {default as LegacyConfirmFactory} from 'app/services/Confirm.service';
export default class DemoModeButton {
- static $inject = ['$rootScope', '$state', '$window', 'IgniteConfirm'];
+ static $inject = ['$rootScope', '$state', '$window', 'IgniteConfirm', 'AgentManager', 'IgniteMessages'];
+
constructor(
private $root: ng.IRootScopeService,
private $state: StateService,
private $window: ng.IWindowService,
- private Confirm: ReturnType<typeof LegacyConfirmFactory>
+ private Confirm: ReturnType<typeof LegacyConfirmFactory>,
+ private agentMgr: AgentManager,
+ private Messages
) {}
private _openTab(stateName: string) {
@@ -32,15 +35,23 @@ export default class DemoModeButton {
}
startDemo() {
- if (!this.$root.user.demoCreated)
- return this._openTab('demo.reset');
+ const connectionState = this.agentMgr.connectionSbj.getValue();
+ const disconnected = _.get(connectionState, 'state') === 'AGENT_DISCONNECTED';
+ const demoEnabled = _.get(connectionState, 'hasDemo');
+
+ if (disconnected || demoEnabled || _.isNil(demoEnabled)) {
+ if (!this.$root.user.demoCreated)
+ return this._openTab('demo.reset');
- this.Confirm.confirm('Would you like to continue with previous demo session?', true, false)
- .then((resume) => {
- if (resume)
- return this._openTab('demo.resume');
+ this.Confirm.confirm('Would you like to continue with previous demo session?', true, false)
+ .then((resume) => {
+ if (resume)
+ return this._openTab('demo.resume');
- this._openTab('demo.reset');
- });
+ this._openTab('demo.reset');
+ });
+ }
+ else
+ this.Messages.showError('Demo mode disabled by administrator');
}
}
diff --git a/modules/web-console/frontend/app/modules/agent/AgentManager.service.js b/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
index 23953cb..0c698c1 100644
--- a/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
+++ b/modules/web-console/frontend/app/modules/agent/AgentManager.service.js
@@ -79,7 +79,7 @@ class ConnectionState {
return cluster;
}
- update(demo, count, clusters) {
+ update(demo, count, clusters, hasDemo) {
this.clusters = clusters;
if (_.isEmpty(this.clusters))
@@ -91,6 +91,8 @@ class ConnectionState {
if (this.cluster)
this.cluster.connected = !!_.find(clusters, {id: this.cluster.id});
+ this.hasDemo = hasDemo;
+
if (count === 0)
this.state = State.AGENT_DISCONNECTED;
else if (demo || _.get(this.cluster, 'connected'))
@@ -240,10 +242,10 @@ export default class AgentManager {
this.socket.on('disconnect', onDisconnect);
- this.socket.on('agents:stat', ({clusters, count}) => {
+ this.socket.on('agents:stat', ({clusters, count, hasDemo}) => {
const conn = this.connectionSbj.getValue();
- conn.update(this.isDemoMode(), count, clusters);
+ conn.update(this.isDemoMode(), count, clusters, hasDemo);
this.connectionSbj.next(conn);
});
diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/RestListener.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/RestListener.java
index 0db8904..89fac44 100644
--- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/RestListener.java
+++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/RestListener.java
@@ -77,6 +77,9 @@ public class RestListener extends AbstractListener {
try {
if (demo) {
if (AgentClusterDemo.getDemoUrl() == null) {
+ if (cfg.disableDemo())
+ return RestResult.fail(404, "Demo mode disabled by administrator.");
+
AgentClusterDemo.tryStart().await();
if (AgentClusterDemo.getDemoUrl() == null)