You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ha...@apache.org on 2017/02/06 09:34:18 UTC

mesos git commit: Show maintainance schedule info in the WebUI.

Repository: mesos
Updated Branches:
  refs/heads/master 19d343357 -> 3ee57de66


Show maintainance schedule info in the WebUI.

Review: https://reviews.apache.org/r/53741/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/3ee57de6
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/3ee57de6
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/3ee57de6

Branch: refs/heads/master
Commit: 3ee57de66a23d67cc622e8900f3d093644f332d1
Parents: 19d3433
Author: Tomasz Janiszewski <ja...@gmail.com>
Authored: Mon Feb 6 16:38:27 2017 +0800
Committer: Haosdent Huang <ha...@apache.org>
Committed: Mon Feb 6 17:33:47 2017 +0800

----------------------------------------------------------------------
 src/webui/master/static/index.html        |  3 +++
 src/webui/master/static/js/app.js         | 21 ++++++++++-----
 src/webui/master/static/js/controllers.js | 14 ++++++++++
 src/webui/master/static/maintenance.html  | 36 ++++++++++++++++++++++++++
 4 files changed, 67 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/3ee57de6/src/webui/master/static/index.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/index.html b/src/webui/master/static/index.html
index 7c6a8ad..7811ecb 100644
--- a/src/webui/master/static/index.html
+++ b/src/webui/master/static/index.html
@@ -45,6 +45,9 @@
               <li data-ng-class="{active: (navbarActiveTab === 'offers')}">
                 <a href="#/offers">Offers</a>
               </li>
+              <li data-ng-class="{active: (navbarActiveTab === 'maintenance')}">
+                <a href="#/maintenance">Maintenance</a>
+              </li>
             </ul>
             <ul class="nav navbar-nav navbar-right">
               <li>

http://git-wip-us.apache.org/repos/asf/mesos/blob/3ee57de6/src/webui/master/static/js/app.js
----------------------------------------------------------------------
diff --git a/src/webui/master/static/js/app.js b/src/webui/master/static/js/app.js
index 558a67d..73043a8 100644
--- a/src/webui/master/static/js/app.js
+++ b/src/webui/master/static/js/app.js
@@ -6,12 +6,6 @@
       $routeProvider
         .when('/',
           {templateUrl: 'static/home.html', controller: 'HomeCtrl'})
-        .when('/frameworks',
-          {templateUrl: 'static/frameworks.html', controller: 'FrameworksCtrl'})
-        .when('/frameworks/:id',
-          {templateUrl: 'static/framework.html', controller: 'FrameworkCtrl'})
-        .when('/offers',
-          {templateUrl: 'static/offers.html', controller: 'OffersCtrl'})
         .when('/agents',
           {templateUrl: 'static/agents.html', controller: 'AgentsCtrl'})
         .when('/agents/:agent_id',
@@ -20,6 +14,14 @@
           {templateUrl: 'static/agent_framework.html', controller: 'AgentFrameworkCtrl'})
         .when('/agents/:agent_id/frameworks/:framework_id/executors/:executor_id',
           {templateUrl: 'static/agent_executor.html', controller: 'AgentExecutorCtrl'})
+        .when('/frameworks',
+          {templateUrl: 'static/frameworks.html', controller: 'FrameworksCtrl'})
+        .when('/frameworks/:id',
+          {templateUrl: 'static/framework.html', controller: 'FrameworkCtrl'})
+        .when('/maintenance',
+          {templateUrl: 'static/maintenance.html', controller: 'MaintenanceCtrl'})
+        .when('/offers',
+          {templateUrl: 'static/offers.html', controller: 'OffersCtrl'})
 
         // TODO(tomxing): Remove the following '/slaves/*' paths once the
         // slave->agent rename is complete(MESOS-3779).
@@ -88,7 +90,7 @@
       return function(date) {
         var i = parseInt(date, 10);
         if (_.isNaN(i)) { return '' };
-        return $filter('date')(i, 'yyyy-MM-ddTH:mm:ssZ');
+        return $filter('date')(i, 'yyyy-MM-ddTHH:mm:ssZ');
       };
     })
     .filter('relativeDate', function() {
@@ -257,6 +259,11 @@
           var setSorting = function(el) {
             var key = el.attr('data-key');
 
+            // Prevent sorting when 'data-key' is undefined.
+            if (!key) {
+              return;
+            }
+
             if (scope.columnKey === key) {
               scope.sortOrder = !scope.sortOrder;
             }

http://git-wip-us.apache.org/repos/asf/mesos/blob/3ee57de6/src/webui/master/static/js/controllers.js
----------------------------------------------------------------------
diff --git a/src/webui/master/static/js/controllers.js b/src/webui/master/static/js/controllers.js
index 07bc612..2ea8275 100644
--- a/src/webui/master/static/js/controllers.js
+++ b/src/webui/master/static/js/controllers.js
@@ -471,6 +471,20 @@
 
   mesosApp.controller('OffersCtrl', function() {});
 
+  mesosApp.controller('MaintenanceCtrl', function($scope, $http) {
+    // TODO(haosdent): Send requests to the leading master directly
+    // once `leadingMasterURL` is public.
+    $http.jsonp('/master/maintenance/schedule?jsonp=JSON_CALLBACK')
+      .success(function(response) {
+        $scope.maintenance = response;
+      })
+      .error(function() {
+        if ($scope.isErrorModalOpen === false) {
+          popupErrorModal();
+        }
+      });
+  });
+
   mesosApp.controller('FrameworkCtrl', function($scope, $routeParams) {
     var update = function() {
       if ($routeParams.id in $scope.completed_frameworks) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/3ee57de6/src/webui/master/static/maintenance.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/maintenance.html b/src/webui/master/static/maintenance.html
new file mode 100644
index 0000000..d06ddd2
--- /dev/null
+++ b/src/webui/master/static/maintenance.html
@@ -0,0 +1,36 @@
+<ol class="breadcrumb">
+  <li>
+    <a class="badge badge-type" href="#/">Master</a>
+  </li>
+  <li class="active">
+    <span class="badge badge-type">Maintenance Schedule</span>
+  </li>
+</ol>
+
+<table m-table table-content="maintenance.windows" title="Maintenance Schedule"
+  class="table table-striped table-bordered table-condensed">
+  <thead>
+    <tr>
+      <th data-key="unavailability.start.nanoseconds" data-sort>Begin</th>
+      <th>End</th>
+      <th>Hosts</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr ng-repeat="window in $data">
+      <td>
+        <m-timestamp value="{{window.unavailability.start.nanoseconds / 1000000}}">
+        </m-timestamp>
+      </td>
+      <td>
+        <m-timestamp value="{{(window.unavailability.duration.nanoseconds + window.unavailability.start.nanoseconds) / 1000000}}">
+        </m-timestamp>
+      </td>
+      <td>
+          <div ng-repeat="machine_ids in window.machine_ids">
+            {{machine_ids.hostname ? machine_ids.hostname : machine_ids.ip}}
+          </div>
+      </td>
+    </tr>
+  </tbody>
+</table>