Files
browser/platform/domain/server_lifecycle.go
T

74 lines
1.9 KiB
Go

package domain
type ServerLifecycleAction string
const (
ServerLifecycleActionCreate ServerLifecycleAction = "create"
ServerLifecycleActionStart ServerLifecycleAction = "start"
ServerLifecycleActionStop ServerLifecycleAction = "stop"
ServerLifecycleActionStatus ServerLifecycleAction = "status"
)
const (
LifecycleCapabilityInstall = "process.install"
LifecycleCapabilityStart = "process.start"
LifecycleCapabilityStop = "process.stop"
LifecycleCapabilityStatus = "process.status"
)
type ServerLifecycleCreate struct {
ID string
PluginID string
RunEndpointID string
Name string
OwnerUserID string
IdempotencyKey string
ProfileKey string
Bindings map[string]string
Deployment ServerDeploymentDefinition
}
type ServerLifecycleCommand struct {
ServerInstanceID string
ExpectedConfigVersion int
IdempotencyKey string
}
type ServerLifecycleResult struct {
Accepted bool
Action ServerLifecycleAction
Instance ServerInstance
Job Job
}
func LifecycleCapabilityForAction(action ServerLifecycleAction) string {
switch action {
case ServerLifecycleActionCreate:
return LifecycleCapabilityInstall
case ServerLifecycleActionStart:
return LifecycleCapabilityStart
case ServerLifecycleActionStop:
return LifecycleCapabilityStop
case ServerLifecycleActionStatus:
return LifecycleCapabilityStatus
default:
return ""
}
}
func CopyServerLifecycleCreate(create ServerLifecycleCreate) ServerLifecycleCreate {
create.Bindings = CopyStringMap(create.Bindings)
create.Deployment = CopyServerDeploymentDefinition(create.Deployment)
return create
}
func CopyServerLifecycleCommand(command ServerLifecycleCommand) ServerLifecycleCommand {
return command
}
func CopyServerLifecycleResult(result ServerLifecycleResult) ServerLifecycleResult {
result.Instance = CopyServerInstance(result.Instance)
result.Job = CopyJob(result.Job)
return result
}