功能修改
This commit is contained in:
@@ -525,6 +525,64 @@ func findRuntimeClientManagerProfile(plugin domain.GamePlugin, profileKey string
|
||||
return domain.RuntimeClientManagerProfile{}, repo.ErrNotFound
|
||||
}
|
||||
|
||||
func clientManagerCompanionConfigInput(plugin domain.GamePlugin, profile domain.RuntimeClientManagerProfile, installation domain.ClientManagerInstallation, artifactID, version, revision string) (*domain.ClientManagerCompanionConfigInput, error) {
|
||||
companion := plugin.GameClientBridge.Companion
|
||||
if companion == (domain.GameClientBridgeCompanionDeclaration{}) {
|
||||
return nil, nil
|
||||
}
|
||||
if companion.ProfileKey == "" {
|
||||
return nil, validationError("client-manager companion declaration is incomplete")
|
||||
}
|
||||
if companion.ProfileKey != installation.ProfileKey {
|
||||
return nil, nil
|
||||
}
|
||||
var configTemplate domain.RuntimeConfigTemplate
|
||||
found := false
|
||||
for _, candidate := range profile.ConfigTemplates {
|
||||
if candidate.Key == companion.ConfigTemplateKey {
|
||||
configTemplate = candidate
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found || strings.TrimSpace(configTemplate.TemplateRef) == "" || configTemplate.OutputRef != "config.yaml" {
|
||||
return nil, validationError("client-manager companion config template is unavailable")
|
||||
}
|
||||
config := domain.ClientManagerCompanionConfigInput{
|
||||
SchemaVersion: domain.ClientManagerCompanionConfigSchemaVersion,
|
||||
ConfigTemplateKey: companion.ConfigTemplateKey,
|
||||
ConfigTemplateRef: configTemplate.TemplateRef,
|
||||
ConfigOutputRef: configTemplate.OutputRef,
|
||||
ConfigSchemaRef: companion.ConfigSchemaRef,
|
||||
ConfigFormat: companion.ConfigFormat,
|
||||
PlatformBaseURLSource: companion.PlatformBaseURLSource,
|
||||
InstallationID: installation.ID,
|
||||
ServerInstanceID: installation.ServerInstanceID,
|
||||
PluginID: plugin.ID,
|
||||
ProfileKey: installation.ProfileKey,
|
||||
ArtifactID: artifactID,
|
||||
Version: version,
|
||||
SourceRevision: revision,
|
||||
TargetOS: installation.TargetOS,
|
||||
TargetArch: installation.TargetArch,
|
||||
KeyGeneration: installation.KeyGeneration,
|
||||
DeploymentGeneration: installation.DeploymentGeneration,
|
||||
Capabilities: domain.CopyStringSlice(profile.Health.RequiredCapabilities),
|
||||
RegistrationProof: companion.RegistrationProof,
|
||||
ProofMaterialSource: companion.ProofMaterialSource,
|
||||
ProofMaterialEnv: companion.ProofMaterialEnv,
|
||||
SessionMode: companion.SessionMode,
|
||||
TLSPolicy: companion.TLSPolicy,
|
||||
HeartbeatIntervalSeconds: companion.HeartbeatIntervalSeconds,
|
||||
CommandPollIntervalSeconds: companion.CommandPollIntervalSeconds,
|
||||
RequestTimeoutSeconds: companion.RequestTimeoutSeconds,
|
||||
}
|
||||
if err := validator.ValidateClientManagerCompanionConfigInput(config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
func clientManagerProfileSupportsTarget(profile domain.RuntimeClientManagerProfile, targetOS, targetArch string) bool {
|
||||
for _, target := range profile.SupportedTargets {
|
||||
if target.OS == targetOS && target.Arch == targetArch {
|
||||
@@ -755,7 +813,11 @@ func (svc *CoreService) GetClientManagerLifecycleInput(request domain.ClientMana
|
||||
revision = installation.ActiveRevision
|
||||
checksum = ""
|
||||
}
|
||||
return domain.CopyClientManagerLifecycleInput(domain.ClientManagerLifecycleInput{InstallationID: installation.ID, ServerInstanceID: installation.ServerInstanceID, ProfileKey: installation.ProfileKey, Operation: operation, ArtifactID: artifactID, Checksum: checksum, TargetOS: installation.TargetOS, TargetArch: installation.TargetArch, Version: version, SourceRevision: revision, KeyGeneration: installation.KeyGeneration, DeploymentGeneration: installation.DeploymentGeneration, ExecutableRef: profile.Deployment.ExecutableRef, Arguments: profile.Deployment.Arguments, AutoStart: profile.Deployment.AutoStart, StartupTimeoutSeconds: profile.Lifecycle.StartupTimeoutSeconds, StopTimeoutSeconds: profile.Lifecycle.StopTimeoutSeconds, HealthConfirmationSeconds: profile.UpdatePolicy.HealthConfirmationSeconds, IdempotencyKey: job.IdempotencyKey}), nil
|
||||
companionConfig, err := clientManagerCompanionConfigInput(plugin, profile, installation, artifactID, version, revision)
|
||||
if err != nil {
|
||||
return domain.ClientManagerLifecycleInput{}, err
|
||||
}
|
||||
return domain.CopyClientManagerLifecycleInput(domain.ClientManagerLifecycleInput{InstallationID: installation.ID, ServerInstanceID: installation.ServerInstanceID, ProfileKey: installation.ProfileKey, Operation: operation, ArtifactID: artifactID, Checksum: checksum, TargetOS: installation.TargetOS, TargetArch: installation.TargetArch, Version: version, SourceRevision: revision, KeyGeneration: installation.KeyGeneration, DeploymentGeneration: installation.DeploymentGeneration, ExecutableRef: profile.Deployment.ExecutableRef, Arguments: profile.Deployment.Arguments, AutoStart: profile.Deployment.AutoStart, StartupTimeoutSeconds: profile.Lifecycle.StartupTimeoutSeconds, StopTimeoutSeconds: profile.Lifecycle.StopTimeoutSeconds, HealthConfirmationSeconds: profile.UpdatePolicy.HealthConfirmationSeconds, IdempotencyKey: job.IdempotencyKey, CompanionConfig: companionConfig}), nil
|
||||
}
|
||||
|
||||
func (svc *CoreService) ReadClientManagerLifecycleChunk(request domain.RunUpdateChunkRequest) (domain.RunUpdateChunk, error) {
|
||||
|
||||
Reference in New Issue
Block a user