62 lines
2.3 KiB
Go
62 lines
2.3 KiB
Go
package stackutils
|
|
|
|
import (
|
|
"time"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
)
|
|
|
|
// PrepareStackStatusForDeployment transitions a stack into the deploying state before a deployment begins.
|
|
// It saves the current status in DeploymentStartStatus so that pre-deployment actions can be determined
|
|
// (e.g. whether to undeploy before redeploying), sets Status to StackStatusDeploying, and resets the
|
|
// DeploymentStatus history with a single deploying entry.
|
|
func PrepareStackStatusForDeployment(stack *portainer.Stack) {
|
|
stack.DeploymentStartStatus = stack.Status
|
|
stack.Status = portainer.StackStatusDeploying
|
|
stack.DeploymentStatus = []portainer.StackDeploymentStatus{
|
|
{Status: portainer.StackStatusDeploying, Time: time.Now().Unix()},
|
|
}
|
|
}
|
|
|
|
// UpdateStackStatusFromDeploymentResult updates a stack's status after a deployment attempt completes.
|
|
// On success (err == nil) the stack is marked active; on failure it is marked as errored with the error message recorded.
|
|
func UpdateStackStatusFromDeploymentResult(stack *portainer.Stack, err error) {
|
|
if err != nil {
|
|
stack.Status = portainer.StackStatusError
|
|
stack.DeploymentStatus = append(stack.DeploymentStatus, portainer.StackDeploymentStatus{
|
|
Status: portainer.StackStatusError,
|
|
Time: time.Now().Unix(),
|
|
Message: err.Error(),
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
stack.Status = portainer.StackStatusActive
|
|
stack.DeploymentStatus = append(stack.DeploymentStatus, portainer.StackDeploymentStatus{
|
|
Status: portainer.StackStatusActive,
|
|
Time: time.Now().Unix(),
|
|
})
|
|
}
|
|
|
|
// UpdateStackStatusFromUndeploymentResult updates a stack's status after an undeployment attempt completes.
|
|
// On success (err == nil) the stack is marked inactive; on failure it is marked as errored with the error message recorded.
|
|
func UpdateStackStatusFromUndeploymentResult(stack *portainer.Stack, err error) {
|
|
if err != nil {
|
|
stack.Status = portainer.StackStatusError
|
|
stack.DeploymentStatus = append(stack.DeploymentStatus, portainer.StackDeploymentStatus{
|
|
Status: portainer.StackStatusError,
|
|
Time: time.Now().Unix(),
|
|
Message: err.Error(),
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
stack.Status = portainer.StackStatusInactive
|
|
stack.DeploymentStatus = append(stack.DeploymentStatus, portainer.StackDeploymentStatus{
|
|
Status: portainer.StackStatusInactive,
|
|
Time: time.Now().Unix(),
|
|
})
|
|
}
|