|
|
|
@ -4194,7 +4194,7 @@ func (a *Agent) EnableServiceMaintenance(serviceID structs.ServiceID, reason, to
|
|
|
|
|
|
|
|
|
|
// Check if maintenance mode is not already enabled
|
|
|
|
|
checkID := serviceMaintCheckID(serviceID)
|
|
|
|
|
if a.State.Check(checkID) != nil && a.State.Check(checkID).Status != api.HealthPassing {
|
|
|
|
|
if a.State.Check(checkID) != nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -4203,7 +4203,7 @@ func (a *Agent) EnableServiceMaintenance(serviceID structs.ServiceID, reason, to
|
|
|
|
|
reason = defaultServiceMaintReason
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// New Critical Health Check
|
|
|
|
|
// Create and register the critical health check
|
|
|
|
|
check := &structs.HealthCheck{
|
|
|
|
|
Node: a.config.NodeName,
|
|
|
|
|
CheckID: checkID.ID,
|
|
|
|
@ -4215,17 +4215,7 @@ func (a *Agent) EnableServiceMaintenance(serviceID structs.ServiceID, reason, to
|
|
|
|
|
Type: "maintenance",
|
|
|
|
|
EnterpriseMeta: checkID.EnterpriseMeta,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If check exists, update status, else create a new check
|
|
|
|
|
if a.State.Check(checkID) != nil {
|
|
|
|
|
a.State.UpdateCheck(checkID, api.HealthCritical, "")
|
|
|
|
|
} else {
|
|
|
|
|
err := a.AddCheck(check, nil, true, token, ConfigSourceLocal)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a.AddCheck(check, nil, true, token, ConfigSourceLocal)
|
|
|
|
|
a.logger.Info("Service entered maintenance mode", "service", serviceID.String())
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
@ -4248,11 +4238,9 @@ func (a *Agent) DisableServiceMaintenance(serviceID structs.ServiceID) error {
|
|
|
|
|
// Update check to trigger an event for watchers
|
|
|
|
|
a.State.UpdateCheck(checkID, api.HealthPassing, "")
|
|
|
|
|
// Make sure state change is propagated
|
|
|
|
|
err := a.State.SyncFull()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a.State.SyncChanges()
|
|
|
|
|
// Deregister the maintenance check
|
|
|
|
|
a.RemoveCheck(checkID, true)
|
|
|
|
|
a.logger.Info("Service left maintenance mode", "service", serviceID.String())
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|