You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2017/04/26 22:28:02 UTC

[1/2] incubator-trafficcontrol git commit: adds update status dialog and also changes return object of generic dialog component

Repository: incubator-trafficcontrol
Updated Branches:
  refs/heads/master 2eb067460 -> fb723fefb


adds update status dialog and also changes return object of generic dialog component


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/696ef875
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/696ef875
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/696ef875

Branch: refs/heads/master
Commit: 696ef8758fb35299ad93b15e132ed06d7cd7a29c
Parents: 2eb0674
Author: Jeremy Mitchell <mi...@gmail.com>
Authored: Wed Apr 26 15:07:08 2017 -0600
Committer: Dan Kirkwood <da...@gmail.com>
Committed: Wed Apr 26 16:27:37 2017 -0600

----------------------------------------------------------------------
 traffic_ops/experimental/ui/app/src/app.js      |  1 +
 .../dialog/select/DialogSelectController.js     |  3 +-
 .../status/DialogSelectStatusController.js      | 51 ++++++++++++++++++
 .../select/status/dialog.select.status.tpl.html | 54 ++++++++++++++++++++
 .../modules/dialog/select/status/index.js       | 21 ++++++++
 .../edit/FormEditCacheGroupController.js        |  8 +--
 .../modules/form/server/FormServerController.js | 40 +++++++++------
 .../modules/form/server/form.server.tpl.html    | 31 +++++------
 .../TableCacheGroupServersController.js         |  8 +--
 .../table/servers/TableServersController.js     |  8 +--
 10 files changed, 179 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/app.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/app.js b/traffic_ops/experimental/ui/app/src/app.js
