diff --git a/platform/platform-impl/src/com/intellij/remote/VagrantNotStartedException.java b/platform/platform-impl/src/com/intellij/remote/VagrantNotStartedException.java index e73341f14cd9..65fab67e53df 100644 --- a/platform/platform-impl/src/com/intellij/remote/VagrantNotStartedException.java +++ b/platform/platform-impl/src/com/intellij/remote/VagrantNotStartedException.java @@ -20,13 +20,20 @@ package com.intellij.remote; */ public class VagrantNotStartedException extends RuntimeException { private String myVagrantFolder; + private String myMachineName; - public VagrantNotStartedException(String message, String vagrantFolder) { + public VagrantNotStartedException(String message, String vagrantFolder, String machineName) { super(message); myVagrantFolder = vagrantFolder; + + myMachineName = machineName; } public String getVagrantFolder() { return myVagrantFolder; } + + public String getMachineName() { + return myMachineName; + } } diff --git a/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java b/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java index 01cc8e0bd52d..d93a2914400c 100644 --- a/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java +++ b/platform/platform-impl/src/com/intellij/remote/VagrantSupport.java @@ -69,9 +69,9 @@ public abstract class VagrantSupport { @NotNull public abstract RemoteCredentials getCredentials(@NotNull String vagrantFolder, @Nullable String machineName) throws IOException; - public abstract boolean checkVagrantRunning(String folder, boolean askToRunIfDown); + public abstract boolean checkVagrantRunning(@NotNull String vagrantFolder, @Nullable String machineName, boolean askToRunIfDown); - public abstract void runVagrant(String folder) throws ExecutionException; + public abstract void runVagrant(@NotNull String vagrantFolder, @Nullable String machineName) throws ExecutionException; public abstract Collection getVagrantInstancesConnectors(@NotNull Project project); diff --git a/python/src/com/jetbrains/python/packaging/PyRemotePackageManagerImpl.java b/python/src/com/jetbrains/python/packaging/PyRemotePackageManagerImpl.java index 22045d1565ea..15c07486c8d8 100644 --- a/python/src/com/jetbrains/python/packaging/PyRemotePackageManagerImpl.java +++ b/python/src/com/jetbrains/python/packaging/PyRemotePackageManagerImpl.java @@ -92,8 +92,8 @@ public class PyRemotePackageManagerImpl extends PyPackageManagerImpl { } catch (InterruptedException e) { LOG.error(e); - remoteSdkCredentials = null; - } + remoteSdkCredentials = null; + } catch (ExecutionException e) { throw analyzeException(e, helperPath, args); } @@ -136,9 +136,9 @@ public class PyRemotePackageManagerImpl extends PyPackageManagerImpl { private ExecutionException analyzeException(ExecutionException exception, String command, List args) { final Throwable cause = exception.getCause(); if (cause instanceof VagrantNotStartedException) { - final String vagrantFolder = ((VagrantNotStartedException)cause).getVagrantFolder(); return new PyExecutionException("Vagrant instance is down", command, args, "", "", 0, - ImmutableList.of(new LaunchVagrantFix(vagrantFolder))); + ImmutableList.of(new LaunchVagrantFix(((VagrantNotStartedException)cause).getVagrantFolder(), + ((VagrantNotStartedException)cause).getMachineName()))); } return exception; } @@ -160,9 +160,11 @@ public class PyRemotePackageManagerImpl extends PyPackageManagerImpl { private class LaunchVagrantFix implements PyExecutionFix { @NotNull private final String myVagrantFolder; + @Nullable private final String myMachineName; - public LaunchVagrantFix(@NotNull String vagrantFolder) { + public LaunchVagrantFix(@NotNull String vagrantFolder, @Nullable String machineName) { myVagrantFolder = vagrantFolder; + myMachineName = machineName; } @NotNull @@ -176,7 +178,7 @@ public class PyRemotePackageManagerImpl extends PyPackageManagerImpl { final PythonRemoteInterpreterManager manager = PythonRemoteInterpreterManager.getInstance(); if (manager != null) { try { - manager.runVagrant(myVagrantFolder); + manager.runVagrant(myVagrantFolder, myMachineName); clearCaches(); } catch (ExecutionException e) { diff --git a/python/src/com/jetbrains/python/remote/PythonRemoteInterpreterManager.java b/python/src/com/jetbrains/python/remote/PythonRemoteInterpreterManager.java index cb68748b1e71..e213446d798d 100644 --- a/python/src/com/jetbrains/python/remote/PythonRemoteInterpreterManager.java +++ b/python/src/com/jetbrains/python/remote/PythonRemoteInterpreterManager.java @@ -169,6 +169,6 @@ public abstract class PythonRemoteInterpreterManager { } } - public abstract void runVagrant(String vagrantFolder) throws ExecutionException; + public abstract void runVagrant(@NotNull String vagrantFolder, @Nullable String machineName) throws ExecutionException; } diff --git a/python/src/com/jetbrains/python/sdk/PythonSdkType.java b/python/src/com/jetbrains/python/sdk/PythonSdkType.java index 460c875491ce..bf1e939807f4 100644 --- a/python/src/com/jetbrains/python/sdk/PythonSdkType.java +++ b/python/src/com/jetbrains/python/sdk/PythonSdkType.java @@ -597,7 +597,8 @@ public class PythonSdkType extends SdkType { final PythonRemoteInterpreterManager manager = PythonRemoteInterpreterManager.getInstance(); if (manager != null) { try { - manager.runVagrant(((VagrantNotStartedException)e.getCause()).getVagrantFolder()); + VagrantNotStartedException cause = (VagrantNotStartedException)e.getCause(); + manager.runVagrant(cause.getVagrantFolder(), cause.getMachineName()); } catch (ExecutionException e1) { throw new RuntimeException(e1);