mirror of https://github.com/portainer/portainer
fix(services): use the Public URL instead of a manager IP (#1665)
parent
ae5416583e
commit
b5e256c967
|
@ -114,7 +114,7 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a ng-if="item.Ports && item.Ports.length > 0 && $ctrl.swarmManagerIp && p.PublishedPort" ng-repeat="p in item.Ports" class="image-tag" ng-href="http://{{ $ctrl.swarmManagerIp }}:{{ p.PublishedPort }}" target="_blank">
|
<a ng-if="item.Ports && item.Ports.length > 0 && p.PublishedPort" ng-repeat="p in item.Ports" class="image-tag" ng-href="http://{{ $ctrl.publicUrl }}:{{ p.PublishedPort }}" target="_blank">
|
||||||
<i class="fa fa-external-link" aria-hidden="true"></i> {{ p.PublishedPort }}:{{ p.TargetPort }}
|
<i class="fa fa-external-link" aria-hidden="true"></i> {{ p.PublishedPort }}:{{ p.TargetPort }}
|
||||||
</a>
|
</a>
|
||||||
<span ng-if="!item.Ports || item.Ports.length === 0 || !$ctrl.swarmManagerIp" >-</span>
|
<span ng-if="!item.Ports || item.Ports.length === 0 || !$ctrl.swarmManagerIp" >-</span>
|
||||||
|
|
|
@ -12,7 +12,7 @@ angular.module('portainer.docker').component('servicesDatatable', {
|
||||||
showOwnershipColumn: '<',
|
showOwnershipColumn: '<',
|
||||||
removeAction: '<',
|
removeAction: '<',
|
||||||
scaleAction: '<',
|
scaleAction: '<',
|
||||||
swarmManagerIp: '<',
|
publicUrl: '<',
|
||||||
forceUpdateAction: '<',
|
forceUpdateAction: '<',
|
||||||
showForceUpdateButton: '<'
|
showForceUpdateButton: '<'
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,16 +9,6 @@ angular.module('portainer.docker')
|
||||||
Labels: node.Spec.Labels,
|
Labels: node.Spec.Labels,
|
||||||
Availability: node.Spec.Availability
|
Availability: node.Spec.Availability
|
||||||
};
|
};
|
||||||
},
|
|
||||||
getManagerIP: function(nodes) {
|
|
||||||
var managerIp;
|
|
||||||
for (var n in nodes) {
|
|
||||||
if (undefined === nodes[n].ManagerStatus || nodes[n].ManagerStatus.Reachability !== 'reachable') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
managerIp = nodes[n].ManagerStatus.Addr.split(':')[0];
|
|
||||||
}
|
|
||||||
return managerIp;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}]);
|
}]);
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
remove-action="removeAction"
|
remove-action="removeAction"
|
||||||
scale-action="scaleAction"
|
scale-action="scaleAction"
|
||||||
force-update-action="forceUpdateAction"
|
force-update-action="forceUpdateAction"
|
||||||
swarm-manager-ip="swarmManagerIP"
|
public-url="state.publicURL"
|
||||||
show-force-update-button="applicationState.endpoint.apiVersion >= 1.25"
|
show-force-update-button="applicationState.endpoint.apiVersion >= 1.25"
|
||||||
></services-datatable>
|
></services-datatable>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
angular.module('portainer.docker')
|
angular.module('portainer.docker')
|
||||||
.controller('ServicesController', ['$q', '$scope', '$state', 'Service', 'ServiceService', 'ServiceHelper', 'Notifications', 'Task', 'Node', 'NodeHelper', 'ModalService',
|
.controller('ServicesController', ['$q', '$scope', '$state', 'Service', 'ServiceService', 'ServiceHelper', 'Notifications', 'Task', 'Node', 'ModalService', 'EndpointProvider',
|
||||||
function ($q, $scope, $state, Service, ServiceService, ServiceHelper, Notifications, Task, Node, NodeHelper, ModalService) {
|
function ($q, $scope, $state, Service, ServiceService, ServiceHelper, Notifications, Task, Node, ModalService, EndpointProvider) {
|
||||||
|
|
||||||
|
$scope.state = {
|
||||||
|
publicURL: EndpointProvider.endpointPublicURL()
|
||||||
|
};
|
||||||
|
|
||||||
$scope.scaleAction = function scaleService(service) {
|
$scope.scaleAction = function scaleService(service) {
|
||||||
var config = ServiceHelper.serviceToConfig(service.Model);
|
var config = ServiceHelper.serviceToConfig(service.Model);
|
||||||
|
@ -88,7 +92,6 @@ function ($q, $scope, $state, Service, ServiceService, ServiceHelper, Notificati
|
||||||
nodes: Node.query({}).$promise
|
nodes: Node.query({}).$promise
|
||||||
})
|
})
|
||||||
.then(function success(data) {
|
.then(function success(data) {
|
||||||
$scope.swarmManagerIP = NodeHelper.getManagerIP(data.nodes);
|
|
||||||
$scope.services = data.services.map(function (service) {
|
$scope.services = data.services.map(function (service) {
|
||||||
var runningTasks = data.tasks.filter(function (task) {
|
var runningTasks = data.tasks.filter(function (task) {
|
||||||
return task.ServiceID === service.ID && task.Status.State === 'running';
|
return task.ServiceID === service.ID && task.Status.State === 'running';
|
||||||
|
|
Loading…
Reference in New Issue