From 1c6220021e06c0bd8b233cd3e70d3f91febbbf6f Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 12:21:05 -0600 Subject: [PATCH 01/33] Removed old getServer (by ID) function --- traffic_portal/app/src/common/api/ServerService.js | 11 ----------- .../src/modules/private/servers/capabilities/index.js | 2 +- .../src/modules/private/servers/configFiles/index.js | 2 +- .../modules/private/servers/deliveryServices/index.js | 2 +- .../app/src/modules/private/servers/edit/index.js | 2 +- 5 files changed, 4 insertions(+), 15 deletions(-) diff --git a/traffic_portal/app/src/common/api/ServerService.js b/traffic_portal/app/src/common/api/ServerService.js index 4f70fdba33..4798d299c4 100644 --- a/traffic_portal/app/src/common/api/ServerService.js +++ b/traffic_portal/app/src/common/api/ServerService.js @@ -30,17 +30,6 @@ var ServerService = function($http, locationUtils, messageModel, ENV) { ) }; - this.getServer = function(id) { - return $http.get(ENV.api['root'] + 'servers', {params: {id: id}}).then( - function (result) { - return result.data.response[0]; - }, - function (err) { - throw err; - } - ) - }; - this.createServer = function(server) { return $http.post(ENV.api['root'] + 'servers', server).then( function(result) { diff --git a/traffic_portal/app/src/modules/private/servers/capabilities/index.js b/traffic_portal/app/src/modules/private/servers/capabilities/index.js index a3ce4e58ad..2a7107fba9 100644 --- a/traffic_portal/app/src/modules/private/servers/capabilities/index.js +++ b/traffic_portal/app/src/modules/private/servers/capabilities/index.js @@ -28,7 +28,7 @@ module.exports = angular.module('trafficPortal.private.servers.capabilities', [] controller: 'TableServerServerCapabilitiesController', resolve: { server: function($stateParams, serverService) { - return serverService.getServer($stateParams.serverId); + return serverService.getServers({id: $stateParams.serverId}); }, serverCapabilities: function($stateParams, serverService) { return serverService.getServerCapabilities($stateParams.serverId); diff --git a/traffic_portal/app/src/modules/private/servers/configFiles/index.js b/traffic_portal/app/src/modules/private/servers/configFiles/index.js index cbc3fd109f..9611107008 100644 --- a/traffic_portal/app/src/modules/private/servers/configFiles/index.js +++ b/traffic_portal/app/src/modules/private/servers/configFiles/index.js @@ -28,7 +28,7 @@ module.exports = angular.module('trafficPortal.private.servers.configFiles', []) controller: 'TableServerConfigFilesController', resolve: { server: function($stateParams, serverService) { - return serverService.getServer($stateParams.serverId); + return serverService.getServers({id: $stateParams.serverId}); }, serverConfigFiles: function($stateParams, serverService) { return serverService.getServerConfigFiles($stateParams.serverId); diff --git a/traffic_portal/app/src/modules/private/servers/deliveryServices/index.js b/traffic_portal/app/src/modules/private/servers/deliveryServices/index.js index 127f1fcaa5..a3e21610ba 100644 --- a/traffic_portal/app/src/modules/private/servers/deliveryServices/index.js +++ b/traffic_portal/app/src/modules/private/servers/deliveryServices/index.js @@ -28,7 +28,7 @@ module.exports = angular.module('trafficPortal.private.servers.deliveryServices' controller: 'TableServerDeliveryServicesController', resolve: { server: function($stateParams, serverService) { - return serverService.getServer($stateParams.serverId); + return serverService.getServers({id: $stateParams.serverId}); }, deliveryServices: function($stateParams, deliveryServiceService) { return deliveryServiceService.getServerDeliveryServices($stateParams.serverId); diff --git a/traffic_portal/app/src/modules/private/servers/edit/index.js b/traffic_portal/app/src/modules/private/servers/edit/index.js index 02fcaffd32..1dbeb3d3e3 100644 --- a/traffic_portal/app/src/modules/private/servers/edit/index.js +++ b/traffic_portal/app/src/modules/private/servers/edit/index.js @@ -28,7 +28,7 @@ module.exports = angular.module('trafficPortal.private.servers.edit', []) controller: 'FormEditServerController', resolve: { server: function($stateParams, serverService) { - return serverService.getServer($stateParams.serverId); + return serverService.getServers({id: $stateParams.serverId}); } } } From f8e5bc56aeabcfed90822a99cc021838fa6e6d0d Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 12:22:07 -0600 Subject: [PATCH 02/33] Added utility function to extract legacy network info from interfaces --- .../src/common/service/utils/ServerUtils.js | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/traffic_portal/app/src/common/service/utils/ServerUtils.js b/traffic_portal/app/src/common/service/utils/ServerUtils.js index 517c49102d..283ad5ee18 100644 --- a/traffic_portal/app/src/common/service/utils/ServerUtils.js +++ b/traffic_portal/app/src/common/service/utils/ServerUtils.js @@ -56,6 +56,74 @@ var ServerUtils = function($window, propertiesModel, userModel) { ); }; + /** + * Converts a server's interfaces into legacy IP information. (primarily + * for use in tables) + * + * It does this by returning only the service addresses of the server. + * + * @param {Array} interfaces - The interfaces of the server to be converted + * @returns {object} An object with all of the legacy properties of non- + * interface-based servers: ipAddress, ipGateway, ipNetmask, ip6Address, + * ip6Gateway, interfaceName, and interfaceMtu + */ + this.toLegacyIPInfo = function(interfaces) { + const legacyInfo = { + ipAddress: null, + ipGateway: null, + ipNetmask: null, + ip6Address: null, + ip6Gateway: null, + interfaceName: null, + interfaceMtu: null + }; + for (const inf of interfaces) { + legacyInfo.interfaceName = inf.name; + legacyInfo.interfaceMtu = inf.mtu; + + for (const ip of inf.ipAddresses) { + if (!ip.serviceAddress) { + continue; + } + + const address = ip.address; + + // we don't validate ips here; if it has a '.' it's ipv4, + // otherwise it's ipv6 + if (address.contains(".")) { + if (address.contains("/")) { + const parts = address.split("/"); + address = parts[0]; + let masklen = Number(parts[1]); + + const mask = []; + for (let i = 0; i < 4; ++i) { + const n = Math.min(masklen, 8); + mask.push(256 - Math.pow(2, 8-n)); + masklen -= n; + } + legacyInfo.ipNetmask = mask.join("."); + } + legacyInfo.ipAddress = address; + legacyInfo.ipGateway = ip.gateway; + } else { + legacyInfo.ip6Address = address; + legacyInfo.ip6Gateway = ip.gateway; + } + + if (legacyInfo.ipAddress && legacyInfo.ip6Address) { + break; + } + } + + if (legacyInfo.ipAddress && legacyInfo.ip6Address) { + break; + } + } + + return legacyInfo; + } + }; ServerUtils.$inject = ['$window', 'propertiesModel', 'userModel']; From 503db26bbd07e67339106d28dcac77c005b22a00 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 12:22:37 -0600 Subject: [PATCH 03/33] Reworked cachegroup servers table to extract legacy network info from interfaces --- .../TableCacheGroupServersController.js | 6 ++++-- .../table.cacheGroupServers.tpl.html | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js index 8ea50a2f08..daac04e8bc 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js @@ -17,11 +17,13 @@ * under the License. */ -var TableCacheGroupsServersController = function(cacheGroup, servers, $controller, $scope, $state, $uibModal, cacheGroupService) { +var TableCacheGroupsServersController = function(cacheGroup, servers, $controller, $scope, $state, $uibModal, cacheGroupService, serverUtils) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); + const serverNetInfo = new Map(servers.map(s=>[s.id, serverUtils.toLegacyIPInfo(s.interfaces)])); + let cacheGroupServersTable; $scope.cacheGroup = cacheGroup; @@ -119,5 +121,5 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $controlle }; -TableCacheGroupsServersController.$inject = ['cacheGroup', 'servers', '$controller', '$scope', '$state', '$uibModal', 'cacheGroupService']; +TableCacheGroupsServersController.$inject = ['cacheGroup', 'servers', '$controller', '$scope', '$state', '$uibModal', 'cacheGroupService', "serverUtils"]; module.exports = TableCacheGroupsServersController; diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html index 2fc47e8615..5e6322e7ac 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html @@ -104,16 +104,16 @@ {{::s.iloIpNetmask}} {{::s.iloUsername}} {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} From f44e2c6e6f6661d7df8a3759ddd8f4f464595ef5 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 12:58:14 -0600 Subject: [PATCH 04/33] webpack can't handle es2015..................... --- .../table/cacheGroupServers/TableCacheGroupServersController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js index daac04e8bc..39f1ddfea9 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js @@ -22,7 +22,7 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $controlle // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); - const serverNetInfo = new Map(servers.map(s=>[s.id, serverUtils.toLegacyIPInfo(s.interfaces)])); + const serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); let cacheGroupServersTable; From 128d56bb1bb7691f1dbf42390ef86a12556a6ffd Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 13:29:49 -0600 Subject: [PATCH 05/33] Roll back ECMAScript feature that browserify can't handle --- .../app/src/common/service/utils/ServerUtils.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/traffic_portal/app/src/common/service/utils/ServerUtils.js b/traffic_portal/app/src/common/service/utils/ServerUtils.js index 283ad5ee18..d7be368294 100644 --- a/traffic_portal/app/src/common/service/utils/ServerUtils.js +++ b/traffic_portal/app/src/common/service/utils/ServerUtils.js @@ -77,27 +77,29 @@ var ServerUtils = function($window, propertiesModel, userModel) { interfaceName: null, interfaceMtu: null }; - for (const inf of interfaces) { + for (let i = 0; i < interfaces.length; ++i) { + const inf = interfaces[i]; legacyInfo.interfaceName = inf.name; legacyInfo.interfaceMtu = inf.mtu; - for (const ip of inf.ipAddresses) { + for (let j = 0; j < inf.ipAddresses.length; ++j) { + const ip = inf.ipAddresses[j]; if (!ip.serviceAddress) { continue; } - const address = ip.address; + let address = ip.address; // we don't validate ips here; if it has a '.' it's ipv4, // otherwise it's ipv6 - if (address.contains(".")) { - if (address.contains("/")) { + if (address.includes(".")) { + if (address.includes("/")) { const parts = address.split("/"); address = parts[0]; let masklen = Number(parts[1]); const mask = []; - for (let i = 0; i < 4; ++i) { + for (let k = 0; k < 4; ++k) { const n = Math.min(masklen, 8); mask.push(256 - Math.pow(2, 8-n)); masklen -= n; From aa466f6090a28e89a74f50d5d179ebc260ecbac9 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 13:33:23 -0600 Subject: [PATCH 06/33] Fixed cachegroup servers table --- .../table/cacheGroupServers/TableCacheGroupServersController.js | 2 +- .../table/cacheGroupServers/table.cacheGroupServers.tpl.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js index 39f1ddfea9..1a538d6fae 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js @@ -22,7 +22,7 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $controlle // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); - const serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); let cacheGroupServersTable; diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html index 5e6322e7ac..df50bddb5a 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html @@ -103,7 +103,7 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} + {{::serverNetInfo.get(s.id).interfaceName}} {{::serverNetInfo.get(s.id).ip6Address}} {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} From 378a6c1194124d7b8583b46ca8dfaa32550d0aa4 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 14:04:13 -0600 Subject: [PATCH 07/33] Fixed CDN servers table and added proper ssh linking --- .../table.cacheGroupServers.tpl.html | 4 ++-- .../table/cdnServers/TableCDNServersController.js | 2 ++ .../table/cdnServers/table.cdnServers.tpl.html | 14 +++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html index df50bddb5a..14940ef4e8 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html @@ -110,8 +110,8 @@ {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::serverNetInfo.get(s.id).ipGateway}} - {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} {{::serverNetInfo.get(s.id).interfaceMtu}} {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} diff --git a/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js b/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js index b6a4dca883..3c89e62879 100644 --- a/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js +++ b/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js @@ -24,6 +24,8 @@ var TableCDNServersController = function(cdn, servers, $controller, $scope) { let cdnServersTable; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.cdn = cdn; $scope.toggleVisibility = function(colName) { diff --git a/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html b/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html index c17266e98d..dc0a4142be 100644 --- a/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html @@ -103,17 +103,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} From 5d8c55898065ce1b4b2ddd6d701aca1bf843845f Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 14:05:40 -0600 Subject: [PATCH 08/33] Fixed broken injection --- .../modules/table/cdnServers/TableCDNServersController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js b/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js index 3c89e62879..25570b9d34 100644 --- a/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js +++ b/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableCDNServersController = function(cdn, servers, $controller, $scope) { +var TableCDNServersController = function(cdn, servers, $controller, $scope, serverUtils) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -53,5 +53,5 @@ var TableCDNServersController = function(cdn, servers, $controller, $scope) { }; -TableCDNServersController.$inject = ['cdn', 'servers', '$controller', '$scope']; +TableCDNServersController.$inject = ['cdn', 'servers', '$controller', '$scope', 'serverUtils']; module.exports = TableCDNServersController; From eea67c2005f3c948dd728763b2121ebaf23fe8fd Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 14:31:27 -0600 Subject: [PATCH 09/33] Added early bail-out for converting servers with no interfaces --- traffic_portal/app/src/common/service/utils/ServerUtils.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/traffic_portal/app/src/common/service/utils/ServerUtils.js b/traffic_portal/app/src/common/service/utils/ServerUtils.js index d7be368294..53682be285 100644 --- a/traffic_portal/app/src/common/service/utils/ServerUtils.js +++ b/traffic_portal/app/src/common/service/utils/ServerUtils.js @@ -77,6 +77,10 @@ var ServerUtils = function($window, propertiesModel, userModel) { interfaceName: null, interfaceMtu: null }; + if (!interfaces) { + return legacyInfo; + } + for (let i = 0; i < interfaces.length; ++i) { const inf = interfaces[i]; legacyInfo.interfaceName = inf.name; From f438ebd78dc045ca917c38b63923b80afdb5c38a Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 27 May 2020 14:32:38 -0600 Subject: [PATCH 10/33] Fixed data-search attributes broken, fixed deliveryservice servers table Also fixed a link acting like a button by converting it to an actual button and adding appropriate styling. Also also fixed inconsistent indentation in the SCSS file I had to edit for that. --- .../app/src/common/modules/table/_table.scss | 114 +++++++++--------- .../table.cacheGroupServers.tpl.html | 14 +-- .../cdnServers/table.cdnServers.tpl.html | 14 +-- .../TableDeliveryServiceServersController.js | 2 + .../table.deliveryServiceServers.tpl.html | 16 +-- 5 files changed, 84 insertions(+), 76 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/_table.scss b/traffic_portal/app/src/common/modules/table/_table.scss index e6a28683e8..c73bb1a6a6 100644 --- a/traffic_portal/app/src/common/modules/table/_table.scss +++ b/traffic_portal/app/src/common/modules/table/_table.scss @@ -16,24 +16,30 @@ */ .x_content { - table { - width: 100% !important; - } + table { + width: 100% !important; + } } .update-column { - text-align: center; - .fa-flag { - font-weight: bold; - } + text-align: center; + .fa-flag { + font-weight: bold; + } +} + +button.action-link { + padding: 5px; + color: #337ab7; + border: none; + background-color: inherit; } .action-link { - padding: 5px; } td span { - line-height: 19px; + line-height: 19px; } .filter-checkbox { @@ -41,71 +47,71 @@ td span { } .table { - margin-bottom: 0px !important; + margin-bottom: 0px !important; } .ds-comment-bold { - font-weight:bold; + font-weight:bold; } .ds-comment-italic { - font-style:italic; - font-size:x-small; + font-style:italic; + font-size:x-small; } .dsComments-container { - border-bottom: 1px solid #111; - margin-top: -2px; + border-bottom: 1px solid #111; + margin-top: -2px; } .ds-comment-cell { - line-height: 1.428571429; - vertical-align: top; - border-top: 1px solid #ddd; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - padding-bottom: 8px; - min-height: 52px; - - &:hover { - background-color: #F1FAF8; - } - - .cell-left { - padding-top: 8px; - margin-left: 8px; - width: 80%; - } - .cell-right { - padding-top: 8px; - margin-right: 8px; - } + line-height: 1.428571429; + vertical-align: top; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + padding-bottom: 8px; + min-height: 52px; + + &:hover { + background-color: #F1FAF8; + } + + .cell-left { + padding-top: 8px; + margin-left: 8px; + width: 80%; + } + .cell-right { + padding-top: 8px; + margin-right: 8px; + } } .ds-comment-nodata { - line-height: 1.428571429; - text-align: center; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - padding-top: 4px; - padding-bottom: 8px; - min-height: 30px; - - &:hover { - background-color: #F1FAF8; - } + line-height: 1.428571429; + text-align: center; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + padding-top: 4px; + padding-bottom: 8px; + min-height: 30px; + + &:hover { + background-color: #F1FAF8; + } } .column-settings { - max-height: 300px; - padding: 10px 20px; - overflow-y: auto; + max-height: 300px; + padding: 10px 20px; + overflow-y: auto; } table.dataTable.params tbody td { - word-break: break-word; - vertical-align: top; + word-break: break-word; + vertical-align: top; } th.center, td.center { - text-align: center; + text-align: center; } .dt-button.btn-link { - text-decoration: underline; + text-decoration: underline; } /* Table context menus */ diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html index 14940ef4e8..da5f209282 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/table.cacheGroupServers.tpl.html @@ -103,17 +103,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::serverNetInfo.get(s.id).interfaceName}} - {{::serverNetInfo.get(s.id).ip6Address}} - {{::serverNetInfo.get(s.id).ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::serverNetInfo.get(s.id).ipGateway}} - {{::serverNetInfo.get(s.id).ipAddress}} - {{::serverNetInfo.get(s.id).interfaceMtu}} - {{::serverNetInfo.get(s.id).ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} diff --git a/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html b/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html index dc0a4142be..612aed5e67 100644 --- a/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/cdnServers/table.cdnServers.tpl.html @@ -103,17 +103,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::serverNetInfo.get(s.id).interfaceName}} - {{::serverNetInfo.get(s.id).ip6Address}} - {{::serverNetInfo.get(s.id).ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::serverNetInfo.get(s.id).ipGateway}} - {{::serverNetInfo.get(s.id).ipAddress}} - {{::serverNetInfo.get(s.id).interfaceMtu}} - {{::serverNetInfo.get(s.id).ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} diff --git a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js index 5d0c0944fb..b25829edf7 100644 --- a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js +++ b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableDeliveryServiceServersController.js @@ -24,6 +24,8 @@ var TableDeliveryServiceServersController = function(deliveryService, servers, $ let dsServersTable; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + var removeServer = function(serverId) { deliveryServiceService.deleteDeliveryServiceServer($scope.deliveryService.id, serverId) .then( diff --git a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html index 9f87ab37a3..89716237d1 100644 --- a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/table.deliveryServiceServers.tpl.html @@ -95,17 +95,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} @@ -127,7 +127,7 @@ - + From c804d552035c151ef2e2b3ec14f3b98b1e0a878f Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 28 May 2020 11:08:31 -0600 Subject: [PATCH 11/33] Fixed physical location servers tables for interfaces --- .../TablePhysLocationServersController.js | 6 ++++-- .../table.physLocationServers.tpl.html | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js b/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js index f329796c57..2cce0936d5 100644 --- a/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js +++ b/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js @@ -17,13 +17,15 @@ * under the License. */ -var TablePhysLocationServersController = function(physLocation, servers, $controller, $scope) { +var TablePhysLocationServersController = function(physLocation, servers, $controller, $scope, serverUtils) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); let physLocServersTable; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.physLocation = physLocation; $scope.toggleVisibility = function(colName) { @@ -51,5 +53,5 @@ var TablePhysLocationServersController = function(physLocation, servers, $contro }; -TablePhysLocationServersController.$inject = ['physLocation', 'servers', '$controller', '$scope']; +TablePhysLocationServersController.$inject = ['physLocation', 'servers', '$controller', '$scope', 'serverUtils']; module.exports = TablePhysLocationServersController; diff --git a/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html b/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html index 08c3f5aa99..d5788f9afe 100644 --- a/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/physLocationServers/table.physLocationServers.tpl.html @@ -93,17 +93,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} From 88c6bbc1427ae0a673905ca4dbc7ff52cb2f450e Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 28 May 2020 11:14:35 -0600 Subject: [PATCH 12/33] Fixed Profile servers tables for interface servers --- .../TableProfileServersController.js | 6 ++++-- .../profileServers/table.profileServers.tpl.html | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js b/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js index eff77f2189..a194030db7 100644 --- a/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js +++ b/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js @@ -17,13 +17,15 @@ * under the License. */ -var TableProfileServersController = function(profile, servers, $controller, $scope) { +var TableProfileServersController = function(profile, servers, $controller, $scope, serverUtils) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); let profileServersTable; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.profile = profile; $scope.toggleVisibility = function(colName) { @@ -51,5 +53,5 @@ var TableProfileServersController = function(profile, servers, $controller, $sco }; -TableProfileServersController.$inject = ['profile', 'servers', '$controller', '$scope']; +TableProfileServersController.$inject = ['profile', 'servers', '$controller', '$scope', 'serverUtils']; module.exports = TableProfileServersController; diff --git a/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html b/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html index a5783b7263..0711fb2050 100644 --- a/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/profileServers/table.profileServers.tpl.html @@ -93,17 +93,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} From 5515fab8aac03c6022c013a9c0b560dd83ab5ff6 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 28 May 2020 11:25:51 -0600 Subject: [PATCH 13/33] Fixed status servers tables for interface servers --- .../statusServers/TableStatusServersController.js | 6 ++++-- .../statusServers/table.statusServers.tpl.html | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js b/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js index b0697059c1..883a89caf4 100644 --- a/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js +++ b/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js @@ -17,13 +17,15 @@ * under the License. */ -var TableStatusServersController = function(status, servers, $controller, $scope) { +var TableStatusServersController = function(status, servers, $controller, $scope, serverUtils) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); let statusServersTable; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.status = status; $scope.toggleVisibility = function(colName) { @@ -51,5 +53,5 @@ var TableStatusServersController = function(status, servers, $controller, $scope }; -TableStatusServersController.$inject = ['status', 'servers', '$controller', '$scope']; +TableStatusServersController.$inject = ['status', 'servers', '$controller', '$scope', 'serverUtils']; module.exports = TableStatusServersController; diff --git a/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html b/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html index 5ddb8a07a5..9975036a0b 100644 --- a/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/statusServers/table.statusServers.tpl.html @@ -93,17 +93,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} From b3395af2521cadd20847376dd9ef28e008913e8d Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 28 May 2020 11:32:16 -0600 Subject: [PATCH 14/33] Fixed types servers tables for interface servers --- .../typeServers/TableTypeServersController.js | 6 ++++-- .../table/typeServers/table.typeServers.tpl.html | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js b/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js index 2930c9d014..1cb7134fef 100644 --- a/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js +++ b/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js @@ -17,13 +17,15 @@ * under the License. */ -var TableTypeServersController = function(type, servers, $controller, $scope) { +var TableTypeServersController = function(type, servers, $controller, $scope, serverUtils) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); let typeServersTable; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.type = type; $scope.toggleVisibility = function(colName) { @@ -51,5 +53,5 @@ var TableTypeServersController = function(type, servers, $controller, $scope) { }; -TableTypeServersController.$inject = ['type', 'servers', '$controller', '$scope']; +TableTypeServersController.$inject = ['type', 'servers', '$controller', '$scope', 'serverUtils']; module.exports = TableTypeServersController; diff --git a/traffic_portal/app/src/common/modules/table/typeServers/table.typeServers.tpl.html b/traffic_portal/app/src/common/modules/table/typeServers/table.typeServers.tpl.html index eb7b7fc8c3..86128e4698 100644 --- a/traffic_portal/app/src/common/modules/table/typeServers/table.typeServers.tpl.html +++ b/traffic_portal/app/src/common/modules/table/typeServers/table.typeServers.tpl.html @@ -93,17 +93,17 @@ {{::s.iloIpGateway}} {{::s.iloIpNetmask}} {{::s.iloUsername}} - {{::s.interfaceName}} - {{::s.ip6Address}} - {{::s.ip6Gateway}} + {{::serverNetInfo.get(s.id).interfaceName}} + {{::serverNetInfo.get(s.id).ip6Address}} + {{::serverNetInfo.get(s.id).ip6Gateway}} {{::getRelativeTime(s.lastUpdated)}} {{::s.mgmtIpAddress}} {{::s.mgmtIpGateway}} {{::s.mgmtIpNetmask}} - {{::s.ipGateway}} - {{::s.ipAddress}} - {{::s.interfaceMtu}} - {{::s.ipNetmask}} + {{::serverNetInfo.get(s.id).ipGateway}} + {{::serverNetInfo.get(s.id).ipAddress}} + {{::serverNetInfo.get(s.id).interfaceMtu}} + {{::serverNetInfo.get(s.id).ipNetmask}} {{::s.offlineReason}} {{::s.physLocation}} {{::s.profile}} From aa6295c97e59f0dfa963a0e428346c0056bfcb69 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 28 May 2020 18:47:48 -0600 Subject: [PATCH 15/33] Stripped bootstrap out of server form This makes it much smaller, but it was also necessary because bootstrap was creating stacking contexts that made it impossible to click on anything in the 'Interfaces' fieldset. Plus I was able to replicate the behavior exactly using only CSS grid. --- .../app/src/common/modules/form/_form.scss | 9 + .../form/server/FormServerController.js | 47 +- .../modules/form/server/form.server.tpl.html | 479 ++++++++---------- .../servers/TableParentServersController.js | 2 + .../src/common/service/utils/ServerUtils.js | 9 + 5 files changed, 286 insertions(+), 260 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/_form.scss b/traffic_portal/app/src/common/modules/form/_form.scss index 984e6fcf6f..7438908ba3 100644 --- a/traffic_portal/app/src/common/modules/form/_form.scss +++ b/traffic_portal/app/src/common/modules/form/_form.scss @@ -40,6 +40,14 @@ } } +.has-error { + color: #a94442; + + input, select, textarea { + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } +} + .btn-link.request-status { font-size: 20px; color: #cd1323; @@ -79,6 +87,7 @@ form label.has-tooltip { width: max-content; max-width: inherit; cursor: auto; + line-height: 1.428; } } diff --git a/traffic_portal/app/src/common/modules/form/server/FormServerController.js b/traffic_portal/app/src/common/modules/form/server/FormServerController.js index 2a394f6f9b..ed2aa8b61b 100644 --- a/traffic_portal/app/src/common/modules/form/server/FormServerController.js +++ b/traffic_portal/app/src/common/modules/form/server/FormServerController.js @@ -19,6 +19,9 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal, formUtils, locationUtils, serverUtils, serverService, cacheGroupService, cdnService, physLocationService, profileService, typeService, messageModel, propertiesModel) { + $scope.IPPattern = serverUtils.IPPattern; + $scope.IPv4Pattern = serverUtils.IPv4Pattern; + var getPhysLocations = function() { physLocationService.getPhysLocations() .then(function(result) { @@ -73,12 +76,9 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal $state.reload(); // reloads all the resolves for the view }; - // supposedly matches IPv4 and IPv6 formats. but actually need one that matches each. todo. - $scope.validations = { - ipRegex: new RegExp(/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/) - }; + $scope.debug = function(){console.log($scope)} - $scope.server = server; + $scope.server = server[0]; $scope.falseTrue = [ { value: true, label: 'true' }, @@ -95,6 +95,43 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal $scope.showChartsButton = propertiesModel.properties.servers.charts.show; + $scope.addIP = function(interface) { + const newIP = { + address: "", + gateway: null, + serviceAddress: false + }; + + if (!interface.ipAddresses) { + interface.ipAddresses = [newIP]; + } else { + interface.ipAddresses.push(newIP); + } + } + + $scope.deleteIP = function(interface, ip) { + interface.ipAddresses.splice(interface.ipAddresses.indexOf(ip), 1); + } + + $scope.addInterface = function() { + const newInf = { + mtu: 1500, + maxBandwidth: null, + monitor: false, + ipAddresses: [] + }; + + if (!$scope.server.interfaces) { + $scope.server.interfaces = [newInf]; + } else { + $scope.server.interfaces.push(newInf); + } + } + + $scope.deleteInterface = function(interface) { + $scope.server.interfaces.splice($scope.server.interfaces.indexOf(interface, 1)); + } + $scope.onCDNChange = function() { $scope.server.profileId = null; // the cdn of the server changed, so we need to blank out the selected server profile (if any) getProfiles($scope.server.cdnId); // and get a new list of profiles (for the selected cdn) diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index 993dfbb3e9..890fc9be42 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -16,14 +16,31 @@ specific language governing permissions and limitations under the License. --> + +
-
+
-
+

-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- - Required - Too Long - Invalid - -
-
-
- -
- - Required - Too Long - Invalid - -
-
-
- -
- - Required - View Details   -
-
-
- -
- - Required - View Details   -
-
-
- -
- - Required - View Details   -
+ + + +
+
-
- -
- - Required - View Details   -
+ + +
+
-
- -
- - Required - Too Long - -
+ + +
+
-
- -
- Is Service Address - - Network IP or IPv6 Address Is Required - Too Long - Invalid - -
+ + +
+ + Required + Too Long + Invalid +
-
- -
- - Required - Too Long - Invalid - -
+ + +
+ + Required + Too Long + Invalid +
-
- -
- - Required - Too Long - Invalid - -
+ + +
+ + Required + View Details  
-
- -
- - Required - Whole Number - -
+ + +
+ + Required + View Details  
-
- -
- - Required - View Details   -
+ + +
+ + Required + View Details  
-
- -
- Is Service Address - - Network IP or IPv6 Address Is Required - Too Long - -
+ + +
+ + Required + View Details  
-
- -
- - Too Long - -
+ +
+ Interfaces +
+ + +
+ + +
+ +
+ IP Addresses +
    +
  • + + + + + +
  • +
+ +
+ +
+ +
+ + + +
+ + Required + View Details  
-
- -
- - Whole Number - -
+ + +
+ + Invalid port number (must be whole number less than 65536) +
-
- -
- - Whole Number - -
+ + +
+ + Invalid port number (must be whole number less than 65536) +
-
- -
- - Too Long - -
+ + +
+ + Too Long +
-
- -
- - Too Long - Invalid - + + +
+ + Invalid +
-
- -
- - Too Long - Invalid - + + +
+ + Invalid +
-
- -
- - Too Long - Invalid - + + +
+ + Invalid +
-
- -
- - Too Long - Invalid - -
+ + +
+ + Invalid +
-
- -
- - Too Long - Invalid - -
+ + +
+ + Invalid +
-
- -
- - Too Long - Invalid - -
+ + +
+ + Invalid +
-
- -
- - Too Long - No Spaces - -
+ + +
+ + Too Long + No Spaces +
-
- -
- - Too Long - -
+ + +
+ + Too Long +
-
- -
- - Too Long - No Spaces - -
+ + +
+ + Too Long + No Spaces +
-
- -
- - Too Long - -
+ + +
+ + Too Long +
-
+ + diff --git a/traffic_portal/app/src/common/modules/table/servers/TableParentServersController.js b/traffic_portal/app/src/common/modules/table/servers/TableParentServersController.js index 5fb0adc192..7aea96e332 100644 --- a/traffic_portal/app/src/common/modules/table/servers/TableParentServersController.js +++ b/traffic_portal/app/src/common/modules/table/servers/TableParentServersController.js @@ -129,6 +129,8 @@ var TableParentServersController = function(servers, $scope, $state, $uibModal, }; $scope.servers = servers; + $scope.serverNetInfo = new Map(servers.map(function(s){return [s.id, serverUtils.toLegacyIPInfo(s.interfaces)];})); + $scope.columns = [ { "name": "Cache Group", "visible": true, "searchable": true }, diff --git a/traffic_portal/app/src/common/service/utils/ServerUtils.js b/traffic_portal/app/src/common/service/utils/ServerUtils.js index 53682be285..4e29ab3bbb 100644 --- a/traffic_portal/app/src/common/service/utils/ServerUtils.js +++ b/traffic_portal/app/src/common/service/utils/ServerUtils.js @@ -19,6 +19,15 @@ var ServerUtils = function($window, propertiesModel, userModel) { + // This RegExp matches any valid IPv4 or IPv6 address + // Source: Rahul Tripathy @ https://stackoverflow.com/questions/32324614/how-to-validate-ipv6-address-in-angularjs#answer-32324868 + // May Neptune have mercy on my soul... + this.IPPattern = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\:){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?(\/(12[0-8]|1[0-1][0-9]|[0-9][0-9]?))?$|^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$/; + + // ... this one just matches valid IPv4 addresses (or netmasks) + this.IPv4Pattern = /^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$/; + + this.isCache = function(server) { return server.type && (server.type.indexOf('EDGE') == 0 || server.type.indexOf('MID') == 0); }; From 05a9e36105bf919c7bc4f6c018015cdba6023979 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Mon, 1 Jun 2020 16:33:26 -0600 Subject: [PATCH 16/33] Finished adding validations to interfaces fields --- .../app/src/common/modules/form/_form.scss | 49 ++++++++++++++ .../form/server/FormServerController.js | 7 +- .../server/edit/FormEditServerController.js | 2 +- .../modules/form/server/form.server.tpl.html | 65 ++++++++----------- .../src/common/service/utils/ServerUtils.js | 4 +- 5 files changed, 86 insertions(+), 41 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/_form.scss b/traffic_portal/app/src/common/modules/form/_form.scss index 7438908ba3..7879e4d366 100644 --- a/traffic_portal/app/src/common/modules/form/_form.scss +++ b/traffic_portal/app/src/common/modules/form/_form.scss @@ -40,6 +40,7 @@ } } +/* Shim for forms without bootstrap */ .has-error { color: #a94442; @@ -48,6 +49,54 @@ } } +.bordered-item { + border-bottom: 1px solid gray; + padding-bottom: 5px; + margin-bottom: 5px; +} + +button.right-button { + float: right; +} + +.form-control-columns { + display: grid; + grid-template-columns: 16.66666667% auto; + grid-row-gap: 15px; + + label { + text-align: right; + padding-right: 2em; + line-height: 2.4; + } + + fieldset { + grid-column: 2; + + div, li { + display: grid; + grid-template-columns: auto 1fr; + } + + div { + grid-column-gap: 20px; + } + + li { + grid-column-gap: 10px; + } + + small.input-error { + grid-column: 2; + } + + input[type="checkbox"] { + align-self: center; + justify-self: start; + } + } +} + .btn-link.request-status { font-size: 20px; color: #cd1323; diff --git a/traffic_portal/app/src/common/modules/form/server/FormServerController.js b/traffic_portal/app/src/common/modules/form/server/FormServerController.js index ed2aa8b61b..76b437afbe 100644 --- a/traffic_portal/app/src/common/modules/form/server/FormServerController.js +++ b/traffic_portal/app/src/common/modules/form/server/FormServerController.js @@ -20,6 +20,7 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal, formUtils, locationUtils, serverUtils, serverService, cacheGroupService, cdnService, physLocationService, profileService, typeService, messageModel, propertiesModel) { $scope.IPPattern = serverUtils.IPPattern; + $scope.IPWithCIDRPattern = serverUtils.IPWithCIDRPattern; $scope.IPv4Pattern = serverUtils.IPv4Pattern; var getPhysLocations = function() { @@ -76,8 +77,6 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal $state.reload(); // reloads all the resolves for the view }; - $scope.debug = function(){console.log($scope)} - $scope.server = server[0]; $scope.falseTrue = [ @@ -96,6 +95,7 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal $scope.showChartsButton = propertiesModel.properties.servers.charts.show; $scope.addIP = function(interface) { + $scope.serverForm.$setDirty(); const newIP = { address: "", gateway: null, @@ -110,10 +110,12 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal } $scope.deleteIP = function(interface, ip) { + $scope.serverForm.$setDirty(); interface.ipAddresses.splice(interface.ipAddresses.indexOf(ip), 1); } $scope.addInterface = function() { + $scope.serverForm.$setDirty(); const newInf = { mtu: 1500, maxBandwidth: null, @@ -129,6 +131,7 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal } $scope.deleteInterface = function(interface) { + $scope.serverForm.$setDirty(); $scope.server.interfaces.splice($scope.server.interfaces.indexOf(interface, 1)); } diff --git a/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js b/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js index ef181daf73..a0de475089 100644 --- a/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js +++ b/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js @@ -37,7 +37,7 @@ var FormEditServerController = function(server, $scope, $controller, $uibModal, }); }; - $scope.serverName = angular.copy(server.hostName); + $scope.serverName = server[0].hostName; $scope.settings = { isNew: false, diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index 890fc9be42..3c019425e6 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -16,25 +16,7 @@ specific language governing permissions and limitations under the License. --> - -
+

-
+
@@ -133,32 +115,43 @@ View Details  
-
+
Interfaces
- - -
- - + + +
+ + + + + Invalid MTU - must be 1500 or 9000 + + + Cannot be negative
IP Addresses
    -
  • - - - - - +
  • + + + Invalid address + Required + + + Invalid gateway + + +
- +
- +
- +
@@ -295,5 +288,3 @@
Deprecated
- - diff --git a/traffic_portal/app/src/common/service/utils/ServerUtils.js b/traffic_portal/app/src/common/service/utils/ServerUtils.js index 4e29ab3bbb..491d58164b 100644 --- a/traffic_portal/app/src/common/service/utils/ServerUtils.js +++ b/traffic_portal/app/src/common/service/utils/ServerUtils.js @@ -19,11 +19,13 @@ var ServerUtils = function($window, propertiesModel, userModel) { - // This RegExp matches any valid IPv4 or IPv6 address + // This RegExp matches any valid IPv4 or IPv6 address - CIDRs allowed on IPv6 addresses only // Source: Rahul Tripathy @ https://stackoverflow.com/questions/32324614/how-to-validate-ipv6-address-in-angularjs#answer-32324868 // May Neptune have mercy on my soul... this.IPPattern = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\:){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?(\/(12[0-8]|1[0-1][0-9]|[0-9][0-9]?))?$|^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$/; + // ... this one allows IPv4 addresses to have CIDR-notation subnets + this.IPWithCIDRPattern = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\:){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?(\/(12[0-8]|1[0-1][0-9]|[0-9][0-9]?))?$|^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)(\/(3[0-2]|[0-2]?[0-9]))?$/; // ... this one just matches valid IPv4 addresses (or netmasks) this.IPv4Pattern = /^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$/; From 9dabd60ca1c68064f1fd158388cfee0abe5bab21 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Mon, 15 Jun 2020 10:33:59 -0600 Subject: [PATCH 17/33] Replaced button symbols with words --- .../src/common/modules/form/server/form.server.tpl.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index 3c019425e6..0d302f3f94 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -144,14 +144,14 @@ Invalid gateway - + - + - + - + From 59365ff116a760edc603e1eccd50536b37f34553 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Mon, 15 Jun 2020 10:35:13 -0600 Subject: [PATCH 18/33] Moved interfaces to bottom of servers form --- .../modules/form/server/form.server.tpl.html | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index 0d302f3f94..a289e234a8 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -115,46 +115,6 @@ View Details  
-
- Interfaces -
- - -
- - - - - Invalid MTU - must be 1500 or 9000 - - - Cannot be negative -
- -
- IP Addresses -
    -
  • - - - Invalid address - Required - - - Invalid gateway - - - -
  • -
- -
- -
- -
- -
+ +
+ + + + + Invalid MTU - must be 1500 or 9000 + + + Cannot be negative +
+ +
+ IP Addresses +
    +
  • + + + Invalid address + Required + + + Invalid gateway + + + +
  • +
+ +
+ + + + + - -
+ +
From 37bfa91cb5663b519556e86254c09ad1e5ae5751 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Mon, 15 Jun 2020 15:06:52 -0600 Subject: [PATCH 22/33] Removed unused injections --- .../cacheGroupServers/TableCacheGroupServersController.js | 4 ++-- .../modules/table/cdnServers/TableCDNServersController.js | 4 ++-- .../physLocationServers/TablePhysLocationServersController.js | 4 ++-- .../table/profileServers/TableProfileServersController.js | 4 ++-- .../table/statusServers/TableStatusServersController.js | 4 ++-- .../modules/table/typeServers/TableTypeServersController.js | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js index 1eb7f740bc..8ea50a2f08 100644 --- a/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js +++ b/traffic_portal/app/src/common/modules/table/cacheGroupServers/TableCacheGroupServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableCacheGroupsServersController = function(cacheGroup, servers, $controller, $scope, $state, $uibModal, cacheGroupService, serverUtils) { +var TableCacheGroupsServersController = function(cacheGroup, servers, $controller, $scope, $state, $uibModal, cacheGroupService) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -119,5 +119,5 @@ var TableCacheGroupsServersController = function(cacheGroup, servers, $controlle }; -TableCacheGroupsServersController.$inject = ['cacheGroup', 'servers', '$controller', '$scope', '$state', '$uibModal', 'cacheGroupService', "serverUtils"]; +TableCacheGroupsServersController.$inject = ['cacheGroup', 'servers', '$controller', '$scope', '$state', '$uibModal', 'cacheGroupService']; module.exports = TableCacheGroupsServersController; diff --git a/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js b/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js index 5638f135a6..b6a4dca883 100644 --- a/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js +++ b/traffic_portal/app/src/common/modules/table/cdnServers/TableCDNServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableCDNServersController = function(cdn, servers, $controller, $scope, serverUtils) { +var TableCDNServersController = function(cdn, servers, $controller, $scope) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -51,5 +51,5 @@ var TableCDNServersController = function(cdn, servers, $controller, $scope, serv }; -TableCDNServersController.$inject = ['cdn', 'servers', '$controller', '$scope', 'serverUtils']; +TableCDNServersController.$inject = ['cdn', 'servers', '$controller', '$scope']; module.exports = TableCDNServersController; diff --git a/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js b/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js index b02b000ef9..f329796c57 100644 --- a/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js +++ b/traffic_portal/app/src/common/modules/table/physLocationServers/TablePhysLocationServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TablePhysLocationServersController = function(physLocation, servers, $controller, $scope, serverUtils) { +var TablePhysLocationServersController = function(physLocation, servers, $controller, $scope) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -51,5 +51,5 @@ var TablePhysLocationServersController = function(physLocation, servers, $contro }; -TablePhysLocationServersController.$inject = ['physLocation', 'servers', '$controller', '$scope', 'serverUtils']; +TablePhysLocationServersController.$inject = ['physLocation', 'servers', '$controller', '$scope']; module.exports = TablePhysLocationServersController; diff --git a/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js b/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js index 7e56c5ae63..eff77f2189 100644 --- a/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js +++ b/traffic_portal/app/src/common/modules/table/profileServers/TableProfileServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableProfileServersController = function(profile, servers, $controller, $scope, serverUtils) { +var TableProfileServersController = function(profile, servers, $controller, $scope) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -51,5 +51,5 @@ var TableProfileServersController = function(profile, servers, $controller, $sco }; -TableProfileServersController.$inject = ['profile', 'servers', '$controller', '$scope', 'serverUtils']; +TableProfileServersController.$inject = ['profile', 'servers', '$controller', '$scope']; module.exports = TableProfileServersController; diff --git a/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js b/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js index aa923c4169..b0697059c1 100644 --- a/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js +++ b/traffic_portal/app/src/common/modules/table/statusServers/TableStatusServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableStatusServersController = function(status, servers, $controller, $scope, serverUtils) { +var TableStatusServersController = function(status, servers, $controller, $scope) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -51,5 +51,5 @@ var TableStatusServersController = function(status, servers, $controller, $scope }; -TableStatusServersController.$inject = ['status', 'servers', '$controller', '$scope', 'serverUtils']; +TableStatusServersController.$inject = ['status', 'servers', '$controller', '$scope']; module.exports = TableStatusServersController; diff --git a/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js b/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js index 072846b1ff..2930c9d014 100644 --- a/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js +++ b/traffic_portal/app/src/common/modules/table/typeServers/TableTypeServersController.js @@ -17,7 +17,7 @@ * under the License. */ -var TableTypeServersController = function(type, servers, $controller, $scope, serverUtils) { +var TableTypeServersController = function(type, servers, $controller, $scope) { // extends the TableParentServersController to inherit common methods angular.extend(this, $controller('TableParentServersController', { servers: servers, $scope: $scope })); @@ -51,5 +51,5 @@ var TableTypeServersController = function(type, servers, $controller, $scope, se }; -TableTypeServersController.$inject = ['type', 'servers', '$controller', '$scope', 'serverUtils']; +TableTypeServersController.$inject = ['type', 'servers', '$controller', '$scope']; module.exports = TableTypeServersController; From 6bd9c2b1fb39b6dff9de21eab5374462ec824eb5 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Wed, 17 Jun 2020 11:59:12 -0600 Subject: [PATCH 23/33] Fixed servers table not displaying legacy interface data properly --- .../modules/table/servers/TableServersController.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js index 85a4dc20f2..1ddc42c5cc 100644 --- a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js +++ b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js @@ -258,8 +258,12 @@ var TableServersController = function(servers, $scope, $state, $uibModal, $windo /** All of the statuses (populated on init). */ let statuses = []; - /** All of the servers - lastUpdated fields converted to actual Dates. */ - $scope.servers = servers.map(function(x){x.lastUpdated = x.lastUpdated ? new Date(x.lastUpdated.replace("+00", "Z")) : x.lastUpdated;}); + /** All of the servers - lastUpdated fields converted to actual Dates, ip fields populated from interfaces */ + $scope.servers = servers.map( + function(x) { + x.lastUpdated = x.lastUpdated ? new Date(x.lastUpdated.replace("+00", "Z")) : x.lastUpdated; + Object.assign(x, serverUtils.toLegacyIPInfo(x.interfaces)); + }); /** The base URL to use for constructing links to server charts. */ $scope.chartsBase = propertiesModel.properties.servers.charts.baseUrl; From c75fb58acf2dfacf8a5b13a99f7579641b7bbe3a Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Mon, 22 Jun 2020 14:38:28 -0600 Subject: [PATCH 24/33] Moved add/remove interface/ip buttons --- .../common/modules/form/server/form.server.tpl.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index f4ea1e98c5..5ad315b2b3 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -242,9 +242,12 @@
Deprecated
- Interfaces + Interfaces
- + + + +
@@ -258,7 +261,7 @@
Deprecated
- IP Addresses + IP Addresses
  • @@ -273,11 +276,8 @@
    Deprecated
-
-
-
- Interfaces + Interfaces
- - + +
@@ -261,7 +261,7 @@
Deprecated
- IP Addresses + IP Addresses
  • @@ -273,7 +273,7 @@
    Deprecated
    Invalid gateway - +
From 78dcf5ae3fdc1b50ba3996363577391fac686614 Mon Sep 17 00:00:00 2001 From: Jeremy Mitchell Date: Wed, 24 Jun 2020 13:01:51 -0600 Subject: [PATCH 29/33] fixes server that is now an array of servers --- .../TableServerServerCapabilitiesController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/traffic_portal/app/src/common/modules/table/serverServerCapabilities/TableServerServerCapabilitiesController.js b/traffic_portal/app/src/common/modules/table/serverServerCapabilities/TableServerServerCapabilitiesController.js index d3b6e1a823..70c3a544be 100644 --- a/traffic_portal/app/src/common/modules/table/serverServerCapabilities/TableServerServerCapabilitiesController.js +++ b/traffic_portal/app/src/common/modules/table/serverServerCapabilities/TableServerServerCapabilitiesController.js @@ -19,7 +19,7 @@ var TableServerServerCapabilitiesController = function(server, serverCapabilities, $scope, $state, $uibModal, locationUtils, serverUtils, serverService, messageModel) { - $scope.server = server; + $scope.server = server[0]; $scope.serverCapabilities = serverCapabilities; From 801417eca389964c1c7a0f3561605fa420c9f83b Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Thu, 25 Jun 2020 16:32:39 -0600 Subject: [PATCH 30/33] Fixed setting max-bandwidth not dirtying the form --- .../app/src/common/modules/form/server/form.server.tpl.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index 6ad5e7375e..efae577973 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -256,7 +256,7 @@
Deprecated
Invalid MTU - must be 1500 or 9000 - + Cannot be negative
From ec83b40dc447b5f06d0186593a8889de30c7dd96 Mon Sep 17 00:00:00 2001 From: Jeremy Mitchell Date: Fri, 26 Jun 2020 14:14:07 -0600 Subject: [PATCH 31/33] fixes server config files table --- .../table/serverConfigFiles/TableServerConfigFilesController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/traffic_portal/app/src/common/modules/table/serverConfigFiles/TableServerConfigFilesController.js b/traffic_portal/app/src/common/modules/table/serverConfigFiles/TableServerConfigFilesController.js index 7cda576f31..13f13c6891 100644 --- a/traffic_portal/app/src/common/modules/table/serverConfigFiles/TableServerConfigFilesController.js +++ b/traffic_portal/app/src/common/modules/table/serverConfigFiles/TableServerConfigFilesController.js @@ -19,7 +19,7 @@ var TableServerConfigFilesController = function(server, serverConfigFiles, $scope, $state, $uibModal, locationUtils) { - $scope.server = server; + $scope.server = server[0]; $scope.configFiles = serverConfigFiles.configFiles; From feca5cbc7a9f2935ae858a81d75d3ac45d5299c2 Mon Sep 17 00:00:00 2001 From: ocket8888 Date: Mon, 29 Jun 2020 14:50:48 -0600 Subject: [PATCH 32/33] Fixed broken update server status --- .../app/src/common/modules/form/server/FormServerController.js | 2 +- .../common/modules/form/server/edit/FormEditServerController.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/server/FormServerController.js b/traffic_portal/app/src/common/modules/form/server/FormServerController.js index 3f0a1dd412..8cb428fce4 100644 --- a/traffic_portal/app/src/common/modules/form/server/FormServerController.js +++ b/traffic_portal/app/src/common/modules/form/server/FormServerController.js @@ -77,7 +77,7 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal $state.reload(); // reloads all the resolves for the view }; - $scope.server = server instanceof Array ? server[0] : server; + $scope.server = server; $scope.falseTrue = [ { value: true, label: 'true' }, diff --git a/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js b/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js index ad92192a33..7fe181cbb5 100644 --- a/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js +++ b/traffic_portal/app/src/common/modules/form/server/edit/FormEditServerController.js @@ -20,7 +20,7 @@ var FormEditServerController = function(server, $anchorScroll, $scope, $controller, $uibModal, locationUtils, serverService, statusService, messageModel) { // extends the FormServerController to inherit common methods - angular.extend(this, $controller('FormServerController', { server: server, $scope: $scope })); + angular.extend(this, $controller('FormServerController', { server: server[0], $scope: $scope })); var getStatuses = function() { statusService.getStatuses() From 321b48d26e376241b711b070b941a05e90240094 Mon Sep 17 00:00:00 2001 From: Jeremy Mitchell Date: Mon, 29 Jun 2020 19:56:38 -0600 Subject: [PATCH 33/33] fixes TP server tests to work with new server form --- .../common/modules/form/server/form.server.tpl.html | 10 +++++----- .../TableServerDeliveryServicesController.js | 2 +- traffic_portal/test/end_to_end/servers/pageData.js | 12 +++++------- .../test/end_to_end/servers/servers-spec.js | 9 +++------ 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html index efae577973..1d33716a91 100644 --- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html +++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html @@ -242,10 +242,10 @@
Deprecated
- Interfaces + Interfaces
- + @@ -261,18 +261,18 @@
Deprecated
- IP Addresses + IP Addresses
  • - + Invalid address Required Invalid gateway - +
diff --git a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js index feeb2aa275..aefcf55091 100644 --- a/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js +++ b/traffic_portal/app/src/common/modules/table/serverDeliveryServices/TableServerDeliveryServicesController.js @@ -33,7 +33,7 @@ var TableServerDeliveryServicesController = function(server, deliveryServices, $ ); }; - $scope.server = server; + $scope.server = server[0]; // adds some items to the base delivery services context menu $scope.contextMenuItems.splice(2, 0, diff --git a/traffic_portal/test/end_to_end/servers/pageData.js b/traffic_portal/test/end_to_end/servers/pageData.js index 5a30dc9a7e..8276e5b051 100644 --- a/traffic_portal/test/end_to_end/servers/pageData.js +++ b/traffic_portal/test/end_to_end/servers/pageData.js @@ -30,18 +30,16 @@ module.exports = function(){ this.cachegroup=element(by.name('cachegroup')); this.type=element(by.name('type')); this.profile=element(by.name('profile')); - this.interfaceName=element(by.name('interfaceName')); - this.ipAddress=element(by.name('ipAddress')); - this.ipNetmask=element(by.name('ipNetmask')); - this.ipGateway=element(by.name('ipGateway')); - this.interfaceMtu=element(by.name('interfaceMtu')); this.physLocation=element(by.name('physLocation')); + this.addInterfaceBtn=element(by.name('addInterfaceBtn')); + this.addIPBtn=element(by.name('addIPBtn')); + this.interfaceName=element(by.css('.interface-name-input')); + this.ipAddress=element(by.css('.ip-input')); + this.ipIsService=element(by.css('.service-addr-cb')); this.createButton=element(by.buttonText('Create')); this.deleteButton=element(by.buttonText('Delete')); this.updateButton=element(by.buttonText('Update')); this.submitButton=element(by.buttonText('Submit')); - this.searchFilter=element(by.id('serversTable_filter')).element(by.css('label input')); this.confirmWithNameInput=element(by.name('confirmWithNameInput')); this.deletePermanentlyButton=element(by.buttonText('Delete Permanently')); - this.ipIsService=element(by.name('ipIsService')); }; \ No newline at end of file diff --git a/traffic_portal/test/end_to_end/servers/servers-spec.js b/traffic_portal/test/end_to_end/servers/servers-spec.js index 1f5d240783..dd19355d78 100644 --- a/traffic_portal/test/end_to_end/servers/servers-spec.js +++ b/traffic_portal/test/end_to_end/servers/servers-spec.js @@ -30,8 +30,6 @@ describe('Traffic Portal Servers Test Suite', function() { domainName: "servertest.com", interfaceName: "testInterfaceName", ipAddress: "10.42.80.118", - ipNetmask: "255.255.255.252", - ipGateway: "10.42.80.117", interfaceMtu: "9000", }; @@ -58,13 +56,12 @@ describe('Traffic Portal Servers Test Suite', function() { commonFunctions.selectDropdownbyNum(pageData.cachegroup, 1); element(by.css("#type [label='EDGE']")).click(); commonFunctions.selectDropdownbyNum(pageData.profile, 1); + commonFunctions.selectDropdownbyNum(pageData.physLocation, 1); + pageData.addInterfaceBtn.click(); pageData.interfaceName.sendKeys(mockVals.interfaceName); + pageData.addIPBtn.click(); pageData.ipAddress.sendKeys(mockVals.ipAddress); - pageData.ipNetmask.sendKeys(mockVals.ipNetmask); - pageData.ipGateway.sendKeys(mockVals.ipGateway); pageData.ipIsService.click(); - pageData.interfaceMtu.sendKeys(mockVals.interfaceMtu); - commonFunctions.selectDropdownbyNum(pageData.physLocation, 1); expect(pageData.createButton.isEnabled()).toBe(true); pageData.createButton.click(); expect(browser.getCurrentUrl().then(commonFunctions.urlPath)).toEqual(commonFunctions.urlPath(browser.baseUrl)+"#!/servers");