feat(docker/service): update correctly the service when user remove healthcheck

This commit is contained in:
alice groux
2021-02-02 16:24:08 +01:00
parent 13497cca16
commit 795d4ccdb1
2 changed files with 27 additions and 14 deletions

View File

@@ -112,7 +112,7 @@
<button
type="button"
class="btn btn-primary btn-sm"
ng-disabled="(service.HealthCheck.CustomHealthcheck && !service.HealthCheck.Test[1]) || !hasChanges(service, ['HealthCheck.CustomHealthcheck', 'HealthCheck.Test[1]', 'HealthCheck.Interval', 'HealthCheck.Timeout', 'HealthCheck.StartPeriod', 'HealthCheck.Retries'])"
ng-disabled="(service.HealthCheck.CustomHealthcheck && !service.HealthCheck.Test[1]) || !hasChanges(service, ['HealthCheck.CustomHealthcheck', 'HealthCheck.CustomHealthcheck', 'HealthCheck.Test[1]', 'HealthCheck.Interval', 'HealthCheck.Timeout', 'HealthCheck.StartPeriod', 'HealthCheck.Retries'])"
ng-click="updateService(service)"
>Apply changes</button
>
@@ -121,7 +121,8 @@
</button>
<ul class="dropdown-menu">
<li
><a ng-click="cancelChanges(service, ['HealthCheck.Test[1]', 'HealthCheck.Interval', 'HealthCheck.Timeout', 'HealthCheck.StartPeriod', 'HealthCheck.Retries'])"
><a
ng-click="cancelChanges(service, ['HealthCheck.CustomHealthcheck', 'HealthCheck.Test[1]', 'HealthCheck.Interval', 'HealthCheck.Timeout', 'HealthCheck.StartPeriod', 'HealthCheck.Retries'])"
>Reset changes</a
></li
>

View File

@@ -463,15 +463,27 @@ angular.module('portainer.docker').controller('ServiceController', [
Window: ServiceHelper.translateHumanDurationToNanos(service.RestartWindow) || 0,
};
}
if ($scope.hasChanges(service, ['HealthCheck.Test[1]', 'HealthCheck.Interval', 'HealthCheck.Timeout', 'HealthCheck.StartPeriod', 'HealthCheck.Retries'])) {
config.TaskTemplate.ContainerSpec.HealthCheck = {
Test: ['CMD-SHELL', service.HealthCheck.Test[1]],
Interval: ServiceHelper.translateHumanDurationToNanos(service.HealthCheck.Interval),
Timeout: ServiceHelper.translateHumanDurationToNanos(service.HealthCheck.Timeout),
StartPeriod: ServiceHelper.translateHumanDurationToNanos(service.HealthCheck.StartPeriod),
Retries: service.HealthCheck.Retries || 3,
};
if (
$scope.hasChanges(service, [
'HealthCheck.CustomHealthcheck',
'HealthCheck.Test[1]',
'HealthCheck.Interval',
'HealthCheck.Timeout',
'HealthCheck.StartPeriod',
'HealthCheck.Retries',
])
) {
if (service.HealthCheck.CustomHealthcheck) {
config.TaskTemplate.ContainerSpec.HealthCheck = {
Test: ['CMD-SHELL', service.HealthCheck.Test[1]],
Interval: ServiceHelper.translateHumanDurationToNanos(service.HealthCheck.Interval),
Timeout: ServiceHelper.translateHumanDurationToNanos(service.HealthCheck.Timeout),
StartPeriod: ServiceHelper.translateHumanDurationToNanos(service.HealthCheck.StartPeriod),
Retries: service.HealthCheck.Retries || 3,
};
} else {
delete config.TaskTemplate.ContainerSpec.HealthCheck;
}
}
config.TaskTemplate.LogDriver = null;
@@ -660,9 +672,9 @@ angular.module('portainer.docker').controller('ServiceController', [
service.UpdateDelay = ServiceHelper.translateNanosToHumanDuration(service.UpdateDelay) || '0s';
service.StopGracePeriod = service.StopGracePeriod ? ServiceHelper.translateNanosToHumanDuration(service.StopGracePeriod) : '';
if (service.HealthCheck) {
service.HealthCheck.Interval = ServiceHelper.translateNanosToHumanDuration(service.HealthCheck.Interval);
service.HealthCheck.Timeout = ServiceHelper.translateNanosToHumanDuration(service.HealthCheck.Timeout);
service.HealthCheck.StartPeriod = ServiceHelper.translateNanosToHumanDuration(service.HealthCheck.StartPeriod);
service.HealthCheck.Interval = service.HealthCheck.Interval ? ServiceHelper.translateNanosToHumanDuration(service.HealthCheck.Interval) : undefined;
service.HealthCheck.Timeout = service.HealthCheck.Timeout ? ServiceHelper.translateNanosToHumanDuration(service.HealthCheck.Timeout) : undefined;
service.HealthCheck.StartPeriod = service.HealthCheck.StartPeriod ? ServiceHelper.translateNanosToHumanDuration(service.HealthCheck.StartPeriod) : undefined;
}
}