From 1f6a1312966aa49745bf78324a2cdd7f704b4c20 Mon Sep 17 00:00:00 2001 From: Jeremy Mitchell Date: Tue, 23 May 2017 11:33:30 -0600 Subject: [PATCH] adds ability to assign servers to ds --- .../src/common/api/DeliveryServiceService.js | 13 ++++ .../ui/app/src/common/api/ServerService.js | 4 ++ .../TableDSServersUnassignedController.js | 70 +++++++++++++++++++ .../TableDeliveryServiceServersController.js | 36 ++++++++-- .../table/deliveryServiceServers/index.js | 3 +- .../table.deliveryServiceServers.tpl.html | 4 +- .../table.dsServersUnassigned.tpl.html | 49 +++++++++++++ .../deliveryServices/servers/index.js | 2 +- 8 files changed, 171 insertions(+), 10 deletions(-) create mode 100644 traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDSServersUnassignedController.js create mode 100644 traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.dsServersUnassigned.tpl.html diff --git a/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js index a83107e548..7c35224b6c 100644 --- a/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js +++ b/traffic_ops/experimental/ui/app/src/common/api/DeliveryServiceService.js @@ -84,6 +84,19 @@ var DeliveryServiceService = function(Restangular, locationUtils, httpService, m ); }; + this.assignDeliveryServiceServers = function(dsServerMappings) { + return Restangular.service('deliveryserviceserver').post(dsServerMappings) + .then( + function() { + messageModel.setMessages([ { level: 'success', text: 'Servers linked to delivery service' } ], false); + }, + function(fault) { + messageModel.setMessages(fault.data.alerts, false); + } + ); + }; + + }; DeliveryServiceService.$inject = ['Restangular', 'locationUtils', 'httpService', 'messageModel', 'ENV']; diff --git a/traffic_ops/experimental/ui/app/src/common/api/ServerService.js b/traffic_ops/experimental/ui/app/src/common/api/ServerService.js index 07c901185c..fd950fd012 100644 --- a/traffic_ops/experimental/ui/app/src/common/api/ServerService.js +++ b/traffic_ops/experimental/ui/app/src/common/api/ServerService.js @@ -68,6 +68,10 @@ var ServerService = function($http, $q, Restangular, locationUtils, messageModel return Restangular.one('deliveryservices', dsId).getList('servers'); }; + this.getUnassignedDeliveryServiceServers = function(dsId) { + return Restangular.one('deliveryservices', dsId).getList('unassigned_servers'); + }; + this.queueServerUpdates = function(id) { return Restangular.one("servers", id).customPOST( { action: "queue"}, "queue_update" ) .then( diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDSServersUnassignedController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDSServersUnassignedController.js new file mode 100644 index 0000000000..a73059c4e3 --- /dev/null +++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDSServersUnassignedController.js @@ -0,0 +1,70 @@ +/* + * 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 TableDSServersUnassignedController = function(deliveryService, servers, $scope, $uibModalInstance) { + + var selectedServers = []; + + $scope.deliveryService = deliveryService; + + $scope.unassignedServers = servers; + + var addServer = function(serverId) { + if (_.indexOf(selectedServers, serverId) == -1) { + selectedServers.push(serverId); + } + }; + + var removeServer = function(serverId) { + selectedServers = _.without(selectedServers, serverId); + }; + + $scope.updateServers = function($event, serverId) { + var checkbox = $event.target; + if (checkbox.checked) { + addServer(serverId); + } else { + removeServer(serverId); + } + }; + + $scope.submit = function() { + $uibModalInstance.close(selectedServers); + }; + + $scope.cancel = function () { + $uibModalInstance.dismiss('cancel'); + }; + + angular.element(document).ready(function () { + $('#dsServersUnassignedTable').dataTable({ + "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]], + "iDisplayLength": 25, + "order": [[ 1, 'asc' ]], + "columnDefs": [ + { 'orderable': false, 'targets': 0 }, + { "width": "5%", "targets": 0 } + ] + }); + }); + +}; + +TableDSServersUnassignedController.$inject = ['deliveryService', 'servers', '$scope', '$uibModalInstance']; +module.exports = TableDSServersUnassignedController; diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js index 408d7a6f0a..1a91c007ce 100644 --- a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js +++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js @@ -17,16 +17,12 @@ * under the License. */ -var TableDeliveryServiceServersController = function(deliveryService, servers, $scope, $state, locationUtils, serverUtils, deliveryServiceService) { +var TableDeliveryServiceServersController = function(deliveryService, servers, $scope, $state, $uibModal, locationUtils, serverUtils, deliveryServiceService) { $scope.deliveryService = deliveryService; $scope.servers = servers; - $scope.addServer = function() { - alert('not hooked up yet: addServer to ds'); - }; - $scope.removeServer = function(dsId, serverId) { deliveryServiceService.deleteDeliveryServiceServer(dsId, serverId) .then( @@ -40,6 +36,34 @@ var TableDeliveryServiceServersController = function(deliveryService, servers, $ $state.reload(); // reloads all the resolves for the view }; + $scope.selectServers = function() { + var modalInstance = $uibModal.open({ + templateUrl: 'common/modules/table/deliveryServiceServers/table.dsServersUnassigned.tpl.html', + controller: 'TableDSServersUnassignedController', + size: 'lg', + resolve: { + deliveryService: function() { + return deliveryService; + }, + servers: function(serverService) { + return serverService.getUnassignedDeliveryServiceServers(deliveryService.id); + } + } + }); + modalInstance.result.then(function(selectedServerIds) { + var serverAssignments = { dsId: deliveryService.id, servers: selectedServerIds }; + deliveryServiceService.assignDeliveryServiceServers(serverAssignments) + .then( + function() { + $scope.refresh(); + } + ); + }, function () { + // do nothing + }); + }; + + $scope.isOffline = serverUtils.isOffline; $scope.offlineReason = serverUtils.offlineReason; @@ -56,5 +80,5 @@ var TableDeliveryServiceServersController = function(deliveryService, servers, $ }; -TableDeliveryServiceServersController.$inject = ['deliveryService', 'servers', '$scope', '$state', 'locationUtils', 'serverUtils', 'deliveryServiceService']; +TableDeliveryServiceServersController.$inject = ['deliveryService', 'servers', '$scope', '$state', '$uibModal', 'locationUtils', 'serverUtils', 'deliveryServiceService']; module.exports = TableDeliveryServiceServersController; diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/index.js b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/index.js index b4f353c22e..b1798bde95 100644 --- a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/index.js +++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/index.js @@ -18,4 +18,5 @@ */ module.exports = angular.module('trafficOps.table.deliveryServiceServers', []) - .controller('TableDeliveryServiceServersController', require('./TableDeliveryServiceServersController')); + .controller('TableDeliveryServiceServersController', require('./TableDeliveryServiceServersController')) + .controller('TableDSServersUnassignedController', require('./TableDSServersUnassignedController')); diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html index 38eb8b1269..59de788a43 100644 --- a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html +++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html @@ -25,7 +25,7 @@
  • Servers
  • - +
    @@ -72,7 +72,7 @@ {{::server.profile}} {{::server.iloIpAddress}} {{::server.iloIpGateway}} - + diff --git a/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.dsServersUnassigned.tpl.html b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.dsServersUnassigned.tpl.html new file mode 100644 index 0000000000..0e43889b23 --- /dev/null +++ b/traffic_ops/experimental/ui/app/src/common/modules/table/deliveryServiceServers/table.dsServersUnassigned.tpl.html @@ -0,0 +1,49 @@ + + + + + + + diff --git a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/servers/index.js b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/servers/index.js index f53525e76b..4b6bf57999 100644 --- a/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/servers/index.js +++ b/traffic_ops/experimental/ui/app/src/modules/private/configure/deliveryServices/servers/index.js @@ -31,7 +31,7 @@ module.exports = angular.module('trafficOps.private.configure.deliveryServices.s return deliveryServiceService.getDeliveryService($stateParams.deliveryServiceId); }, servers: function($stateParams, serverService) { - return serverService.getServers({ dsId: $stateParams.deliveryServiceId }); + return serverService.getDeliveryServiceServers($stateParams.deliveryServiceId); } } }