Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8b7c049

Browse files
committed
Add method to get agents even for off workspaces
1 parent3719173 commit8b7c049

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

‎src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
packagecom.coder.gateway.sdk
22

3+
importcom.coder.gateway.models.WorkspaceAgentModel
34
importcom.coder.gateway.sdk.convertors.InstantConverter
45
importcom.coder.gateway.sdk.ex.AuthenticationResponseException
56
importcom.coder.gateway.sdk.ex.TemplateResponseException
@@ -12,6 +13,7 @@ import com.coder.gateway.sdk.v2.models.User
1213
importcom.coder.gateway.sdk.v2.models.Workspace
1314
importcom.coder.gateway.sdk.v2.models.WorkspaceBuild
1415
importcom.coder.gateway.sdk.v2.models.WorkspaceTransition
16+
importcom.coder.gateway.sdk.v2.models.toAgentModels
1517
importcom.google.gson.Gson
1618
importcom.google.gson.GsonBuilder
1719
importcom.intellij.ide.plugins.PluginManagerCore
@@ -105,6 +107,23 @@ class CoderRestClient(var url: URL, var token: String, var headerCommand: String
105107
return workspacesResponse.body()!!.workspaces
106108
}
107109

110+
/**
111+
* Retrieves agents for the specified workspaces. Since the workspaces
112+
* response does not include agents when the workspace is off, this fires
113+
* off separate queries to get the agents for each workspace, just like
114+
* `coder config-ssh` does (otherwise we risk removing hosts from the SSH
115+
* config when they are off).
116+
*/
117+
funagents(workspaces:List<Workspace>):List<WorkspaceAgentModel> {
118+
return workspaces.flatMap {
119+
val resourcesResponse= retroRestClient.templateVersionResources(it.latestBuild.templateVersionID).execute()
120+
if (!resourcesResponse.isSuccessful) {
121+
throwWorkspaceResponseException("Unable to retrieve template resources for${it.name} from$url: code${resourcesResponse.code()}, reason:${resourcesResponse.message().ifBlank {"no reason provided" }}")
122+
}
123+
it.toAgentModels(resourcesResponse.body()!!)
124+
}
125+
}
126+
108127
funbuildInfo():BuildInfo {
109128
val buildInfoResponse= retroRestClient.buildInfo().execute()
110129
if (!buildInfoResponse.isSuccessful) {

‎src/main/kotlin/com/coder/gateway/sdk/v2/CoderV2RestFacade.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.coder.gateway.sdk.v2.models.CreateWorkspaceBuildRequest
55
importcom.coder.gateway.sdk.v2.models.Template
66
importcom.coder.gateway.sdk.v2.models.User
77
importcom.coder.gateway.sdk.v2.models.WorkspaceBuild
8+
importcom.coder.gateway.sdk.v2.models.WorkspaceResource
89
importcom.coder.gateway.sdk.v2.models.WorkspacesResponse
910
importretrofit2.Call
1011
importretrofit2.http.Body
@@ -39,4 +40,7 @@ interface CoderV2RestFacade {
3940

4041
@GET("api/v2/templates/{templateID}")
4142
funtemplate(@Path("templateID")templateID:UUID):Call<Template>
42-
}
43+
44+
@GET("api/v2/templateversions/{templateID}/resources")
45+
funtemplateVersionResources(@Path("templateID")templateID:UUID):Call<List<WorkspaceResource>>
46+
}

‎src/main/kotlin/com/coder/gateway/sdk/v2/models/Workspace.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ data class Workspace(
3131
@SerializedName("last_used_at")vallastUsedAt:Instant,
3232
)
3333

34-
fun Workspace.toAgentModels():Set<WorkspaceAgentModel> {
35-
val wam=this.latestBuild.resources.filter { it.agents!=null }.flatMap { it.agents!! }.map { agent->
34+
fun Workspace.toAgentModels(resources:List<WorkspaceResource> = this.latestBuild.resources):Set<WorkspaceAgentModel> {
35+
val wam= resources.filter { it.agents!=null }.flatMap { it.agents!! }.map { agent->
3636
val workspaceWithAgentName="${this.name}.${agent.name}"
3737
val wm=WorkspaceAgentModel(
3838
this.id,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp