Author: chatellier Date: 2009-12-07 11:12:57 +0000 (Mon, 07 Dec 2009) New Revision: 2803 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties Log: Suppression des fichiers de simulations apres un t?\195?\169l?\195?\169chargement r?\195?\169ussi des r?\195?\169sultats. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-12-07 08:37:23 UTC (rev 2802) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/simulator/launcher/SSHSimulatorLauncher.java 2009-12-07 11:12:57 UTC (rev 2803) @@ -74,14 +74,13 @@ * - $ISIS-TMP/simulation-$id-output.txt * - $ISIS-TMP/simulation-$id-pbs.id * - * TODO revome all $ISIS-TMP/simulation-$id* after simulation end ? - * * @see JSch * * @author chatellier * @version $Revision$ * - * Last update : $Date$ By : $Author$ + * Last update : $Date$ + * By : $Author$ */ public class SSHSimulatorLauncher implements SimulatorLauncher { @@ -297,16 +296,22 @@ * * Se connecte au serveur distant et télécharge les résultats de la * simulation. + * + * Simulation must have been downloaded with + * {@link #updateControl(SimulationService, SimulationControl)} before calling + * this method. */ @Override public SimulationStorage getSimulationStorage( SimulationService simulationService, SimulationControl control) throws RemoteException { - // TODO change, now getSimulationStorage() - // is common to all launchers + // make sure that simulation has been downloaded by #updateControl() + // before calling this method + String simulationId = control.getId(); + SimulationStorage simulationStorage = SimulationStorage - .getSimulation(control.getId()); + .getSimulation(simulationId); return simulationStorage; } @@ -316,6 +321,11 @@ * * Se connecte au serveur distant et télécharge le fichier de control. * Injecte ensuite ce fichier dans le {@link SimulationControl}. + * + * Essaye aussi de telecharger le fichier md5 de la simulation, et, s'il + * est present, l'archive de résultat. + * Supprime tous les fichiers de la simulations apres avoir télécharger les + * résultats. */ @Override public void updateControl(SimulationService simulationService, @@ -334,7 +344,7 @@ // CONTROL file try { // download control file - File controlFile = downloadControlFile(sshSession, control.getId(), + File controlFile = downloadSimulationFile(sshSession, control.getId(), SimulationStorage.CONTROL_FILENAME); if (log.isDebugEnabled()) { log.debug("Control have been downloaded : " @@ -357,8 +367,7 @@ // file doesn't exist if (log.isDebugEnabled()) { // not add ,e plz :) - log.debug(_("Remote control file doesn't exists %s", e - .getMessage())); + log.debug(_("Remote control file doesn't exists %s", e.getMessage())); } } @@ -383,10 +392,6 @@ if (resultArchiveFile != null) { - // FIXME too slow methods - //SimulationStorage.importZip(resultZipFile); - //ZipUtil.uncompress(resultArchiveFile, SimulationStorage.getSimulationDirectory()); - // FIXME big hacks here, only extract non first simulation // only for AS if (control.getId().startsWith("as_") && !control.getId().endsWith("_0")) { @@ -400,14 +405,16 @@ log.debug("Simulation imported : " + resultArchiveFile.getAbsolutePath()); } + resultArchiveFile.delete(); + + // clear all simulation input/output files on remote + // server temp directory + clearSimulationFiles(sshSession, control); + // read control from downloaded simulation synchronized (control) { SimulationStorage.readControl(control.getId(), control, "stop"); } - - resultArchiveFile.delete(); - - // TODO remove remote md5 and zip on remote } else { if (log.isWarnEnabled()) { @@ -427,7 +434,7 @@ // INFORMATION file try { - File infoFile = downloadControlFile(sshSession, control.getId(), + File infoFile = downloadSimulationFile(sshSession, control.getId(), SimulationStorage.INFORMATION_FILENAME); if (log.isDebugEnabled()) { log.debug("Information have been downloaded : " @@ -488,23 +495,6 @@ } /** - * Get opened ssh session or try to open a new one. - * - * This method must synchronized. - * - * @return opened ssh session. - * @throws JSchException - */ - protected synchronized Session getSSHSftpSession() throws JSchException { - - if (sshSftpSession == null || !sshSftpSession.isConnected()) { - sshSftpSession = openSSHSession(); - } - - return sshSftpSession; - } - - /** * Connect to remote server throw SSH, and return session. * * @return valid opened session @@ -742,7 +732,7 @@ * @throws IOException * @throws SSHException if remote file doesn't exists */ - protected File downloadControlFile(Session sshSession, String simulationId, String fileName) + protected File downloadSimulationFile(Session sshSession, String simulationId, String fileName) throws IOException, SSHException { File localFile = null; @@ -800,6 +790,32 @@ } /** + * Remove all {@code $ISIS-TMP/simulation-$id-*} files on caparmor. + * + * @param session valid opened ssh session + * @param control simulation control + */ + protected void clearSimulationFiles(Session session, + SimulationControl control) throws IOException, SSHException { + + control.setText(_("isisfish.simulation.remote.message.deletingfiles")); + + // execute rm -f "isis-tmp/simulation-$id-"* + // on remote. Note * outside quotes !!! + String simulationId = control.getId(); + String command = "rm -f \"" + getRemoteTempDirectory() + "simulation-" + simulationId + "-\"*"; + + if (log.isDebugEnabled()) { + log.debug("Deleting simulation files with command : " + command); + } + + SSHUtils.exec(session, command); + + // can return other things than 0 + // but not a big deal + } + + /** * Upload script on remote server. * * @param session valid opened ssh session @@ -1093,7 +1109,7 @@ /** * Get remote directory absolute path. * - * Don't use File.separator here, caparmor is always unix. + * Don't use {@link File.separator} here, caparmor is always unix. * * @return remote temp directory path */ Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java 2009-12-07 08:37:23 UTC (rev 2802) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigAction.java 2009-12-07 11:12:57 UTC (rev 2803) @@ -63,7 +63,7 @@ protected SSHLauncherConfigUI configUI; protected String currentSSHserver; - protected String currentSSHsftpServer; + //protected String currentSSHsftpServer; protected String currentSSHUsername; protected File currentSSHKey; protected String currentSSHUserhome; @@ -89,7 +89,7 @@ public void resetSSHConfiguration() { // server config configUI.getSshServerField().setText(IsisFish.config.getSimulatorSshServer()); - configUI.getSshSftpServerField().setText(IsisFish.config.getSimulatorSshSftpServer()); + //configUI.getSshSftpServerField().setText(IsisFish.config.getSimulatorSshSftpServer()); configUI.getUsernameField().setText(IsisFish.config.getSimulatorSshUsername()); configUI.getSshKeyField().setText(IsisFish.config.getSSHPrivateKeyFilePath().getAbsolutePath()); @@ -133,8 +133,8 @@ } // copy values - currentSSHsftpServer = configUI.getSshSftpServerField().getText() - .trim(); + //currentSSHsftpServer = configUI.getSshSftpServerField().getText().trim(); + // can be empty (optionnal use) currentSSHUsername = configUI.getUsernameField().getText().trim(); if (!currentSSHUsername.matches("\\w+")) { @@ -205,7 +205,7 @@ */ public void saveSSHConfiguration() { IsisFish.config.setSimulatorSshServer(currentSSHserver); - IsisFish.config.setSimulatorSshSftpServer(currentSSHsftpServer); + //IsisFish.config.setSimulatorSshSftpServer(currentSSHsftpServer); IsisFish.config.setSimulatorSshUsername(currentSSHUsername); IsisFish.config.setSSHPrivateKeyFilePath(currentSSHKey); Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2009-12-07 08:37:23 UTC (rev 2802) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/config/SSHLauncherConfigUI.jaxx 2009-12-07 11:12:57 UTC (rev 2803) @@ -40,7 +40,7 @@ onKeyReleased="getAction().doCheck()" /> </cell> </row> - <row> + <!-- <row> <cell> <JLabel id='sshSftpServerLabel' text='isisfish.config.main.simulation.ssh.sftpserver' toolTipText='isisfish.config.main.simulation.ssh.sftpserver.description' /> @@ -49,7 +49,7 @@ <JTextField id='sshSftpServerField' toolTipText='isisfish.config.main.simulation.ssh.sftpserver.description' onKeyReleased="getAction().doCheck()" enabled="false" /> </cell> - </row> + </row> --> <row fill='horizontal'> <cell> <JLabel id='usernameLabel' text='isisfish.config.main.simulation.ssh.username' Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-12-07 08:37:23 UTC (rev 2802) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-en_GB.properties 2009-12-07 11:12:57 UTC (rev 2803) @@ -178,7 +178,6 @@ isisfish.config.main.simulation.ssh.pbsbinpath.description=PBS executables (qsub, qdel...) directory isisfish.config.main.simulation.ssh.server=Simulation server isisfish.config.main.simulation.ssh.server.description=Simulation server address -isisfish.config.main.simulation.ssh.sftpserver=Transfer server isisfish.config.main.simulation.ssh.sftpserver.description=Transfer server address (set empty to use scp from simulation server) isisfish.config.main.simulation.ssh.tmppath=Server temp directory isisfish.config.main.simulation.ssh.tmppath.description=Server temp directory @@ -920,6 +919,7 @@ isisfish.simulation.menu.simulation=Simulation isisfish.simulation.name=Simulation name isisfish.simulation.remote.message.connection=Connecting to Caparmor +isisfish.simulation.remote.message.deletingfiles=Deleting simulation files isisfish.simulation.remote.message.downloadresults=Downloading results isisfish.simulation.remote.message.upload=Uploading simulation isisfish.simulation.remote.message.waitingstart=Waiting for simulation start Modified: isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties =================================================================== --- isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-12-07 08:37:23 UTC (rev 2802) +++ isis-fish/trunk/src/main/resources/i18n/isis-fish-fr_FR.properties 2009-12-07 11:12:57 UTC (rev 2803) @@ -178,7 +178,6 @@ isisfish.config.main.simulation.ssh.pbsbinpath.description=Emplacement des commandes PBS (qsub, qdel...) sur le serveur isisfish.config.main.simulation.ssh.server=Serveur de simulation isisfish.config.main.simulation.ssh.server.description=Adresse du serveur de simulation -isisfish.config.main.simulation.ssh.sftpserver=Serveur de fichier isisfish.config.main.simulation.ssh.sftpserver.description=Adresse du serveur de transfert de fichier (laisser vide pour utiliser directement scp sur le serveur de simulation) isisfish.config.main.simulation.ssh.tmppath=Dossier temporaire isisfish.config.main.simulation.ssh.tmppath.description=Emplacement du dossier temporaire @@ -920,6 +919,7 @@ isisfish.simulation.menu.simulation=Simulation isisfish.simulation.name=Nom de la simulation isisfish.simulation.remote.message.connection=Connexion \u00E0 Caparmor +isisfish.simulation.remote.message.deletingfiles=Suppression des fichiers de simulation isisfish.simulation.remote.message.downloadresults=T\u00E9l\u00E9chargement des r\u00E9sultats isisfish.simulation.remote.message.upload=Upload de la simulation isisfish.simulation.remote.message.waitingstart=Attente du d\u00E9marrage de la simulation