From dbb9a21384d956febf8e236d03642dd3141118c6 Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Thu, 11 Mar 2021 22:00:05 +0200 Subject: [PATCH] fix(endpoints): use default edge checkin interval if n/a (#4909) --- api/http/handler/endpoints/endpoint_list.go | 8 ++++++++ app/portainer/views/home/homeController.js | 16 ++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/api/http/handler/endpoints/endpoint_list.go b/api/http/handler/endpoints/endpoint_list.go index 30437535a..c1dd76209 100644 --- a/api/http/handler/endpoints/endpoint_list.go +++ b/api/http/handler/endpoints/endpoint_list.go @@ -66,6 +66,11 @@ func (handler *Handler) endpointList(w http.ResponseWriter, r *http.Request) *ht return &httperror.HandlerError{http.StatusInternalServerError, "Unable to retrieve endpoints from the database", err} } + settings, err := handler.DataStore.Settings().Settings() + if err != nil { + return &httperror.HandlerError{http.StatusInternalServerError, "Unable to retrieve settings from the database", err} + } + securityContext, err := security.RetrieveRestrictedRequestContext(r) if err != nil { return &httperror.HandlerError{http.StatusInternalServerError, "Unable to retrieve info from request context", err} @@ -108,6 +113,9 @@ func (handler *Handler) endpointList(w http.ResponseWriter, r *http.Request) *ht for idx := range paginatedEndpoints { hideFields(&paginatedEndpoints[idx]) paginatedEndpoints[idx].ComposeSyntaxMaxVersion = handler.ComposeStackManager.ComposeSyntaxMaxVersion() + if paginatedEndpoints[idx].EdgeCheckinInterval == 0 { + paginatedEndpoints[idx].EdgeCheckinInterval = settings.EdgeAgentCheckinInterval + } } w.Header().Set("X-Total-Count", strconv.Itoa(filteredEndpointCount)) diff --git a/app/portainer/views/home/homeController.js b/app/portainer/views/home/homeController.js index ba4c83610..a3fe0ddcc 100644 --- a/app/portainer/views/home/homeController.js +++ b/app/portainer/views/home/homeController.js @@ -13,8 +13,7 @@ angular EndpointProvider, StateManager, ModalService, - MotdService, - SettingsService + MotdService ) { $scope.state = { connectingToEdgeEndpoint: false, @@ -83,7 +82,7 @@ angular var groups = data.groups; EndpointHelper.mapGroupNameToEndpoint(endpoints, groups); EndpointProvider.setEndpoints(endpoints); - deferred.resolve({ endpoints: decorateEndpoints(endpoints), totalCount: data.endpoints.totalCount }); + deferred.resolve({ endpoints: endpoints, totalCount: data.endpoints.totalCount }); }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to retrieve endpoint information'); @@ -99,15 +98,14 @@ angular }); try { - const [{ totalCount, endpoints }, tags, settings] = await Promise.all([getPaginatedEndpoints(0, 100), TagService.tags(), SettingsService.settings()]); + const [{ totalCount, endpoints }, tags] = await Promise.all([getPaginatedEndpoints(0, 100), TagService.tags()]); $scope.tags = tags; - $scope.defaultEdgeCheckInInterval = settings.EdgeAgentCheckinInterval; $scope.totalCount = totalCount; if (totalCount > 100) { $scope.endpoints = []; } else { - $scope.endpoints = decorateEndpoints(endpoints); + $scope.endpoints = endpoints; } } catch (err) { Notifications.error('Failed loading page data', err); @@ -115,10 +113,4 @@ angular } initView(); - - function decorateEndpoints(endpoints) { - return endpoints.map((endpoint) => { - return { ...endpoint, EdgeCheckinInterval: endpoint.EdgeAgentCheckinInterval || $scope.defaultEdgeCheckInInterval }; - }); - } });