@@ -2039,6 +2039,31 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
2039
2039
}
2040
2040
}
2041
2041
2042
+ var (
2043
+ devcontainers = prAgent .GetDevcontainers ()
2044
+ devcontainerIDs = make ([]uuid.UUID ,0 ,len (devcontainers ))
2045
+ devcontainerWorkspaceFolders = make ([]string ,0 ,len (devcontainers ))
2046
+ devcontainerConfigPaths = make ([]string ,0 ,len (devcontainers ))
2047
+ )
2048
+ if len (devcontainers )> 0 {
2049
+ for _ ,dc := range devcontainers {
2050
+ devcontainerIDs = append (devcontainerIDs ,uuid .New ())
2051
+ devcontainerWorkspaceFolders = append (devcontainerWorkspaceFolders ,dc .WorkspaceFolder )
2052
+ devcontainerConfigPaths = append (devcontainerConfigPaths ,dc .ConfigPath )
2053
+ }
2054
+
2055
+ _ ,err = db .InsertWorkspaceAgentDevcontainers (ctx , database.InsertWorkspaceAgentDevcontainersParams {
2056
+ WorkspaceAgentID :agentID ,
2057
+ CreatedAt :dbtime .Now (),
2058
+ ID :devcontainerIDs ,
2059
+ WorkspaceFolder :devcontainerWorkspaceFolders ,
2060
+ ConfigPath :devcontainerConfigPaths ,
2061
+ })
2062
+ if err != nil {
2063
+ return xerrors .Errorf ("insert agent devcontainer: %w" ,err )
2064
+ }
2065
+ }
2066
+
2042
2067
logSourceIDs := make ([]uuid.UUID ,0 ,len (prAgent .Scripts ))
2043
2068
logSourceDisplayNames := make ([]string ,0 ,len (prAgent .Scripts ))
2044
2069
logSourceIcons := make ([]string ,0 ,len (prAgent .Scripts ))
@@ -2066,6 +2091,22 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
2066
2091
scriptRunOnStart = append (scriptRunOnStart ,script .RunOnStart )
2067
2092
scriptRunOnStop = append (scriptRunOnStop ,script .RunOnStop )
2068
2093
}
2094
+ // Add a log source and script for each devcontainer so we can
2095
+ // track logs and timings for each.
2096
+ for _ ,id := range devcontainerIDs {
2097
+ logSourceIDs = append (logSourceIDs ,uuid .New ())
2098
+ logSourceDisplayNames = append (logSourceDisplayNames ,"Dev Container" )
2099
+ logSourceIcons = append (logSourceIcons ,"/emojis/1f4e6.png" )// Emoji package. Or perhaps /icon/container.svg?
2100
+ scriptIDs = append (scriptIDs ,id )// Re-use the devcontainer ID as the script ID for identification.
2101
+ scriptDisplayName = append (scriptDisplayName ,"Dev Container" )// TODO(mafredri): Make it unique? Grab from id used in TF?
2102
+ scriptLogPaths = append (scriptLogPaths ,"" )
2103
+ scriptSources = append (scriptSources ,"" )
2104
+ scriptCron = append (scriptCron ,"" )
2105
+ scriptTimeout = append (scriptTimeout ,0 )
2106
+ scriptStartBlocksLogin = append (scriptStartBlocksLogin ,false )
2107
+ scriptRunOnStart = append (scriptRunOnStart ,false )
2108
+ scriptRunOnStop = append (scriptRunOnStop ,false )
2109
+ }
2069
2110
2070
2111
_ ,err = db .InsertWorkspaceAgentLogSources (ctx , database.InsertWorkspaceAgentLogSourcesParams {
2071
2112
WorkspaceAgentID :agentID ,
@@ -2096,30 +2137,6 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
2096
2137
return xerrors .Errorf ("insert agent scripts: %w" ,err )
2097
2138
}
2098
2139
2099
- if devcontainers := prAgent .GetDevcontainers ();len (devcontainers )> 0 {
2100
- var (
2101
- devContainerIDs = make ([]uuid.UUID ,0 ,len (devcontainers ))
2102
- devContainerWorkspaceFolders = make ([]string ,0 ,len (devcontainers ))
2103
- devContainerConfigPaths = make ([]string ,0 ,len (devcontainers ))
2104
- )
2105
- for _ ,dc := range devcontainers {
2106
- devContainerIDs = append (devContainerIDs ,uuid .New ())
2107
- devContainerWorkspaceFolders = append (devContainerWorkspaceFolders ,dc .WorkspaceFolder )
2108
- devContainerConfigPaths = append (devContainerConfigPaths ,dc .ConfigPath )
2109
- }
2110
-
2111
- _ ,err = db .InsertWorkspaceAgentDevcontainers (ctx , database.InsertWorkspaceAgentDevcontainersParams {
2112
- WorkspaceAgentID :agentID ,
2113
- CreatedAt :dbtime .Now (),
2114
- ID :devContainerIDs ,
2115
- WorkspaceFolder :devContainerWorkspaceFolders ,
2116
- ConfigPath :devContainerConfigPaths ,
2117
- })
2118
- if err != nil {
2119
- return xerrors .Errorf ("insert agent devcontainer: %w" ,err )
2120
- }
2121
- }
2122
-
2123
2140
for _ ,app := range prAgent .Apps {
2124
2141
// Similar logic is duplicated in terraform/resources.go.
2125
2142
slug := app .Slug