You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ra...@apache.org on 2020/11/03 15:46:31 UTC

[trafficcontrol] branch master updated: TP: allows topology-based delivery services to be assigned to ORG servers (#5236)

This is an automated email from the ASF dual-hosted git repository.

rawlin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 82f7549  TP: allows topology-based delivery services to be assigned to ORG servers (#5236)
82f7549 is described below

commit 82f7549057a4a71a4f7435253c6d368078c1664e
Author: Jeremy Mitchell <mi...@users.noreply.github.com>
AuthorDate: Tue Nov 3 08:46:18 2020 -0700

    TP: allows topology-based delivery services to be assigned to ORG servers (#5236)
    
    * allows topology-based delivery services to be assigned to ORG servers
    
    * adds changelog.md entry
    
    * syncs topology name validation in UI w/ api validation
    
    * another changelog.md update
---
 CHANGELOG.md                                             |  4 +++-
 .../common/modules/form/topology/form.topology.tpl.html  |  4 ++--
 .../TableAssignDeliveryServicesController.js             | 16 ++++++++++------
 .../table.assignDeliveryServices.tpl.html                |  2 +-
 4 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c96b613..54bd09b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
 
 ## [unreleased]
 ### Fixed
-- Fixed #5216 - Removed duplicate button to link delivery service to server [Related Github issue](https://github.com/apache/trafficcontrol/issues/5216)
+- Fixed #5216 - Removed duplicate button to link delivery service to server [Related Github issue](https://github.com/apache/trafficcontrol/issues/5216) 
+- Fixed #5197 - Allows users to assign topology-based DS to ORG servers [Related Github issue](https://github.com/apache/trafficcontrol/issues/5197) 
+- Fixed #5161 - Fixes topology name character validation [Related Github issue](https://github.com/apache/trafficcontrol/issues/5161) 
 - Fixed an issue where the jobs and servers table in Traffic Portal would not clear a column's filter when it's hidden
 - Fixed an issue with Traffic Router failing to authenticate if secrets are changed
 - Fixed validation error message for Traffic Ops `POST /api/x/profileparameters` route
diff --git a/traffic_portal/app/src/common/modules/form/topology/form.topology.tpl.html b/traffic_portal/app/src/common/modules/form/topology/form.topology.tpl.html
index 0225b8d..df8822a 100644
--- a/traffic_portal/app/src/common/modules/form/topology/form.topology.tpl.html
+++ b/traffic_portal/app/src/common/modules/form/topology/form.topology.tpl.html
@@ -58,9 +58,9 @@ under the License.
             <div class="form-group" ng-class="{'has-error': hasError(topologyForm.name), 'has-feedback': hasError(topologyForm.name)}">
                 <label class="control-label col-md-2 col-sm-2 col-xs-12">Name *</label>
                 <div class="col-md-10 col-sm-10 col-xs-12">
-                    <input name="name" type="text" class="form-control" ng-model="topology.name" ng-disabled="!settings.isNew" pattern="[A-Za-z0-9]([A-Za-z\-0-9]*[A-Za-z0-9])?" required autofocus>
+                    <input name="name" type="text" class="form-control" ng-model="topology.name" ng-disabled="!settings.isNew" pattern="^[a-zA-Z0-9\-_]+$" required autofocus>
                     <small class="input-error" ng-show="hasPropertyError(topologyForm.name, 'required')">Required</small>
-                    <small class="input-error" ng-show="hasPropertyError(topologyForm.name, 'pattern')">No special characters, periods, underscores, or spaces and cannot begin or end with a hyphen</small>
+                    <small class="input-error" ng-show="hasPropertyError(topologyForm.name, 'pattern')">Alphanumeric, dash, or underscore characters only</small>
                     <span ng-show="hasError(topologyForm.name)" class="form-control-feedback"><i class="fa fa-times"></i></span>
                 </div>
             </div>
diff --git a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableAssignDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableAssignDeliveryServicesController.js
index ede43ac..a659d75 100644
--- a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableAssignDeliveryServicesController.js
+++ b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableAssignDeliveryServicesController.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-var TableAssignDeliveryServicesController = function(server, deliveryServices, assignedDeliveryServices, $scope, $uibModalInstance) {
+var TableAssignDeliveryServicesController = function(server, deliveryServices, assignedDeliveryServices, $scope, $uibModalInstance, serverUtils) {
 
 	var selectedDeliveryServices = [];
 
@@ -35,7 +35,7 @@ var TableAssignDeliveryServicesController = function(server, deliveryServices, a
 				return parseInt($(this).attr('id'));
 			}).get();
 		$scope.selectedDeliveryServices = _.map(deliveryServices, function(ds) {
-			if (ds.topology) {
+			if (ds.topology && $scope.isCache(server)) {
 				return ds;
 			}
 			if (visibleDSIds.includes(ds.id)) {
@@ -53,6 +53,8 @@ var TableAssignDeliveryServicesController = function(server, deliveryServices, a
 
 	$scope.server = server;
 
+	$scope.isCache = serverUtils.isCache;
+
 	$scope.selectedDeliveryServices = _.map(deliveryServices, function(ds) {
 		var isAssigned = _.find(assignedDeliveryServices, function(assignedDS) { return assignedDS.id == ds.id });
 		if (isAssigned) {
@@ -62,10 +64,12 @@ var TableAssignDeliveryServicesController = function(server, deliveryServices, a
 	});
 
 	$scope.toggleRow = function(ds) {
-		if (!ds.topology) {
-			ds.selected = !ds.selected;
-			$scope.onChange();
+		// a ds w/ a topology has no use being assigned to cache servers
+		if (ds.topology && $scope.isCache(server)) {
+			return;
 		}
+		ds.selected = !ds.selected;
+		$scope.onChange();
 	};
 
 	$scope.selectAll = function($event) {
@@ -110,5 +114,5 @@ var TableAssignDeliveryServicesController = function(server, deliveryServices, a
 
 };
 
-TableAssignDeliveryServicesController.$inject = ['server', 'deliveryServices', 'assignedDeliveryServices', '$scope', '$uibModalInstance'];
+TableAssignDeliveryServicesController.$inject = ['server', 'deliveryServices', 'assignedDeliveryServices', '$scope', '$uibModalInstance', 'serverUtils'];
 module.exports = TableAssignDeliveryServicesController;
diff --git a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.assignDeliveryServices.tpl.html b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.assignDeliveryServices.tpl.html
index 698e0e8..7ba0b48 100644
--- a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.assignDeliveryServices.tpl.html
+++ b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/table.assignDeliveryServices.tpl.html
@@ -33,7 +33,7 @@ under the License.
         </thead>
         <tbody>
         <tr id="{{::ds.id}}" class="ds-row" ng-class="::{'active': ds.selected}" ng-repeat="ds in ::selectedDeliveryServices" ng-click="toggleRow(ds)">
-            <td><input type="checkbox" ng-model="ds.selected" ng-disabled="ds.topology"></td>
+            <td><input type="checkbox" ng-model="ds.selected" ng-disabled="ds.topology && isCache(server)"></td>
             <td data-search="^{{::ds.xmlId}}$">{{::ds.xmlId}}</td>
             <td data-search="^{{::ds.displayName}}$">{{::ds.displayName}}</td>
             <td data-search="^{{::ds.type}}$">{{::ds.type}}</td>