MCPcopy Index your code
hub / github.com/coder/coder / convertWorkspaceBuild

Method convertWorkspaceBuild

coderd/workspacebuilds.go:1190–1326  ·  view source on GitHub ↗
(
	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,
)

Source from the content-addressed store, hash-verified

1188}
1189
1190func (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 {

Callers 5

workspaceBuildMethod · 0.95
createWorkspaceFunction · 0.80

Calls 15

DERPMapMethod · 0.95
MatchedProvisionersFunction · 0.92
WorkspaceAgentFunction · 0.92
AppsFunction · 0.92
WorkspaceTransitionTypeAlias · 0.92
NewNullTimeFunction · 0.92
BuildReasonTypeAlias · 0.92
ConvertWorkspaceStatusFunction · 0.92
convertScriptsFunction · 0.85
convertLogSourcesFunction · 0.85
convertWorkspaceResourceFunction · 0.85
convertProvisionerJobFunction · 0.85

Tested by

no test coverage detected