import org.springframework.web.client.RestTemplate; //导入方法依赖的package包/类
/**
* Starts and gets a workspace by its name.
*
* @param cheServerURL
* Che server URL
* @param workspaceName
* name of workspace to start
* @return started workspace
* @throws WorkspaceNotFound
*/
public Workspace startWorkspace(String cheServerURL, String workspaceName, String masterUrl, String namespace,
String openShiftToken, String keycloakToken) throws WorkspaceNotFound {
List workspaces = listWorkspaces(cheServerURL, keycloakToken);
boolean alreadyStarted = false;
Workspace workspaceToStart = null;
for (Workspace workspace : workspaces) {
if (workspace.getConfig().getName().equals(workspaceName)) {
workspaceToStart = workspace;
if (WorkspaceState.RUNNING.toString().equals(workspace.getStatus())
|| WorkspaceState.STARTING.toString().equals(workspace.getStatus())) {
alreadyStarted = true;
}
} else if (!WorkspaceState.STOPPED.toString().equals(workspace.getStatus())) {
stopWorkspace(cheServerURL, workspace, keycloakToken);
waitUntilWorkspaceIsStopped(masterUrl, namespace, openShiftToken, cheServerURL, workspace, keycloakToken);
}
}
if (workspaceToStart == null) {
throw new WorkspaceNotFound("Workspace '" + workspaceName + "' does not exist.");
}
if (!alreadyStarted) {
String url = CheRestEndpoints.START_WORKSPACE.generateUrl(cheServerURL, workspaceToStart.getId());
RestTemplate template = new KeycloakRestTemplate(keycloakToken);
template.postForLocation(url, null);
}
return workspaceToStart;
}