index ac65eb3..ecb1115 100644
--- a/traffic_ops/experimental/ui/app/src/app.js
+++ b/traffic_ops/experimental/ui/app/src/app.js
@@ -164,6 +164,7 @@ var trafficOps = angular.module('trafficOps', [
         require('./common/modules/dialog/delete').name,
         require('./common/modules/dialog/reset').name,
         require('./common/modules/dialog/select').name,
+        require('./common/modules/dialog/select/status').name,
         require('./common/modules/header').name,
         require('./common/modules/message').name,
         require('./common/modules/navigation').name,

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/DialogSelectController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/DialogSelectController.js b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/DialogSelectController.js
index 1906be4..84ac0e9 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/DialogSelectController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/DialogSelectController.js
@@ -26,7 +26,8 @@ var DialogSelectController = function(params, collection, $scope, $uibModalInsta
 	$scope.selectedItemId = null;
 
 	$scope.select = function() {
-		$uibModalInstance.close($scope.selectedItemId);
+		var selectedItem = _.find(collection, function(item){ return parseInt(item.id) == parseInt($scope.selectedItemId) });
+		$uibModalInstance.close(selectedItem);
 	};
 
 	$scope.cancel = function () {

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/DialogSelectStatusController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/DialogSelectStatusController.js b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/DialogSelectStatusController.js
new file mode 100644
index 0000000..19a5ec3
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/DialogSelectStatusController.js
@@ -0,0 +1,51 @@
+/*
+ * 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 DialogSelectStatusController = function(statuses, $scope, $uibModalInstance) {
+
+	$scope.statuses = statuses;
+
+	$scope.selectedStatusId = null;
+
+	$scope.status = {
+		id: null,
+		name: null,
+		offlineReason: null
+	};
+
+	$scope.select = function() {
+		var selectedStatus = _.find(statuses, function(status){ return parseInt(status.id) == parseInt($scope.selectedStatusId) });
+		$scope.status.id = selectedStatus.id;
+		$scope.status.name = selectedStatus.name;
+		$uibModalInstance.close($scope.status);
+	};
+
+	$scope.cancel = function () {
+		$uibModalInstance.dismiss('cancel');
+	};
+
+	$scope.offline = function () {
+		var selectedStatus = _.find(statuses, function(status){ return parseInt(status.id) == parseInt($scope.selectedStatusId) });
+		return selectedStatus && (selectedStatus.name == "ADMIN_DOWN" || selectedStatus.name == "OFFLINE");
+	};
+
+};
+
+DialogSelectStatusController.$inject = ['statuses', '$scope', '$uibModalInstance'];
+module.exports = DialogSelectStatusController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/dialog.select.status.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/dialog.select.status.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/dialog.select.status.tpl.html
new file mode 100644
index 0000000..3cc4441
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/dialog.select.status.tpl.html
@@ -0,0 +1,54 @@
+<!--
+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.
+-->
+
+<div class="modal-header">
+    <button type="button" class="close" ng-click="cancel()"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+    <h4 class="modal-title">Select Server Status</h4>
+</div>
+<div class="modal-body">
+    <form name="statusForm" novalidate>
+        <div class="row">
+            <div class="col-sm-12 col-md-12">
+                <div class="form-group" ng-class="{'has-error': hasError(statusForm.status), 'has-feedback': hasError(statusForm.status)}">
+                    <label class="control-label" for="status">Status *
+                        <small class="input-error" ng-show="hasPropertyError(statusForm.status, 'required')">Required</small>
+                    </label>
+                    <select id="status" name="status" class="form-control" ng-model="selectedStatusId" ng-options="status.id as status.name for status in statuses" required>
+                        <option value="">Select...</option>
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="row" ng-show="offline()">
+            <div class="col-sm-12 col-md-12">
+                <div class="form-group" ng-class="{'has-error': hasError(statusForm.offlineReason), 'has-feedback': hasError(statusForm.offlineReason)}">
+                    <label class="control-label" for="offlineReason">Offline Reason *
+                        <small class="input-error" ng-show="hasPropertyError(statusForm.offlineReason, 'maxlength')">Too Long</small>
+                    </label>
+                    <input id="offlineReason" name="offlineReason" type="text" class="form-control" ng-model="status.offlineReason" ng-maxlength="256" ng-required="offline()" autofocus>
+                    <span ng-show="hasError(statusForm.offlineReason)" class="form-control-feedback"><i class="fa fa-times"></i></span>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+<div class="modal-footer">
+    <button class="btn action-btn" ng-click="cancel()">Cancel</button>
+    <button class="btn btn-link" ng-disabled="statusForm.$invalid" ng-click="select()">Submit</button>
+</div>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/index.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/index.js b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/index.js
new file mode 100644
index 0000000..b9480f6
--- /dev/null
+++ b/traffic_ops/experimental/ui/app/src/common/modules/dialog/select/status/index.js
@@ -0,0 +1,21 @@
+/*
+ * 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.
+ */
+
+module.exports = angular.module('trafficOps.dialog.select.status', [])
+	.controller('DialogSelectStatusController', require('./DialogSelectStatusController'));

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/edit/FormEditCacheGroupController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/edit/FormEditCacheGroupController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/edit/FormEditCacheGroupController.js
index aab9dfc..e32e016 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/edit/FormEditCacheGroupController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/cacheGroup/edit/FormEditCacheGroupController.js
@@ -92,8 +92,8 @@ var FormEditCacheGroupController = function(cacheGroup, $scope, $controller, $ui
                 }
             }
         });
-        modalInstance.result.then(function(cdnId) {
-            queueServerUpdates(cacheGroup, cdnId);
+        modalInstance.result.then(function(cdn) {
+            queueServerUpdates(cacheGroup, cdn.id);
         }, function () {
             // do nothing
         });
@@ -117,8 +117,8 @@ var FormEditCacheGroupController = function(cacheGroup, $scope, $controller, $ui
                 }
             }
         });
