309 lines
21 KiB
Go
309 lines
21 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"browser.local/platform/domain"
|
|
)
|
|
|
|
type ClientManagerDeployRequest struct {
|
|
ProfileKey string `json:"profileKey"`
|
|
DistributionID string `json:"distributionId"`
|
|
ExpectedDeploymentGeneration int `json:"expectedDeploymentGeneration,omitempty"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type ClientManagerControlRequest struct {
|
|
ProfileKey string `json:"profileKey"`
|
|
Operation string `json:"operation"`
|
|
ExpectedDeploymentGeneration int `json:"expectedDeploymentGeneration"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type ClientManagerUpdateRequest struct {
|
|
ProfileKey string `json:"profileKey"`
|
|
DistributionID string `json:"distributionId"`
|
|
ExpectedDeploymentGeneration int `json:"expectedDeploymentGeneration"`
|
|
Approved bool `json:"approved"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type ClientManagerUninstallRequest struct {
|
|
ProfileKey string `json:"profileKey"`
|
|
ExpectedDeploymentGeneration int `json:"expectedDeploymentGeneration"`
|
|
Confirmed bool `json:"confirmed"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type ClientManagerRetryRequest struct {
|
|
ProfileKey string `json:"profileKey"`
|
|
ExpectedDeploymentGeneration int `json:"expectedDeploymentGeneration"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
}
|
|
|
|
type ClientManagerRevokeSessionRequest struct {
|
|
ProfileKey string `json:"profileKey"`
|
|
Reason string `json:"reason,omitempty"`
|
|
}
|
|
|
|
type ClientManagerLifecycleActionResponse struct {
|
|
Operation string `json:"operation"`
|
|
Available bool `json:"available"`
|
|
Reason string `json:"reason,omitempty"`
|
|
}
|
|
|
|
type ClientManagerLifecycleJobResponse struct {
|
|
ID string `json:"id,omitempty"`
|
|
State domain.JobState `json:"state,omitempty"`
|
|
Progress JobProgressBody `json:"progress,omitempty"`
|
|
Attempt int `json:"attempt,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt,omitempty"`
|
|
UpdatedAt time.Time `json:"updatedAt,omitempty"`
|
|
}
|
|
|
|
type ClientManagerInstallationResponse struct {
|
|
ID string `json:"id"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
PluginID string `json:"pluginId"`
|
|
ProfileKey string `json:"profileKey"`
|
|
TargetOS string `json:"targetOs"`
|
|
TargetArch string `json:"targetArch"`
|
|
Status string `json:"status"`
|
|
Phase string `json:"phase,omitempty"`
|
|
DesiredVersion string `json:"desiredVersion,omitempty"`
|
|
ActiveVersion string `json:"activeVersion,omitempty"`
|
|
PreviousVersion string `json:"previousVersion,omitempty"`
|
|
DesiredRevision string `json:"desiredRevision,omitempty"`
|
|
ActiveRevision string `json:"activeRevision,omitempty"`
|
|
PreviousRevision string `json:"previousRevision,omitempty"`
|
|
DesiredArtifactID string `json:"desiredArtifactId,omitempty"`
|
|
ActiveArtifactID string `json:"activeArtifactId,omitempty"`
|
|
PreviousArtifactID string `json:"previousArtifactId,omitempty"`
|
|
KeyGeneration int `json:"keyGeneration"`
|
|
DeploymentGeneration int `json:"deploymentGeneration"`
|
|
CurrentJobID string `json:"currentJobId,omitempty"`
|
|
LastSuccessfulJobID string `json:"lastSuccessfulJobId,omitempty"`
|
|
LastOperation string `json:"lastOperation,omitempty"`
|
|
Health string `json:"health"`
|
|
HealthReason string `json:"healthReason,omitempty"`
|
|
LastSeenAt time.Time `json:"lastSeenAt,omitempty"`
|
|
Retryable bool `json:"retryable"`
|
|
RequiresRedeploy bool `json:"requiresRedeploy"`
|
|
InstalledAt time.Time `json:"installedAt,omitempty"`
|
|
UninstalledAt time.Time `json:"uninstalledAt,omitempty"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
Distribution *ClientManagerDistributionSummaryResponse `json:"distribution,omitempty"`
|
|
Job *ClientManagerLifecycleJobResponse `json:"job,omitempty"`
|
|
Actions []ClientManagerLifecycleActionResponse `json:"actions"`
|
|
}
|
|
|
|
type ClientManagerDistributionSummaryResponse struct {
|
|
ID string `json:"id"`
|
|
ArtifactID string `json:"artifactId"`
|
|
SourceRevision string `json:"sourceRevision"`
|
|
TargetOS string `json:"targetOs"`
|
|
TargetArch string `json:"targetArch"`
|
|
Checksum string `json:"checksum"`
|
|
KeyGeneration int `json:"keyGeneration"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type ClientManagerInstallationListResponse struct {
|
|
Items []ClientManagerInstallationResponse `json:"items"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type ClientManagerLifecycleInputRequest struct {
|
|
RunEndpointID string `json:"runEndpointId"`
|
|
SessionToken string `json:"sessionToken"`
|
|
JobID string `json:"jobId"`
|
|
LeaseToken string `json:"leaseToken"`
|
|
Attempt int `json:"attempt"`
|
|
}
|
|
|
|
type ClientManagerLifecycleInputResponse struct {
|
|
InstallationID string `json:"installationId"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
ProfileKey string `json:"profileKey"`
|
|
Operation string `json:"operation"`
|
|
ArtifactID string `json:"artifactId,omitempty"`
|
|
Checksum string `json:"checksum,omitempty"`
|
|
TargetOS string `json:"targetOs"`
|
|
TargetArch string `json:"targetArch"`
|
|
Version string `json:"version,omitempty"`
|
|
SourceRevision string `json:"sourceRevision,omitempty"`
|
|
KeyGeneration int `json:"keyGeneration"`
|
|
DeploymentGeneration int `json:"deploymentGeneration"`
|
|
ExecutableRef string `json:"executableRef"`
|
|
Arguments []string `json:"arguments"`
|
|
AutoStart bool `json:"autoStart"`
|
|
StartupTimeoutSeconds int `json:"startupTimeoutSeconds"`
|
|
StopTimeoutSeconds int `json:"stopTimeoutSeconds"`
|
|
HealthConfirmationSeconds int `json:"healthConfirmationSeconds"`
|
|
IdempotencyKey string `json:"idempotencyKey"`
|
|
CompanionConfig *ClientManagerCompanionConfigInputResponse `json:"companionConfig,omitempty"`
|
|
}
|
|
|
|
type ClientManagerCompanionConfigInputResponse struct {
|
|
SchemaVersion int `json:"schemaVersion"`
|
|
ConfigTemplateKey string `json:"configTemplateKey"`
|
|
ConfigTemplateRef string `json:"configTemplateRef"`
|
|
ConfigOutputRef string `json:"configOutputRef"`
|
|
ConfigSchemaRef string `json:"configSchemaRef"`
|
|
ConfigFormat string `json:"configFormat"`
|
|
PlatformBaseURLSource string `json:"platformBaseUrlSource"`
|
|
InstallationID string `json:"installationId"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
PluginID string `json:"pluginId"`
|
|
ProfileKey string `json:"profileKey"`
|
|
ArtifactID string `json:"artifactId"`
|
|
Version string `json:"version"`
|
|
SourceRevision string `json:"sourceRevision"`
|
|
TargetOS string `json:"targetOs"`
|
|
TargetArch string `json:"targetArch"`
|
|
KeyGeneration int `json:"keyGeneration"`
|
|
DeploymentGeneration int `json:"deploymentGeneration"`
|
|
Capabilities []string `json:"capabilities"`
|
|
RegistrationProof string `json:"registrationProof"`
|
|
ProofMaterialSource string `json:"proofMaterialSource"`
|
|
ProofMaterialEnv string `json:"proofMaterialEnv"`
|
|
SessionMode string `json:"sessionMode"`
|
|
TLSPolicy string `json:"tlsPolicy"`
|
|
HeartbeatIntervalSeconds int `json:"heartbeatIntervalSeconds"`
|
|
CommandPollIntervalSeconds int `json:"commandPollIntervalSeconds"`
|
|
RequestTimeoutSeconds int `json:"requestTimeoutSeconds"`
|
|
}
|
|
|
|
type ClientManagerRegisterRequest struct {
|
|
InstallationID string `json:"installationId"`
|
|
ServerInstanceID string `json:"serverInstanceId"`
|
|
ProfileKey string `json:"profileKey"`
|
|
ArtifactID string `json:"artifactId"`
|
|
Version string `json:"version"`
|
|
SourceRevision string `json:"sourceRevision"`
|
|
TargetOS string `json:"targetOs"`
|
|
TargetArch string `json:"targetArch"`
|
|
KeyGeneration int `json:"keyGeneration"`
|
|
DeploymentGeneration int `json:"deploymentGeneration"`
|
|
Capabilities []string `json:"capabilities"`
|
|
Timestamp time.Time `json:"timestamp"`
|
|
Nonce string `json:"nonce"`
|
|
Signature string `json:"signature"`
|
|
}
|
|
|
|
type ClientManagerRegisterResponse struct {
|
|
Accepted bool `json:"accepted"`
|
|
InstallationID string `json:"installationId"`
|
|
SessionToken string `json:"sessionToken"`
|
|
ExpiresAt time.Time `json:"expiresAt"`
|
|
HeartbeatEvery int `json:"heartbeatEverySeconds"`
|
|
ServerTime time.Time `json:"serverTime"`
|
|
}
|
|
|
|
type ClientManagerHeartbeatRequest struct {
|
|
InstallationID string `json:"installationId"`
|
|
SessionToken string `json:"sessionToken"`
|
|
Sequence uint64 `json:"sequence"`
|
|
Health string `json:"health"`
|
|
HealthReason string `json:"healthReason,omitempty"`
|
|
Capabilities []string `json:"capabilities"`
|
|
SentAt time.Time `json:"sentAt"`
|
|
}
|
|
|
|
type ClientManagerHeartbeatResponse struct {
|
|
Accepted bool `json:"accepted"`
|
|
InstallationID string `json:"installationId"`
|
|
Status string `json:"status"`
|
|
Health string `json:"health"`
|
|
NextHeartbeat int `json:"nextHeartbeatSeconds"`
|
|
SessionExpiresAt time.Time `json:"sessionExpiresAt"`
|
|
ServerTime time.Time `json:"serverTime"`
|
|
}
|
|
|
|
func (request ClientManagerDeployRequest) ToDomain(serverID string) domain.ClientManagerDeployRequest {
|
|
return domain.ClientManagerDeployRequest{ServerInstanceID: serverID, ProfileKey: request.ProfileKey, DistributionID: request.DistributionID, ExpectedDeploymentGeneration: request.ExpectedDeploymentGeneration, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func (request ClientManagerControlRequest) ToDomain(serverID string) domain.ClientManagerControlRequest {
|
|
return domain.ClientManagerControlRequest{ServerInstanceID: serverID, ProfileKey: request.ProfileKey, Operation: domain.ClientManagerLifecycleOperation(request.Operation), ExpectedDeploymentGeneration: request.ExpectedDeploymentGeneration, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func (request ClientManagerUpdateRequest) ToDomain(serverID string) domain.ClientManagerUpdateRequest {
|
|
return domain.ClientManagerUpdateRequest{ServerInstanceID: serverID, ProfileKey: request.ProfileKey, DistributionID: request.DistributionID, ExpectedDeploymentGeneration: request.ExpectedDeploymentGeneration, Approved: request.Approved, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func (request ClientManagerUninstallRequest) ToDomain(serverID string) domain.ClientManagerUninstallRequest {
|
|
return domain.ClientManagerUninstallRequest{ServerInstanceID: serverID, ProfileKey: request.ProfileKey, ExpectedDeploymentGeneration: request.ExpectedDeploymentGeneration, Confirmed: request.Confirmed, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func (request ClientManagerRetryRequest) ToDomain(serverID string) domain.ClientManagerRetryRequest {
|
|
return domain.ClientManagerRetryRequest{ServerInstanceID: serverID, ProfileKey: request.ProfileKey, ExpectedDeploymentGeneration: request.ExpectedDeploymentGeneration, IdempotencyKey: request.IdempotencyKey}
|
|
}
|
|
|
|
func (request ClientManagerRevokeSessionRequest) ToDomain(serverID string) domain.ClientManagerRevokeSessionRequest {
|
|
return domain.ClientManagerRevokeSessionRequest{ServerInstanceID: serverID, ProfileKey: request.ProfileKey, Reason: request.Reason}
|
|
}
|
|
|
|
func (request ClientManagerLifecycleInputRequest) ToDomain() domain.ClientManagerLifecycleInputRequest {
|
|
return domain.ClientManagerLifecycleInputRequest{RunEndpointID: request.RunEndpointID, SessionToken: request.SessionToken, JobID: request.JobID, LeaseToken: request.LeaseToken, Attempt: request.Attempt}
|
|
}
|
|
|
|
func ClientManagerLifecycleInputFromDomain(value domain.ClientManagerLifecycleInput) ClientManagerLifecycleInputResponse {
|
|
value = domain.CopyClientManagerLifecycleInput(value)
|
|
response := ClientManagerLifecycleInputResponse{InstallationID: value.InstallationID, ServerInstanceID: value.ServerInstanceID, ProfileKey: value.ProfileKey, Operation: string(value.Operation), ArtifactID: value.ArtifactID, Checksum: value.Checksum, TargetOS: value.TargetOS, TargetArch: value.TargetArch, Version: value.Version, SourceRevision: value.SourceRevision, KeyGeneration: value.KeyGeneration, DeploymentGeneration: value.DeploymentGeneration, ExecutableRef: value.ExecutableRef, Arguments: value.Arguments, AutoStart: value.AutoStart, StartupTimeoutSeconds: value.StartupTimeoutSeconds, StopTimeoutSeconds: value.StopTimeoutSeconds, HealthConfirmationSeconds: value.HealthConfirmationSeconds, IdempotencyKey: value.IdempotencyKey}
|
|
if value.CompanionConfig != nil {
|
|
companion := ClientManagerCompanionConfigInputFromDomain(*value.CompanionConfig)
|
|
response.CompanionConfig = &companion
|
|
}
|
|
return response
|
|
}
|
|
|
|
func ClientManagerCompanionConfigInputFromDomain(value domain.ClientManagerCompanionConfigInput) ClientManagerCompanionConfigInputResponse {
|
|
value = domain.CopyClientManagerCompanionConfigInput(value)
|
|
return ClientManagerCompanionConfigInputResponse{SchemaVersion: value.SchemaVersion, ConfigTemplateKey: value.ConfigTemplateKey, ConfigTemplateRef: value.ConfigTemplateRef, ConfigOutputRef: value.ConfigOutputRef, ConfigSchemaRef: value.ConfigSchemaRef, ConfigFormat: value.ConfigFormat, PlatformBaseURLSource: value.PlatformBaseURLSource, InstallationID: value.InstallationID, ServerInstanceID: value.ServerInstanceID, PluginID: value.PluginID, ProfileKey: value.ProfileKey, ArtifactID: value.ArtifactID, Version: value.Version, SourceRevision: value.SourceRevision, TargetOS: value.TargetOS, TargetArch: value.TargetArch, KeyGeneration: value.KeyGeneration, DeploymentGeneration: value.DeploymentGeneration, Capabilities: value.Capabilities, RegistrationProof: value.RegistrationProof, ProofMaterialSource: value.ProofMaterialSource, ProofMaterialEnv: value.ProofMaterialEnv, SessionMode: value.SessionMode, TLSPolicy: value.TLSPolicy, HeartbeatIntervalSeconds: value.HeartbeatIntervalSeconds, CommandPollIntervalSeconds: value.CommandPollIntervalSeconds, RequestTimeoutSeconds: value.RequestTimeoutSeconds}
|
|
}
|
|
|
|
func (request ClientManagerRegisterRequest) ToDomain() domain.ClientManagerRegisterRequest {
|
|
return domain.ClientManagerRegisterRequest{InstallationID: request.InstallationID, ServerInstanceID: request.ServerInstanceID, ProfileKey: request.ProfileKey, ArtifactID: request.ArtifactID, Version: request.Version, SourceRevision: request.SourceRevision, TargetOS: request.TargetOS, TargetArch: request.TargetArch, KeyGeneration: request.KeyGeneration, DeploymentGeneration: request.DeploymentGeneration, Capabilities: domain.CopyStringSlice(request.Capabilities), Timestamp: request.Timestamp, Nonce: request.Nonce, Signature: request.Signature}
|
|
}
|
|
|
|
func ClientManagerRegisterFromDomain(value domain.ClientManagerRegisterResult) ClientManagerRegisterResponse {
|
|
return ClientManagerRegisterResponse{Accepted: value.Accepted, InstallationID: value.InstallationID, SessionToken: value.SessionToken, ExpiresAt: value.ExpiresAt, HeartbeatEvery: value.HeartbeatEvery, ServerTime: value.ServerTime}
|
|
}
|
|
|
|
func (request ClientManagerHeartbeatRequest) ToDomain() domain.ClientManagerHeartbeat {
|
|
return domain.ClientManagerHeartbeat{InstallationID: request.InstallationID, SessionToken: request.SessionToken, Sequence: request.Sequence, Health: domain.ClientManagerHealthStatus(request.Health), HealthReason: request.HealthReason, Capabilities: domain.CopyStringSlice(request.Capabilities), SentAt: request.SentAt}
|
|
}
|
|
|
|
func ClientManagerHeartbeatFromDomain(value domain.ClientManagerHeartbeatResult) ClientManagerHeartbeatResponse {
|
|
return ClientManagerHeartbeatResponse{Accepted: value.Accepted, InstallationID: value.InstallationID, Status: string(value.Status), Health: string(value.Health), NextHeartbeat: value.NextHeartbeat, SessionExpiresAt: value.SessionExpiresAt, ServerTime: value.ServerTime}
|
|
}
|
|
|
|
func ClientManagerLifecycleViewFromDomain(value domain.ClientManagerLifecycleView) ClientManagerInstallationResponse {
|
|
value = domain.CopyClientManagerLifecycleView(value)
|
|
installation := value.Installation
|
|
response := ClientManagerInstallationResponse{ID: installation.ID, ServerInstanceID: installation.ServerInstanceID, PluginID: installation.PluginID, ProfileKey: installation.ProfileKey, TargetOS: installation.TargetOS, TargetArch: installation.TargetArch, Status: string(installation.Status), Phase: installation.Phase, DesiredVersion: installation.DesiredVersion, ActiveVersion: installation.ActiveVersion, PreviousVersion: installation.PreviousVersion, DesiredRevision: installation.DesiredRevision, ActiveRevision: installation.ActiveRevision, PreviousRevision: installation.PreviousRevision, DesiredArtifactID: installation.DesiredArtifactID, ActiveArtifactID: installation.ActiveArtifactID, PreviousArtifactID: installation.PreviousArtifactID, KeyGeneration: installation.KeyGeneration, DeploymentGeneration: installation.DeploymentGeneration, CurrentJobID: installation.CurrentJobID, LastSuccessfulJobID: installation.LastSuccessfulJobID, LastOperation: string(installation.LastOperation), Health: string(installation.Health), HealthReason: installation.HealthReason, LastSeenAt: installation.LastSeenAt, Retryable: installation.Retryable, RequiresRedeploy: installation.RequiresRedeploy, InstalledAt: installation.InstalledAt, UninstalledAt: installation.UninstalledAt, UpdatedAt: installation.UpdatedAt}
|
|
if value.Distribution.ID != "" {
|
|
response.Distribution = &ClientManagerDistributionSummaryResponse{ID: value.Distribution.ID, ArtifactID: value.Distribution.ArtifactID, SourceRevision: value.Distribution.SourceRevision, TargetOS: value.Distribution.TargetOS, TargetArch: value.Distribution.TargetArch, Checksum: value.Distribution.Checksum, KeyGeneration: value.Distribution.KeyGeneration, Status: string(value.Distribution.Status)}
|
|
}
|
|
if value.Job.ID != "" {
|
|
response.Job = &ClientManagerLifecycleJobResponse{ID: value.Job.ID, State: value.Job.State, Progress: JobProgressBody{Percent: value.Job.Progress.Percent, Message: value.Job.Progress.Message}, Attempt: value.Job.Attempt, CreatedAt: value.Job.CreatedAt, UpdatedAt: value.Job.UpdatedAt}
|
|
}
|
|
response.Actions = make([]ClientManagerLifecycleActionResponse, len(value.Actions))
|
|
for i, action := range value.Actions {
|
|
response.Actions[i] = ClientManagerLifecycleActionResponse{Operation: string(action.Operation), Available: action.Available, Reason: action.Reason}
|
|
}
|
|
if response.Actions == nil {
|
|
response.Actions = []ClientManagerLifecycleActionResponse{}
|
|
}
|
|
return response
|
|
}
|
|
|
|
func ClientManagerLifecycleViewsFromDomain(values []domain.ClientManagerLifecycleView) ClientManagerInstallationListResponse {
|
|
items := make([]ClientManagerInstallationResponse, len(values))
|
|
for i, value := range values {
|
|
items[i] = ClientManagerLifecycleViewFromDomain(value)
|
|
}
|
|
return ClientManagerInstallationListResponse{Items: items, Count: len(items)}
|
|
}
|