mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
Check status and launch only one Vagrant machine.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<? extends RemoteConnector> getVagrantInstancesConnectors(@NotNull Project project);
|
||||
|
||||
|
||||
@@ -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<String> 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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user