-        modalInstance.result.then(function(cdnId) {
-            clearServerUpdates(cacheGroup, cdnId);
+        modalInstance.result.then(function(cdn) {
+            clearServerUpdates(cacheGroup, cdn.id);
         }, function () {
             // do nothing
         });

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js b/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
index 22303e3..84df4ce 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/server/FormServerController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var FormServerController = function(server, $scope, $location, $state, formUtils, locationUtils, serverService, cacheGroupService, cdnService, physLocationService, profileService, statusService, typeService) {
+var FormServerController = function(server, $scope, $location, $state, $uibModal, formUtils, locationUtils, serverService, cacheGroupService, cdnService, physLocationService, profileService, statusService, typeService) {
 
     var getPhysLocations = function() {
         physLocationService.getPhysLocations()
@@ -61,6 +61,13 @@ var FormServerController = function(server, $scope, $location, $state, formUtils
             });
     };
 
+    var updateStatus = function(status) {
+        // todo: hook this into PUT /api/version/server/:id/status
+        console.log(status.name);
+        console.log(status.offlineReason);
+        alert('this still needs to be hooked into the api');
+    };
+    
     var refresh = function() {
         $state.reload(); // reloads all the resolves for the view
     };
@@ -97,26 +104,29 @@ var FormServerController = function(server, $scope, $location, $state, formUtils
             );
     };
 
-    $scope.queueUpdates = function() {
-        alert('not hooked up yet: queuing updates for server');
+    $scope.confirmStatusUpdate = function() {
+        var modalInstance = $uibModal.open({
+            templateUrl: 'common/modules/dialog/select/status/dialog.select.status.tpl.html',
+            controller: 'DialogSelectStatusController',
+            size: 'md',
+            resolve: {
+                statuses: function() {
+                    return $scope.statuses;
+                }
+            }
+        });
+        modalInstance.result.then(function(status) {
+            updateStatus(status);
+        }, function () {
+            // do nothing
+        });
     };
 
-    $scope.dequeueUpdates = function() {
-        alert('not hooked up yet: dequeuing updates for server');
-    };
 
     $scope.viewConfig = function() {
         alert('not hooked up yet: view config files for server');
     };
 
-    $scope.offlineServer = function() {
-        alert('not hooked up yet: offlineServer for server');
-    };
-
-    $scope.onlineServer = function() {
-        alert('not hooked up yet: onlineServer for server');
-    };
-
     $scope.viewDeliveryServices = function() {
         $location.path($location.path() + '/delivery-services');
     };
@@ -139,5 +149,5 @@ var FormServerController = function(server, $scope, $location, $state, formUtils
 
 };
 
-FormServerController.$inject = ['server', '$scope', '$location', '$state', 'formUtils', 'locationUtils', 'serverService', 'cacheGroupService', 'cdnService', 'physLocationService', 'profileService', 'statusService', 'typeService'];
+FormServerController.$inject = ['server', '$scope', '$location', '$state', '$uibModal', 'formUtils', 'locationUtils', 'serverService', 'cacheGroupService', 'cdnService', 'physLocationService', 'profileService', 'statusService', 'typeService'];
 module.exports = FormServerController;

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
index 80e3397..7cf7d03 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
+++ b/traffic_ops/experimental/ui/app/src/common/modules/form/server/form.server.tpl.html
@@ -24,7 +24,7 @@ under the License.
             <li class="active">{{serverName}}</li>
         </ol>
         <div class="pull-right" role="group" ng-show="!settings.isNew">
-            <button class="btn btn-danger" ng-click="offlineServer()">Offline Server &nbsp;&nbsp;<i class="fa fa-warning"></i></button>
+            <button class="btn btn-primary" ng-click="confirmStatusUpdate()">Update Status</button>
             <!--<button class="btn btn-success" ng-click="onlineServer()">Online Server</button>-->
             <button class="btn btn-primary" title="Queue {{server.hostName}} updates" ng-show="!server.updPending" ng-click="queueServerUpdates(server)"><i class="fa fa-flag"></i></button>
             <button class="btn btn-primary" title="Cancel {{server.hostName}} updates" ng-show="server.updPending" ng-click="clearServerUpdates(server)"><i class="fa fa-ban"></i></button>
@@ -44,6 +44,18 @@ under the License.
     <div class="x_content">
         <br>
         <form name="serverForm" class="form-horizontal form-label-left" novalidate>
+            <div class="form-group" ng-class="{'has-error': hasError(serverForm.status), 'has-feedback': hasError(serverForm.status)}">
+                <label class="control-label col-md-2 col-sm-2 col-xs-12">Status *</label>
+                <div class="col-md-10 col-sm-10 col-xs-12">
+                    <select id="status" name="status" class="form-control" ng-model="server.statusId" ng-options="status.id as status.name for status in statuses" ng-disabled="true"></select>
+                </div>
+            </div>
+            <div class="form-group" ng-class="{'has-error': hasError(serverForm.updPending), 'has-feedback': hasError(serverForm.updPending)}">
+                <label class="control-label col-md-2 col-sm-2 col-xs-12">Update Pending *</label>
+                <div class="col-md-10 col-sm-10 col-xs-12">
+                    <input id="updPending" name="updPending" type="text" class="form-control" ng-model="server.updPending" ng-disabled="true">
+                </div>
+            </div>
             <div class="form-group" ng-class="{'has-error': hasError(serverForm.hostName), 'has-feedback': hasError(serverForm.hostName)}">
                 <label class="control-label col-md-2 col-sm-2 col-xs-12">Hostname *</label>
                 <div class="col-md-10 col-sm-10 col-xs-12">
@@ -303,15 +315,6 @@ under the License.
                     <small class="input-error" ng-show="hasPropertyError(serverForm.type, 'required')">Required</small>
                 </div>
             </div>
-            <div class="form-group" ng-class="{'has-error': hasError(serverForm.status), 'has-feedback': hasError(serverForm.status)}">
-                <label class="control-label col-md-2 col-sm-2 col-xs-12">Status *</label>
-                <div class="col-md-10 col-sm-10 col-xs-12">
-                    <select id="status" name="status" class="form-control" ng-model="server.statusId" ng-options="status.id as status.name for status in statuses" required>
-                        <option value="">Select...</option>
-                    </select>
-                    <small class="input-error" ng-show="hasPropertyError(serverForm.status, 'required')">Required</small>
-                </div>
-            </div>
             <div class="form-group" ng-class="{'has-error': hasError(serverForm.profile), 'has-feedback': hasError(serverForm.profile)}">
                 <label class="control-label col-md-2 col-sm-2 col-xs-12">Profile *</label>
                 <div class="col-md-10 col-sm-10 col-xs-12">
@@ -321,14 +324,6 @@ under the License.
                     <small class="input-error" ng-show="hasPropertyError(serverForm.profile, 'required')">Required</small>
                 </div>
             </div>
-            <div class="form-group" ng-class="{'has-error': hasError(serverForm.updPending), 'has-feedback': hasError(serverForm.updPending)}">
-                <label class="control-label col-md-2 col-sm-2 col-xs-12">Update Pending *</label>
-                <div class="col-md-10 col-sm-10 col-xs-12">
-                    <select id="updPending" name="updPending" class="form-control" ng-model="server.updPending" ng-options="x.value as x.label for x in falseTrue" required></select>
-                    <small class="input-error" ng-show="hasPropertyError(serverForm.updPending, 'required')">Required</small>
-                </div>
-            </div>
-
             <div class="modal-footer">
                 <button type="button" class="btn btn-danger" ng-show="!settings.isNew" ng-click="confirmDelete(server)">Delete</button>
                 <button type="button" class="btn btn-success" ng-disabled="serverForm.$pristine || serverForm.$invalid" ng-click="save(server)">{{settings.saveLabel}}</button>

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
index 4652479..f4d8a08 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js
@@ -67,8 +67,8 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $scope, $s
 				}
 			}
 		});
