( build database.WorkspaceBuild, workspace database.Workspace, job database.GetProvisionerJobsByIDsWithQueuePositionRow, workspaceResources []database.WorkspaceResource, resourceMetadata []database.WorkspaceResourceMetadatum, resourceAgents []database.WorkspaceAgent, agentApps []database.WorkspaceApp, agentAppStatuses []database.WorkspaceAppStatus, agentScripts []database.GetWorkspaceAgentScriptsByAgentIDsRow, agentLogSources []database.WorkspaceAgentLogSource, templateVersion database.TemplateVersion, provisionerDaemons []database.GetEligibleProvisionerDaemonsByProvisionerJobIDsRow, )
| 1188 | } |
| 1189 | |
| 1190 | func (api *API) convertWorkspaceBuild( |
| 1191 | build database.WorkspaceBuild, |
| 1192 | workspace database.Workspace, |
| 1193 | job database.GetProvisionerJobsByIDsWithQueuePositionRow, |
| 1194 | workspaceResources []database.WorkspaceResource, |
| 1195 | resourceMetadata []database.WorkspaceResourceMetadatum, |
| 1196 | resourceAgents []database.WorkspaceAgent, |
| 1197 | agentApps []database.WorkspaceApp, |
| 1198 | agentAppStatuses []database.WorkspaceAppStatus, |
| 1199 | agentScripts []database.GetWorkspaceAgentScriptsByAgentIDsRow, |
| 1200 | agentLogSources []database.WorkspaceAgentLogSource, |
| 1201 | templateVersion database.TemplateVersion, |
| 1202 | provisionerDaemons []database.GetEligibleProvisionerDaemonsByProvisionerJobIDsRow, |
| 1203 | ) (codersdk.WorkspaceBuild, error) { |
| 1204 | resourcesByJobID := map[uuid.UUID][]database.WorkspaceResource{} |
| 1205 | for _, resource := range workspaceResources { |
| 1206 | resourcesByJobID[resource.JobID] = append(resourcesByJobID[resource.JobID], resource) |
| 1207 | } |
| 1208 | metadataByResourceID := map[uuid.UUID][]database.WorkspaceResourceMetadatum{} |
| 1209 | for _, metadata := range resourceMetadata { |
| 1210 | metadataByResourceID[metadata.WorkspaceResourceID] = append(metadataByResourceID[metadata.WorkspaceResourceID], metadata) |
| 1211 | } |
| 1212 | agentsByResourceID := map[uuid.UUID][]database.WorkspaceAgent{} |
| 1213 | for _, agent := range resourceAgents { |
| 1214 | agentsByResourceID[agent.ResourceID] = append(agentsByResourceID[agent.ResourceID], agent) |
| 1215 | } |
| 1216 | appsByAgentID := map[uuid.UUID][]database.WorkspaceApp{} |
| 1217 | for _, app := range agentApps { |
| 1218 | appsByAgentID[app.AgentID] = append(appsByAgentID[app.AgentID], app) |
| 1219 | } |
| 1220 | scriptsByAgentID := map[uuid.UUID][]database.GetWorkspaceAgentScriptsByAgentIDsRow{} |
| 1221 | for _, script := range agentScripts { |
| 1222 | scriptsByAgentID[script.WorkspaceAgentID] = append(scriptsByAgentID[script.WorkspaceAgentID], script) |
| 1223 | } |
| 1224 | logSourcesByAgentID := map[uuid.UUID][]database.WorkspaceAgentLogSource{} |
| 1225 | for _, logSource := range agentLogSources { |
| 1226 | logSourcesByAgentID[logSource.WorkspaceAgentID] = append(logSourcesByAgentID[logSource.WorkspaceAgentID], logSource) |
| 1227 | } |
| 1228 | provisionerDaemonsForThisWorkspaceBuild := []database.ProvisionerDaemon{} |
| 1229 | for _, provisionerDaemon := range provisionerDaemons { |
| 1230 | if provisionerDaemon.JobID != job.ProvisionerJob.ID { |
| 1231 | continue |
| 1232 | } |
| 1233 | provisionerDaemonsForThisWorkspaceBuild = append(provisionerDaemonsForThisWorkspaceBuild, provisionerDaemon.ProvisionerDaemon) |
| 1234 | } |
| 1235 | matchedProvisioners := db2sdk.MatchedProvisioners(provisionerDaemonsForThisWorkspaceBuild, job.ProvisionerJob.CreatedAt, provisionerdserver.StaleInterval) |
| 1236 | statusesByAgentID := map[uuid.UUID][]database.WorkspaceAppStatus{} |
| 1237 | for _, status := range agentAppStatuses { |
| 1238 | statusesByAgentID[status.AgentID] = append(statusesByAgentID[status.AgentID], status) |
| 1239 | } |
| 1240 | |
| 1241 | resources := resourcesByJobID[job.ProvisionerJob.ID] |
| 1242 | apiResources := make([]codersdk.WorkspaceResource, 0) |
| 1243 | resourceAgentsMinOrder := map[uuid.UUID]int32{} // map[resource.ID]minOrder |
| 1244 | for _, resource := range resources { |
| 1245 | agents := agentsByResourceID[resource.ID] |
| 1246 | sort.Slice(agents, func(i, j int) bool { |
| 1247 | if agents[i].DisplayOrder != agents[j].DisplayOrder { |
no test coverage detected