Search in sources :

Example 1 with AppEngineExecutor

use of com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineExecutor in project google-cloud-intellij by GoogleCloudPlatform.

the class AppEngineDeploymentRuntime method stop.

private void stop(@NotNull UndeploymentTaskCallback callback) {
    AppEngineStop stop = new AppEngineStop(appEngineHelper, loggingHandler, configuration, callback);
    final AppEngineExecutor stopRunner = new AppEngineExecutor(new AppEngineStopTask(stop, service, version));
    ProgressManager.getInstance().run(new Task.Backgroundable(appEngineHelper.getProject(), "Stop App Engine", true, null) {

        @Override
        public void run(@NotNull ProgressIndicator indicator) {
            ApplicationManager.getApplication().invokeLater(stopRunner);
        }
    });
}
Also used : AppEngineStopTask(com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineStopTask) AppEngineStopTask(com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineStopTask) Task(com.intellij.openapi.progress.Task) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) AppEngineExecutor(com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineExecutor)

Example 2 with AppEngineExecutor

use of com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineExecutor in project google-cloud-intellij by GoogleCloudPlatform.

the class CloudSdkStartupPolicy method createStartupScriptHelper.

@Nullable
@Override
public ScriptHelper createStartupScriptHelper(final ProgramRunner programRunner) {
    return new ScriptHelper() {

        @Nullable
        @Override
        public ExecutableObject getDefaultScript(final CommonModel commonModel) {
            return new ExecutableObject() {

                @Override
                public String getDisplayString() {
                    return GctBundle.getString("appengine.run.startupscript.name");
                }

                @Override
                public OSProcessHandler createProcessHandler(String workingDirectory, Map<String, String> configuredEnvironment) throws ExecutionException {
                    try {
                        CloudSdkServiceManager.getInstance().blockUntilSdkReady(commonModel.getProject(), GctBundle.getString("appengine.run.startupscript"), new CloudSdkStatusHandler() {

                            @Override
                            public void log(String s) {
                                logger.info("Cloud SDK precondition check reported: " + s);
                            }

                            @Override
                            public void onError(String s) {
                                logger.warn("Cloud SDK precondition check reported error: " + s);
                            }

                            @Override
                            public void onUserCancel() {
                            }

                            @Override
                            public String getErrorMessage(SdkStatus sdkStatus) {
                                switch(sdkStatus) {
                                    case INVALID:
                                    case NOT_AVAILABLE:
                                        return GctBundle.message("appengine.run.server.sdk.misconfigured.message");
                                    default:
                                        return "";
                                }
                            }
                        });
                    } catch (InterruptedException e) {
                        // should not happen, but would be an error.
                        throw new ExecutionException(GctBundle.message("appengine.run.server.sdk.misconfigured.message"));
                    }
                    // wait complete, check the final status here manually.
                    SdkStatus sdkStatus = CloudSdkService.getInstance().getStatus();
                    switch(sdkStatus) {
                        case INVALID:
                        case NOT_AVAILABLE:
                            throw new ExecutionException(GctBundle.message("appengine.run.server.sdk.misconfigured.message"));
                        case INSTALLING:
                            // cannot continue still installing.
                            throw new ExecutionException(GctBundle.message("appengine.run.server.sdk.installing.message"));
                        case READY:
                            // continue to start local dev server process.
                            break;
                    }
                    Sdk javaSdk = ProjectRootManager.getInstance(commonModel.getProject()).getProjectSdk();
                    if (javaSdk == null || javaSdk.getHomePath() == null) {
                        throw new ExecutionException(GctBundle.message("appengine.run.server.nosdk"));
                    }
                    AppEngineServerModel runConfiguration;
                    try {
                        // Getting the clone so the debug flags aren't added
                        // to the persisted settings.
                        runConfiguration = (AppEngineServerModel) commonModel.getServerModel().clone();
                    } catch (CloneNotSupportedException ee) {
                        throw new ExecutionException(ee);
                    }
                    Map<String, String> environment = Maps.newHashMap(configuredEnvironment);
                    // IntelliJ appends the JVM flags to the environment
                    // variables, keyed by an empty
                    // string; so we need extract them here.
                    String jvmFlags = environment.get(JVM_FLAGS_ENVIRONMENT_KEY);
                    if (jvmFlags != null) {
                        runConfiguration.appendJvmFlags(Arrays.asList(jvmFlags.trim().split(" ")));
                    }
                    // We don't want to pass the jvm flags to the dev server environment
                    environment.remove(JVM_FLAGS_ENVIRONMENT_KEY);
                    runConfiguration.setEnvironment(environment);
                    AppEngineStandardRunTask runTask = new AppEngineStandardRunTask(runConfiguration, javaSdk, programRunner.getRunnerId());
                    AppEngineExecutor executor = new AppEngineExecutor(runTask);
                    executor.run();
                    Process devappserverProcess = executor.getProcess();
                    startupProcessHandler = new OSProcessHandler(devappserverProcess, GctBundle.getString("appengine.run.startupscript"));
                    return startupProcessHandler;
                }
            };
        }
    };
}
Also used : ExecutableObject(com.intellij.javaee.run.localRun.ExecutableObject) AppEngineServerModel(com.google.cloud.tools.intellij.appengine.server.instance.AppEngineServerModel) AppEngineStandardRunTask(com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineStandardRunTask) AppEngineExecutor(com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineExecutor) CommonModel(com.intellij.javaee.run.configuration.CommonModel) OSProcessHandler(com.intellij.execution.process.OSProcessHandler) CloudSdkStatusHandler(com.google.cloud.tools.intellij.appengine.sdk.CloudSdkServiceManager.CloudSdkStatusHandler) Sdk(com.intellij.openapi.projectRoots.Sdk) ScriptHelper(com.intellij.javaee.run.localRun.ScriptHelper) ExecutionException(com.intellij.execution.ExecutionException) Map(java.util.Map) SdkStatus(com.google.cloud.tools.intellij.appengine.sdk.CloudSdkService.SdkStatus) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

AppEngineExecutor (com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineExecutor)2 AppEngineStandardRunTask (com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineStandardRunTask)1 AppEngineStopTask (com.google.cloud.tools.intellij.appengine.cloud.executor.AppEngineStopTask)1 SdkStatus (com.google.cloud.tools.intellij.appengine.sdk.CloudSdkService.SdkStatus)1 CloudSdkStatusHandler (com.google.cloud.tools.intellij.appengine.sdk.CloudSdkServiceManager.CloudSdkStatusHandler)1 AppEngineServerModel (com.google.cloud.tools.intellij.appengine.server.instance.AppEngineServerModel)1 ExecutionException (com.intellij.execution.ExecutionException)1 OSProcessHandler (com.intellij.execution.process.OSProcessHandler)1 CommonModel (com.intellij.javaee.run.configuration.CommonModel)1 ExecutableObject (com.intellij.javaee.run.localRun.ExecutableObject)1 ScriptHelper (com.intellij.javaee.run.localRun.ScriptHelper)1 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)1 Task (com.intellij.openapi.progress.Task)1 Sdk (com.intellij.openapi.projectRoots.Sdk)1 Map (java.util.Map)1 Nullable (org.jetbrains.annotations.Nullable)1