@@ -2,11 +2,13 @@ package com.coder.gateway.sdk
2
2
3
3
import com.coder.gateway.sdk.convertors.InstantConverter
4
4
import com.coder.gateway.sdk.ex.AuthenticationResponseException
5
+ import com.coder.gateway.sdk.ex.TemplateResponseException
5
6
import com.coder.gateway.sdk.ex.WorkspaceResourcesResponseException
6
7
import com.coder.gateway.sdk.ex.WorkspaceResponseException
7
8
import com.coder.gateway.sdk.v2.CoderV2RestFacade
8
9
import com.coder.gateway.sdk.v2.models.BuildInfo
9
10
import com.coder.gateway.sdk.v2.models.CreateWorkspaceBuildRequest
11
+ import com.coder.gateway.sdk.v2.models.Template
10
12
import com.coder.gateway.sdk.v2.models.User
11
13
import com.coder.gateway.sdk.v2.models.Workspace
12
14
import com.coder.gateway.sdk.v2.models.WorkspaceAgent
@@ -115,6 +117,14 @@ class CoderRestClientService {
115
117
return workspaceResourcesResponse.body()!! .flatMap { it.agents ? : emptyList() }
116
118
}
117
119
120
+ private fun template (templateID : UUID ): Template {
121
+ val templateResponse = retroRestClient.template(templateID).execute()
122
+ if (! templateResponse.isSuccessful) {
123
+ throw TemplateResponseException (" Failed to retrieve template with id: $templateID , reason: ${templateResponse.message()} " )
124
+ }
125
+ return templateResponse.body()!!
126
+ }
127
+
118
128
fun startWorkspace (workspaceID : UUID , workspaceName : String ): WorkspaceBuild {
119
129
val buildRequest = CreateWorkspaceBuildRequest (null , " start" , null , null , null )
120
130
val buildResponse = retroRestClient.createWorkspaceBuild(workspaceID, buildRequest).execute()
@@ -134,4 +144,16 @@ class CoderRestClientService {
134
144
135
145
return buildResponse.body()!!
136
146
}
147
+
148
+ fun updateWorkspace (workspaceID : UUID , workspaceName : String , lastWorkspaceTransition : String , templateID : UUID ): WorkspaceBuild {
149
+ val template = template(templateID)
150
+
151
+ val buildRequest = CreateWorkspaceBuildRequest (template.activeVersionID, lastWorkspaceTransition, null , null , null )
152
+ val buildResponse = retroRestClient.createWorkspaceBuild(workspaceID, buildRequest).execute()
153
+ if (buildResponse.code() != HTTP_CREATED ) {
154
+ throw WorkspaceResponseException (" Failed to update workspace ${workspaceName} : ${buildResponse.code()} , reason: ${buildResponse.message()} " )
155
+ }
156
+
157
+ return buildResponse.body()!!
158
+ }
137
159
}
0 commit comments