-		modalInstance.result.then(function(cdnId) {
-			queueServerUpdates(cacheGroup, cdnId);
+		modalInstance.result.then(function(cdn) {
+			queueServerUpdates(cacheGroup, cdn.id);
 		}, function () {
 			// do nothing
 		});
@@ -92,8 +92,8 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $scope, $s
 				}
 			}
 		});
-		modalInstance.result.then(function(cdnId) {
-			clearServerUpdates(cacheGroup, cdnId);
+		modalInstance.result.then(function(cdn) {
+			clearServerUpdates(cacheGroup, cdn.id);
 		}, function () {
 			// do nothing
 		});

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/696ef875/traffic_ops/experimental/ui/app/src/common/modules/table/servers/TableServersController.js
----------------------------------------------------------------------
diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/servers/TableServersController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/servers/TableServersController.js
index a6bbf8b..ae824bc 100644
--- a/traffic_ops/experimental/ui/app/src/common/modules/table/servers/TableServersController.js
+++ b/traffic_ops/experimental/ui/app/src/common/modules/table/servers/TableServersController.js
@@ -65,8 +65,8 @@ var TableServersController = function(servers, $scope, $state, $uibModal, locati
                 }
             }
         });
-        modalInstance.result.then(function(cdnId) {
-            queueServerUpdates(cdnId);
+        modalInstance.result.then(function(cdn) {
+            queueServerUpdates(cdn.id);
         }, function () {
             // do nothing
         });
@@ -90,8 +90,8 @@ var TableServersController = function(servers, $scope, $state, $uibModal, locati
                 }
             }
         });
-        modalInstance.result.then(function(cdnId) {
-            clearServerUpdates(cdnId);
+        modalInstance.result.then(function(cdn) {
+            clearServerUpdates(cdn.id);
         }, function () {
             // do nothing
         });


[2/2] incubator-trafficcontrol git commit: This closes #524.

Posted by da...@apache.org.
This closes #524.


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/fb723fef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/fb723fef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/fb723fef

Branch: refs/heads/master
Commit: fb723fefb4043e2c761bfdc527e58cce19a211e3
Parents: 696ef87
Author: Dan Kirkwood <da...@gmail.com>
Authored: Wed Apr 26 16:27:55 2017 -0600
Committer: Dan Kirkwood <da...@gmail.com>
Committed: Wed Apr 26 16:27:55 2017 -0600

----------------------------------------------------------------------

----------------------------------------------------------------------