@@ -2,11 +2,13 @@ package com.coder.gateway.sdk
22
33import com.coder.gateway.sdk.convertors.InstantConverter
44import com.coder.gateway.sdk.ex.AuthenticationResponseException
5+ import com.coder.gateway.sdk.ex.TemplateResponseException
56import com.coder.gateway.sdk.ex.WorkspaceResourcesResponseException
67import com.coder.gateway.sdk.ex.WorkspaceResponseException
78import com.coder.gateway.sdk.v2.CoderV2RestFacade
89import com.coder.gateway.sdk.v2.models.BuildInfo
910import com.coder.gateway.sdk.v2.models.CreateWorkspaceBuildRequest
11+ import com.coder.gateway.sdk.v2.models.Template
1012import com.coder.gateway.sdk.v2.models.User
1113import com.coder.gateway.sdk.v2.models.Workspace
1214import com.coder.gateway.sdk.v2.models.WorkspaceAgent
@@ -115,6 +117,14 @@ class CoderRestClientService {
115117 return workspaceResourcesResponse.body()!! .flatMap { it.agents ? : emptyList() }
116118 }
117119
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+
118128 fun startWorkspace (workspaceID : UUID , workspaceName : String ): WorkspaceBuild {
119129 val buildRequest = CreateWorkspaceBuildRequest (null , " start" , null , null , null )
120130 val buildResponse = retroRestClient.createWorkspaceBuild(workspaceID, buildRequest).execute()
@@ -134,4 +144,16 @@ class CoderRestClientService {
134144
135145 return buildResponse.body()!!
136146 }
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+ }
137159}
0 commit comments