separate server run bindings from deployment targets
This commit is contained in:
@@ -53,6 +53,11 @@ func (svc *CoreService) CreateServerInstanceWorkflow(create domain.ServerLifecyc
|
||||
UpdatedAt: stamp,
|
||||
Deployment: create.Deployment,
|
||||
}
|
||||
if strings.TrimSpace(create.DeploymentTargetID) != "" {
|
||||
instance.DeploymentTargetID = create.DeploymentTargetID
|
||||
instance.RunEndpointID = dedicatedRunEndpointID(create.ID)
|
||||
instance.State = domain.ServerInstanceStateDraft
|
||||
}
|
||||
if instance.Deployment.Mode != "" {
|
||||
instance.Deployment.ProfileKey = create.ProfileKey
|
||||
instance.Deployment.RuntimeBindings = domain.CopyStringMap(create.Bindings)
|
||||
@@ -71,6 +76,35 @@ func (svc *CoreService) CreateServerInstanceWorkflow(create domain.ServerLifecyc
|
||||
instance.ConfigContent = buildLogicalServerConfig(instance)
|
||||
instance.ConfigChecksum = validator.BytesChecksum([]byte(instance.ConfigContent))
|
||||
instance.ConfigUpdatedAt = stamp
|
||||
if strings.TrimSpace(create.DeploymentTargetID) != "" {
|
||||
target, targetErr := svc.store.RunEndpoints().Get(create.DeploymentTargetID)
|
||||
if targetErr != nil {
|
||||
return domain.ServerLifecycleResult{}, fmt.Errorf("get deployment target dependency: %w", targetErr)
|
||||
}
|
||||
if err := svc.validateRunnableEndpoint(target, domain.JobCapabilityDistributionBuild); err != nil {
|
||||
return domain.ServerLifecycleResult{}, err
|
||||
}
|
||||
if err := validator.ValidateServerInstance(instance); err != nil {
|
||||
return domain.ServerLifecycleResult{}, err
|
||||
}
|
||||
var binding domain.RuntimeBinding
|
||||
if strings.TrimSpace(create.ProfileKey) != "" {
|
||||
var bindingErr error
|
||||
binding, bindingErr = svc.buildRuntimeBinding(instance, plugin, domain.RuntimeBindingUpdate{ProfileKey: create.ProfileKey, Bindings: create.Bindings}, true)
|
||||
if bindingErr != nil {
|
||||
return domain.ServerLifecycleResult{}, bindingErr
|
||||
}
|
||||
}
|
||||
if err := svc.store.ServerInstances().Create(instance); err != nil {
|
||||
return domain.ServerLifecycleResult{}, err
|
||||
}
|
||||
if binding.ID != "" {
|
||||
if err := svc.store.RuntimeBindings().Create(binding); err != nil {
|
||||
return domain.ServerLifecycleResult{}, err
|
||||
}
|
||||
}
|
||||
return domain.CopyServerLifecycleResult(domain.ServerLifecycleResult{Accepted: true, Action: domain.ServerLifecycleActionCreate, Instance: instance}), nil
|
||||
}
|
||||
if strings.TrimSpace(create.RunEndpointID) == "" {
|
||||
instance.State = domain.ServerInstanceStateDraft
|
||||
}
|
||||
@@ -142,6 +176,10 @@ func (svc *CoreService) CreateServerInstanceWorkflow(create domain.ServerLifecyc
|
||||
}), nil
|
||||
}
|
||||
|
||||
func dedicatedRunEndpointID(serverInstanceID string) string {
|
||||
return "server-run-" + serverInstanceID
|
||||
}
|
||||
|
||||
func (svc *CoreService) CreateServerInstanceWorkflowForSession(sessionID string, create domain.ServerLifecycleCreate) (domain.ServerLifecycleResult, error) {
|
||||
user, err := svc.GetCurrentUser(sessionID)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user