feat: declare and execute SCUM guided installs
This commit is contained in:
@@ -38,6 +38,13 @@ func (svc *CoreService) UpdateServerDeploymentForSession(sessionID, serverInstan
|
||||
if instance.State == domain.ServerInstanceStateInstalling || instance.State == domain.ServerInstanceStateRunning || instance.State == domain.ServerInstanceStateDeleted {
|
||||
return domain.ServerDeploymentView{}, validationError("deployment definition cannot be changed while the server is active")
|
||||
}
|
||||
seenClearFields := map[string]bool{}
|
||||
for _, field := range update.ClearFields {
|
||||
if seenClearFields[field] || field != "serverRoot" && field != "workingDirectory" && field != "installCommand" && field != "startCommand" && field != "stopCommand" && field != "statusCommand" && field != "shell" {
|
||||
return domain.ServerDeploymentView{}, validationError("deployment clearFields contains an invalid field")
|
||||
}
|
||||
seenClearFields[field] = true
|
||||
}
|
||||
definition := mergeDeploymentDefinition(instance.Deployment, update)
|
||||
definition.Revision = instance.Deployment.Revision + 1
|
||||
definition.UpdatedAt = svc.now()
|
||||
@@ -194,6 +201,24 @@ func deploymentShellCapability(shell domain.ServerCommandShell) string {
|
||||
|
||||
func mergeDeploymentDefinition(current domain.ServerDeploymentDefinition, update domain.ServerDeploymentUpdate) domain.ServerDeploymentDefinition {
|
||||
definition := domain.CopyServerDeploymentDefinition(current)
|
||||
for _, field := range update.ClearFields {
|
||||
switch field {
|
||||
case "serverRoot":
|
||||
definition.ServerRoot = ""
|
||||
case "workingDirectory":
|
||||
definition.WorkingDirectory = ""
|
||||
case "installCommand":
|
||||
definition.InstallCommand = ""
|
||||
case "startCommand":
|
||||
definition.StartCommand = ""
|
||||
case "stopCommand":
|
||||
definition.StopCommand = ""
|
||||
case "statusCommand":
|
||||
definition.StatusCommand = ""
|
||||
case "shell":
|
||||
definition.Shell = domain.ServerCommandShellNone
|
||||
}
|
||||
}
|
||||
definition.Mode = update.Mode
|
||||
if update.ProfileKey != "" {
|
||||
definition.ProfileKey = update.ProfileKey
|
||||
@@ -222,7 +247,9 @@ func mergeDeploymentDefinition(current domain.ServerDeploymentDefinition, update
|
||||
if update.StatusCommand != "" {
|
||||
definition.StatusCommand = update.StatusCommand
|
||||
}
|
||||
definition.Shell = update.Shell
|
||||
if update.ShellSet {
|
||||
definition.Shell = update.Shell
|
||||
}
|
||||
return definition
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user