You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2014/04/18 14:34:52 UTC

git commit: AMBARI-5506. Flume agents should have actions to stop/start each agent. (akovalenko)

Repository: ambari
Updated Branches:
  refs/heads/trunk c67e883e6 -> 68147d53c


AMBARI-5506. Flume agents should have actions to stop/start each agent. (akovalenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/68147d53
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/68147d53
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/68147d53

Branch: refs/heads/trunk
Commit: 68147d53c7a08afc75f79e8f26b5f595ece444f4
Parents: c67e883
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Fri Apr 18 15:31:56 2014 +0300
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Fri Apr 18 15:31:56 2014 +0300

----------------------------------------------------------------------
 .../controllers/main/service/info/summary.js    |  68 +++++++++++++
 ambari-web/app/messages.js                      |   4 +
 ambari-web/app/styles/application.less          |  14 ++-
 .../app/templates/main/service/info/summary.hbs |   6 +-
 .../templates/main/service/services/flume.hbs   | 102 +++++++++++--------
 ambari-web/app/utils/ajax/ajax.js               |  23 +++++
 .../app/views/main/service/services/flume.js    |  26 ++++-
 7 files changed, 194 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/controllers/main/service/info/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/summary.js b/ambari-web/app/controllers/main/service/info/summary.js
index 0fb5a01..08150cb 100644
--- a/ambari-web/app/controllers/main/service/info/summary.js
+++ b/ambari-web/app/controllers/main/service/info/summary.js
@@ -20,6 +20,74 @@ var App = require('app');
 App.MainServiceInfoSummaryController = Em.Controller.extend({
   name: 'mainServiceInfoSummaryController',
 
+  selectedFlumeAgent: null,
+
+  /**
+   * Send start command for selected Flume Agent
+   * @method startFlumeAgent
+   */
+  startFlumeAgent: function () {
+    var selectedFlumeAgent = this.get('selectedFlumeAgent');
+    if (selectedFlumeAgent && selectedFlumeAgent.get('status') === 'INSTALLED') {
+      var self = this;
+      App.showConfirmationPopup(function () {
+        var command = 'START';
+        var context = Em.I18n.t('services.service.summary.flume.start.context').format(selectedFlumeAgent.get('name'));
+        self.sendFlumeAgentCommandToServer(command, context, selectedFlumeAgent);
+      });
+    }
+  },
+
+  /**
+   * Send stop command for selected Flume Agent
+   * @method stopFlumeAgent
+   */
+  stopFlumeAgent: function () {
+    var selectedFlumeAgent = this.get('selectedFlumeAgent');
+    if (selectedFlumeAgent && selectedFlumeAgent.get('status') === 'STARTED') {
+      var self = this;
+      App.showConfirmationPopup(function () {
+        var command = 'STOP';
+        var context = Em.I18n.t('services.service.summary.flume.stop.context').format(selectedFlumeAgent.get('name'));
+        self.sendFlumeAgentCommandToServer(command, context, selectedFlumeAgent);
+      });
+    }
+  },
+
+  /**
+   * Send command for Flume Agent to server
+   * @param {string} command
+   * @param {string} context
+   * @param {Object} agent
+   * @method sendFlumeAgentCommandToServer
+   */
+  sendFlumeAgentCommandToServer: function (command, context, agent) {
+    App.ajax.send({
+      name: 'service.flume.agent.command',
+      sender: this,
+      data: {
+        command: command,
+        context: context,
+        agentName: agent.get('name'),
+        host: agent.get('host.hostName')
+      },
+      success: 'commandSuccessCallback'
+    });
+  },
+
+  /**
+   * Callback, that shows Background operations popup if request was successful
+   */
+  commandSuccessCallback: function () {
+    console.log('Send request for refresh configs successfully');
+    // load data (if we need to show this background operations popup) from persist
+    App.router.get('applicationController').dataLoading().done(function (showPopup) {
+      if (showPopup) {
+        App.router.get('backgroundOperationsController').showPopup();
+      }
+    });
+  },
+
   nagiosUrl: function(){
     return App.router.get('clusterController.nagiosUrl');
   }.property('App.router.clusterController.nagiosUrl'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 6ef14fa..0d3fe77 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1100,6 +1100,10 @@ Em.I18n.translations = {
   'services.service.summary.storm.tasks': 'Tasks',
   'services.service.summary.storm.nimbus.uptime': 'Nimbus uptime',
   'services.service.summary.storm.topologies': 'Topologies',
+  'services.service.summary.flume.startAgent': 'Start Agent',
+  'services.service.summary.flume.stopAgent': 'Stop Agent',
+  'services.service.summary.flume.stop.context': 'Stop Flume Agent {0}',
+  'services.service.summary.flume.start.context': 'Start Flume Agent {0}',
 
   'services.service.info.metrics.flume.channelFillPercent':'Channel Fill Percentage',
   'services.service.info.metrics.flume.channelSize':'Channel Size',

http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index 4b2445a..54cf714 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -6086,9 +6086,8 @@ i.icon-asterisks {
 #flume-summary {
   text-align:left !important;
   max-height: 490px;
-  overflow: scroll;
   #flume-agents-table {
-    margin-top: 7px;
+    margin: 0;
     width: 100%;
     .highlight {
       td, th {
@@ -6129,4 +6128,15 @@ i.icon-asterisks {
       background: url(	data:image/png;base64,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) no-repeat right 50%;
     }
   }
+  .flume-agents-actions {
+    margin: 0 5px 5px 0;
+    a {
+      text-decoration: none;
+    }
+  }
+  .scrollable-container {
+    max-height: 450px;
+    width: 100%;
+    overflow-y: scroll;
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/templates/main/service/info/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs
index 23286e9..e488656 100644
--- a/ambari-web/app/templates/main/service/info/summary.hbs
+++ b/ambari-web/app/templates/main/service/info/summary.hbs
@@ -60,7 +60,11 @@
               {{template "templates/main/service/info/summary/hue"}}
             {{/if}}
             {{#if view.serviceStatus.flume}}
-              {{view App.MainDashboardServiceFlumeView serviceBinding="view.service"}}
+              <tr>
+                <td>
+                  {{view App.MainDashboardServiceFlumeView serviceBinding="view.service"}}
+                </td>
+              </tr>
             {{/if}}
             {{#if view.serviceStatus.falcon}}
               {{template "templates/main/service/info/summary/falcon"}}

http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/templates/main/service/services/flume.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/services/flume.hbs b/ambari-web/app/templates/main/service/services/flume.hbs
index 6d1e363..ce904f2 100644
--- a/ambari-web/app/templates/main/service/services/flume.hbs
+++ b/ambari-web/app/templates/main/service/services/flume.hbs
@@ -17,49 +17,63 @@
 }}
 
 <!-- Flume Agents -->
-<tr>
-  <td>
     <div id="flume-summary">
-    <a href="#" {{action filterHosts view.flumeHandlerComponent}}>{{view.summaryHeader}}</a>
-    <table class="table table-hover table-bordered table-striped" id="flume-agents-table">
-      <thead>
-      {{#view view.sortView contentBinding="view.filteredContent" class="label-row"}}
-        {{view view.parentView.statusSort}}
-        {{view view.parentView.agentSort}}
-        {{view view.parentView.hostSort}}
-        {{view view.parentView.sourceSort}}
-        {{view view.parentView.channelSort}}
-        {{view view.parentView.sinkSort}}
-        <td></td>
-      {{/view}}
-      </thead>
-      <tbody>
-      {{#each agent in view.pageContent}}
-        <tr {{action showAgentInfo agent target="view"}}>
-          <td class="agent-status">
-            <span {{bindAttr class="agent.healthClass"}}></span>
-          </td>
-          <td class="agent-name">
-            {{agent.name}}
-          </td>
-          <td class="agent-host-name">
-            {{agent.host.hostName}}
-          </td>
-          <td>
-            {{agent.sourcesCount}}
-          </td>
-          <td>
-            {{agent.channelsCount}}
-          </td>
-          <td>
-            {{agent.sinksCount}}
-          </td>
-          <td>
-          </td>
-        </tr>
-      {{/each}}
-      </tbody>
-    </table>
+      <a href="#" {{action filterHosts view.flumeHandlerComponent}}>{{view.summaryHeader}}</a>
+        <div class="btn-group display-inline-block flume-agents-actions pull-right">
+          <a {{bindAttr class=":btn :dropdown-toggle view.isActionsDisabled:disabled"}} data-toggle="dropdown" href="javascript:void(null)">{{t common.actions}}
+            <span class="caret"></span>
+          </a>
+          <ul class="pull-left dropdown-menu">
+            <li {{bindAttr class="view.isStartAgentDisabled:disabled"}}>
+              <a href="javascript:void(null)"
+                      {{bindAttr class="view.isStartAgentDisabled:disabled"}}
+                      {{action startFlumeAgent target="controller"}}>
+                {{t services.service.summary.flume.startAgent}}</a>
+            </li>
+            <li {{bindAttr class="view.isStopAgentDisabled:disabled"}}>
+              <a href="javascript:void(null)"
+                      {{bindAttr class="view.isStopAgentDisabled:disabled"}}
+                      {{action stopFlumeAgent target="controller"}}>
+                {{t services.service.summary.flume.stopAgent}}</a>
+            </li>
+          </ul>
+        </div>
+      <div class="scrollable-container">
+        <table class="table table-hover table-bordered table-striped" id="flume-agents-table">
+          <thead>
+          {{#view view.sortView contentBinding="view.filteredContent" class="label-row"}}
+            {{view view.parentView.statusSort}}
+            {{view view.parentView.agentSort}}
+            {{view view.parentView.hostSort}}
+            {{view view.parentView.sourceSort}}
+            {{view view.parentView.channelSort}}
+            {{view view.parentView.sinkSort}}
+          {{/view}}
+          </thead>
+          <tbody>
+          {{#each agent in view.pageContent}}
+            <tr {{action showAgentInfo agent target="view"}}>
+              <td class="agent-status">
+                <span {{bindAttr class="agent.healthClass"}}></span>
+              </td>
+              <td class="agent-name">
+                {{agent.name}}
+              </td>
+              <td class="agent-host-name">
+                {{agent.host.hostName}}
+              </td>
+              <td>
+                {{agent.sourcesCount}}
+              </td>
+              <td>
+                {{agent.channelsCount}}
+              </td>
+              <td>
+                {{agent.sinksCount}}
+              </td>
+            </tr>
+          {{/each}}
+          </tbody>
+        </table>
+      </div>
     </div>
-  </td>
-</tr>

http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index a35061c..f5af8c3 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -141,6 +141,29 @@ var urls = {
     'real': '/clusters/{clusterName}/config_groups?ConfigGroup/tag={serviceName}&fields=*',
     'mock': '/data/configurations/config_group.json'
   },
+  'service.flume.agent.command': {
+    'real': '/clusters/{clusterName}/requests',
+    'mock': '',
+    'format': function (data) {
+      return {
+        type: 'POST',
+        data: JSON.stringify({
+          "RequestInfo": {
+            "command": data.command,
+            "context": data.context,
+            "flume_handler": data.agentName
+          },
+          "Requests/resource_filters": [
+            {
+              "service_name": "FLUME",
+              "component_name": "FLUME_HANDLER",
+              "hosts": data.host
+            }
+          ]
+        })
+      }
+    }
+  },
   'reassign.stop_services': {
     'real': '/clusters/{clusterName}/services',
     'mock': '',

http://git-wip-us.apache.org/repos/asf/ambari/blob/68147d53/ambari-web/app/views/main/service/services/flume.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/services/flume.js b/ambari-web/app/views/main/service/services/flume.js
index d869920..a42d074 100644
--- a/ambari-web/app/views/main/service/services/flume.js
+++ b/ambari-web/app/views/main/service/services/flume.js
@@ -24,6 +24,12 @@ App.MainDashboardServiceFlumeView = App.TableView.extend({
 
   pagination: false,
 
+  isActionsDisabled: true,
+
+  isStartAgentDisabled: true,
+
+  isStopAgentDisabled: true,
+
   content: function () {
     return this.get('service.agents');
   }.property('service.agents.length'),
@@ -82,8 +88,22 @@ App.MainDashboardServiceFlumeView = App.TableView.extend({
   }),
 
   didInsertElement: function () {
+    this.set('controller.selectedFlumeAgent', null);
     this.filter();
   },
+
+  /**
+   * Change classes for dropdown DOM elements after status change of selected agent
+   */
+  setActionsDropdownClasses: function () {
+    var selectedFlumeAgent = this.get('controller.selectedFlumeAgent');
+    this.set('isActionsDisabled', !selectedFlumeAgent);
+    if (selectedFlumeAgent) {
+      this.set('isStartAgentDisabled', selectedFlumeAgent.get('status') !== 'INSTALLED');
+      this.set('isStopAgentDisabled', selectedFlumeAgent.get('status') !== 'STARTED');
+    }
+  }.observes('controller.selectedFlumeAgent', 'controller.selectedFlumeAgent.status'),
+
   /**
    * Action handler from flume tepmlate.
    * Highlight selected row and show metrics graphs of selected agent.
@@ -91,9 +111,11 @@ App.MainDashboardServiceFlumeView = App.TableView.extend({
    * @method showAgentInfo
    * @param {object} event
    */
-  showAgentInfo: function(event){
+  showAgentInfo: function (event) {
+    var agent = event.context;
+    this.set('controller.selectedFlumeAgent', agent);
     this.toggleHighlight($(event.currentTarget));
-    this.get('parentView').setMetric(event.context);
+    this.get('parentView').setMetric(agent);
   },
   /**
    * Highlight current row and remove highlight from previously selected item.