Skip to content

Commit 4e872e0

Browse files
committed
Adds a /workspace-logs folder linked to the persistent volume
Each pod has a dedicated folder matching the workspace id for the project's source, it is currently using : /projects ---> <PV>/<workspace-name> and for the logs it's now using as well /workspace-logs ---> <PR>/<workspace-name>-logs/ example : /workspace-logs/dev-machine-ws-agent/logs/catalina.log for the log of the dev-machine workspace agent. Change-Id: I2b9d533ba3df2cf55857d8c30d2de5df463a5902 Signed-off-by: Florent BENOIT <fbenoit@redhat.com>
1 parent 8611c99 commit 4e872e0

2 files changed

Lines changed: 28 additions & 5 deletions

File tree

plugins/plugin-docker/che-plugin-openshift-client/src/main/java/org/eclipse/che/plugin/openshift/client/OpenShiftConnector.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ public class OpenShiftConnector extends DockerConnector {
163163
private static final Logger LOG = LoggerFactory.getLogger(OpenShiftConnector.class);
164164
public static final String CHE_OPENSHIFT_RESOURCES_PREFIX = "che-ws-";
165165
public static final String OPENSHIFT_DEPLOYMENT_LABEL = "deployment";
166+
public static final String CHE_MOUNTED_WORKSPACE_FOLDER = "/workspace-logs";
167+
public static final String WORKSPACE_LOGS_FOLDER_SUFFIX = "-logs";
166168

167169
private static final String CHE_CONTAINER_IDENTIFIER_LABEL_KEY = "cheContainerIdentifier";
168170
private static final String CHE_DEFAULT_EXTERNAL_ADDRESS = "172.17.0.1";
@@ -1489,7 +1491,16 @@ private List<VolumeMount> getVolumeMountsFrom(String[] volumes) {
14891491
.withName(workspacesPersistentVolumeClaim)
14901492
.withSubPath(subPath)
14911493
.build();
1494+
1495+
// add a mount from PVC for the logs
1496+
VolumeMount logsVm = new VolumeMountBuilder()
1497+
.withMountPath(CHE_MOUNTED_WORKSPACE_FOLDER)
1498+
.withName(workspacesPersistentVolumeClaim)
1499+
.withSubPath(subPath + WORKSPACE_LOGS_FOLDER_SUFFIX)
1500+
.build();
1501+
14921502
vms.add(vm);
1503+
vms.add(logsVm);
14931504
}
14941505
}
14951506
return vms;

plugins/plugin-docker/che-plugin-openshift-client/src/main/java/org/eclipse/che/plugin/openshift/client/OpenShiftPvcHelper.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
import java.util.Map;
3838
import java.util.Set;
3939
import java.util.concurrent.ConcurrentHashMap;
40+
import java.util.stream.Collectors;
41+
42+
import static org.eclipse.che.plugin.openshift.client.OpenShiftConnector.WORKSPACE_LOGS_FOLDER_SUFFIX;
4043

4144
/**
4245
* Helper class for executing simple commands in a Persistent Volume on Openshift.
@@ -104,12 +107,21 @@ protected boolean createJobPod(String workspacesPvcName,
104107
return true;
105108
}
106109

110+
List<String> logsDirs = Arrays.asList(workspaceDirs);
111+
logsDirs = logsDirs.stream().map(dir -> dir + WORKSPACE_LOGS_FOLDER_SUFFIX).collect(Collectors.toList());
112+
113+
List<String> allDirs = new ArrayList<>();
114+
allDirs.addAll(Arrays.asList(workspaceDirs));
115+
allDirs.addAll(logsDirs);
116+
String[] allDirsArray = allDirs.toArray(new String[allDirs.size()]);
117+
118+
107119
if (Command.MAKE.equals(command)) {
108-
String[] dirsToCreate = filterDirsToCreate(workspaceDirs);
120+
String[] dirsToCreate = filterDirsToCreate(allDirsArray);
109121
if (dirsToCreate.length == 0) {
110122
return true;
111123
}
112-
workspaceDirs = dirsToCreate;
124+
allDirsArray = dirsToCreate;
113125
}
114126

115127
VolumeMount vm = new VolumeMountBuilder()
@@ -126,8 +138,8 @@ protected boolean createJobPod(String workspacesPvcName,
126138
.withName(workspacesPvcName)
127139
.build();
128140

129-
String[] jobCommand = getCommand(command, "/projects/", workspaceDirs);
130-
LOG.info("Executing command {} in PVC {} for {} dirs", jobCommand[0], workspacesPvcName, workspaceDirs.length);
141+
String[] jobCommand = getCommand(command, "/projects/", allDirsArray);
142+
LOG.info("Executing command {} in PVC {} for {} dirs", jobCommand[0], workspacesPvcName, allDirs.size());
131143

132144
Map<String, Quantity> limit = Collections.singletonMap("memory", new Quantity(jobMemoryLimit));
133145

@@ -169,7 +181,7 @@ protected boolean createJobPod(String workspacesPvcName,
169181
LOG.info("Pod command {} failed", Arrays.toString(jobCommand));
170182
case POD_PHASE_SUCCEEDED:
171183
openShiftClient.resource(pod).delete();
172-
updateCreatedDirs(command, phase, workspaceDirs);
184+
updateCreatedDirs(command, phase, allDirsArray);
173185
return POD_PHASE_SUCCEEDED.equals(phase);
174186
default:
175187
Thread.sleep(1000);

0 commit comments

Comments
 (0)