1212
1313import com .google .common .base .Strings ;
1414
15- import org .eclipse .che .api .core .model .workspace .Environment ;
16- import org .eclipse .che .api .core .model .workspace .ExtendedMachine ;
1715import org .eclipse .che .api .core .util .SystemInfo ;
1816import org .eclipse .che .api .environment .server .AgentConfigApplier ;
1917import org .eclipse .che .api .environment .server .DefaultInfrastructureProvisioner ;
2018import org .eclipse .che .api .environment .server .exception .EnvironmentException ;
2119import org .eclipse .che .api .environment .server .model .CheServiceImpl ;
2220import org .eclipse .che .api .environment .server .model .CheServicesEnvironmentImpl ;
21+ import org .eclipse .che .api .workspace .server .model .impl .EnvironmentImpl ;
22+ import org .eclipse .che .api .workspace .server .model .impl .ExtendedMachineImpl ;
2323import org .eclipse .che .commons .annotation .Nullable ;
2424import org .eclipse .che .commons .lang .os .WindowsPathEscaper ;
2525import org .eclipse .che .inject .CheBootstrap ;
3131import javax .inject .Inject ;
3232import javax .inject .Named ;
3333import java .io .IOException ;
34+ import java .util .ArrayList ;
35+ import java .util .HashMap ;
3436import java .util .List ;
3537
3638import static java .lang .String .format ;
@@ -74,14 +76,20 @@ public LocalCheInfrastructureProvisioner(AgentConfigApplier agentConfigApplier,
7476 }
7577
7678 @ Override
77- public void provision (Environment envConfig , CheServicesEnvironmentImpl internalEnv ) throws EnvironmentException {
79+ public void provision (EnvironmentImpl envConfig , CheServicesEnvironmentImpl internalEnv )
80+ throws EnvironmentException {
7881 String devMachineName = getDevMachineName (envConfig );
7982 if (devMachineName == null ) {
8083 throw new EnvironmentException ("ws-machine is not found on agents applying" );
8184 }
8285
8386 CheServiceImpl devMachine = internalEnv .getServices ().get (devMachineName );
84- List <String > devMachineVolumes = devMachine .getVolumes ();
87+
88+ for (CheServiceImpl machine : internalEnv .getServices ().values ()) {
89+ ArrayList <String > volumes = new ArrayList <>(machine .getVolumes ());
90+ volumes .add (terminalVolumeProvider .get ());
91+ machine .setVolumes (volumes );
92+ }
8593
8694 // add bind-mount volume for projects in a workspace
8795 String projectFolderVolume ;
@@ -93,6 +101,7 @@ public void provision(Environment envConfig, CheServicesEnvironmentImpl internal
93101 throw new EnvironmentException ("Error occurred on resolving path to files of workspace " +
94102 internalEnv .getWorkspaceId ());
95103 }
104+ List <String > devMachineVolumes = devMachine .getVolumes ();
96105 devMachineVolumes .add (SystemInfo .isWindows () ? pathEscaper .escapePath (projectFolderVolume )
97106 : projectFolderVolume );
98107 // add volume with ws-agent archive
@@ -102,19 +111,17 @@ public void provision(Environment envConfig, CheServicesEnvironmentImpl internal
102111 if (dockerExtConfVolume != null ) {
103112 devMachineVolumes .add (dockerExtConfVolume );
104113 }
105- devMachine .getEnvironment ().put (CheBootstrap .CHE_LOCAL_CONF_DIR ,
106- DockerExtConfBindingProvider .EXT_CHE_LOCAL_CONF_DIR );
107-
108- for (CheServiceImpl machine : internalEnv .getServices ().values ()) {
109- machine .getVolumes ().add (terminalVolumeProvider .get ());
110- }
114+ HashMap <String , String > environmentVars = new HashMap <>(devMachine .getEnvironment ());
115+ environmentVars .put (CheBootstrap .CHE_LOCAL_CONF_DIR , DockerExtConfBindingProvider .EXT_CHE_LOCAL_CONF_DIR );
116+ devMachine .setEnvironment (environmentVars );
111117
112118 // apply basic infra (e.g. agents)
113119 super .provision (envConfig , internalEnv );
114120 }
115121
116122 @ Override
117- public void provision (ExtendedMachine machineConfig , CheServiceImpl internalMachine ) throws EnvironmentException {
123+ public void provision (ExtendedMachineImpl machineConfig , CheServiceImpl internalMachine )
124+ throws EnvironmentException {
118125 internalMachine .getVolumes ().add (terminalVolumeProvider .get ());
119126
120127 super .provision (machineConfig , internalMachine );
0 commit comments