Search in sources :

Example 1 with ProcessStartListener

use of com.google.cloud.tools.appengine.cloudsdk.process.ProcessStartListener in project google-cloud-intellij by GoogleCloudPlatform.

the class AppEngineDeploy method deploy.

/**
 * Given a staging directory, deploy the application to Google App Engine.
 */
// TODO(eshaul) break this down into smaller parts
public void deploy(@NotNull Path stagingDirectory, @NotNull ProcessStartListener deployStartListener) {
    final StringBuilder rawDeployOutput = new StringBuilder();
    DefaultDeployConfiguration configuration = new DefaultDeployConfiguration();
    String appYamlName;
    if (environment.isStandard() || environment.isFlexCompat()) {
        appYamlName = FlexibleFacetEditor.APP_YAML_FILE_NAME;
    } else {
        String moduleName = deploymentConfiguration.getModuleName();
        if (StringUtils.isEmpty(moduleName)) {
            callback.errorOccurred(GctBundle.message("appengine.deployment.error.appyaml.notspecified"));
            return;
        }
        AppEngineFlexibleFacet flexFacet = AppEngineFlexibleFacet.getFacetByModuleName(moduleName, helper.getProject());
        if (flexFacet == null) {
            // This should not happen since staging already verified the file
            callback.errorOccurred(GctBundle.message("appengine.deployment.error.appyaml.notfound"));
            return;
        } else {
            appYamlName = Paths.get(flexFacet.getConfiguration().getAppYamlPath()).getFileName().toString();
        }
    }
    List<File> deployables = APPENGINE_EXTRA_CONFIG_FILE_PATHS.stream().map(configFilePath -> stagingDirectory.resolve(configFilePath).toFile()).filter(configFile -> deploymentConfiguration.isDeployAllConfigs() && configFile.exists()).collect(Collectors.toList());
    deployables.add(stagingDirectory.resolve(appYamlName).toFile());
    configuration.setDeployables(deployables);
    configuration.setProject(deploymentConfiguration.getCloudProjectName());
    configuration.setPromote(deploymentConfiguration.isPromote());
    // promoting).
    if ((environment.isFlexible() || environment.isFlexCompat()) && deploymentConfiguration.isPromote()) {
        configuration.setStopPreviousVersion(deploymentConfiguration.isStopPreviousVersion());
    }
    if (!StringUtil.isEmpty(deploymentConfiguration.getVersion())) {
        configuration.setVersion(deploymentConfiguration.getVersion());
    }
    ProcessExitListener deployExitListener = new DeployExitListener(rawDeployOutput);
    CloudSdk sdk = helper.createSdk(loggingHandler, deployStartListener, line -> loggingHandler.print(line + "\n"), rawDeployOutput::append, deployExitListener);
    // show a warning notification if the cloud sdk version is not supported
    CloudSdkVersionNotifier.getInstance().notifyIfUnsupportedVersion();
    CloudSdkAppEngineDeployment deployment = new CloudSdkAppEngineDeployment(sdk);
    deployment.deploy(configuration);
}
Also used : JsonParseException(com.google.gson.JsonParseException) StringUtils(org.apache.commons.lang.StringUtils) TypeToken(com.google.gson.reflect.TypeToken) VisibleForTesting(com.google.api.client.repackaged.com.google.common.annotations.VisibleForTesting) DefaultDeployConfiguration(com.google.cloud.tools.appengine.api.deploy.DefaultDeployConfiguration) ProcessStartListener(com.google.cloud.tools.appengine.cloudsdk.process.ProcessStartListener) AppEngineFlexibleFacet(com.google.cloud.tools.intellij.appengine.facet.flexible.AppEngineFlexibleFacet) FlexibleFacetEditor(com.google.cloud.tools.intellij.appengine.facet.flexible.FlexibleFacetEditor) ImmutableList(com.google.common.collect.ImmutableList) Gson(com.google.gson.Gson) CloudSdkVersionNotifier(com.google.cloud.tools.intellij.appengine.sdk.CloudSdkVersionNotifier) DeploymentOperationCallback(com.intellij.remoteServer.runtime.deployment.ServerRuntimeInstance.DeploymentOperationCallback) GctBundle(com.google.cloud.tools.intellij.util.GctBundle) LoggingHandler(com.intellij.remoteServer.runtime.log.LoggingHandler) CloudSdk(com.google.cloud.tools.appengine.cloudsdk.CloudSdk) Logger(com.intellij.openapi.diagnostic.Logger) Path(java.nio.file.Path) ProcessExitListener(com.google.cloud.tools.appengine.cloudsdk.process.ProcessExitListener) StringUtil(com.intellij.openapi.util.text.StringUtil) Collectors(java.util.stream.Collectors) File(java.io.File) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) Type(java.lang.reflect.Type) Paths(java.nio.file.Paths) CloudSdkAppEngineDeployment(com.google.cloud.tools.appengine.cloudsdk.CloudSdkAppEngineDeployment) NotNull(org.jetbrains.annotations.NotNull) ProcessExitListener(com.google.cloud.tools.appengine.cloudsdk.process.ProcessExitListener) CloudSdkAppEngineDeployment(com.google.cloud.tools.appengine.cloudsdk.CloudSdkAppEngineDeployment) AppEngineFlexibleFacet(com.google.cloud.tools.intellij.appengine.facet.flexible.AppEngineFlexibleFacet) DefaultDeployConfiguration(com.google.cloud.tools.appengine.api.deploy.DefaultDeployConfiguration) CloudSdk(com.google.cloud.tools.appengine.cloudsdk.CloudSdk) File(java.io.File)

Aggregations

VisibleForTesting (com.google.api.client.repackaged.com.google.common.annotations.VisibleForTesting)1 DefaultDeployConfiguration (com.google.cloud.tools.appengine.api.deploy.DefaultDeployConfiguration)1 CloudSdk (com.google.cloud.tools.appengine.cloudsdk.CloudSdk)1 CloudSdkAppEngineDeployment (com.google.cloud.tools.appengine.cloudsdk.CloudSdkAppEngineDeployment)1 ProcessExitListener (com.google.cloud.tools.appengine.cloudsdk.process.ProcessExitListener)1 ProcessStartListener (com.google.cloud.tools.appengine.cloudsdk.process.ProcessStartListener)1 AppEngineFlexibleFacet (com.google.cloud.tools.intellij.appengine.facet.flexible.AppEngineFlexibleFacet)1 FlexibleFacetEditor (com.google.cloud.tools.intellij.appengine.facet.flexible.FlexibleFacetEditor)1 CloudSdkVersionNotifier (com.google.cloud.tools.intellij.appengine.sdk.CloudSdkVersionNotifier)1 GctBundle (com.google.cloud.tools.intellij.util.GctBundle)1 ImmutableList (com.google.common.collect.ImmutableList)1 Gson (com.google.gson.Gson)1 JsonParseException (com.google.gson.JsonParseException)1 TypeToken (com.google.gson.reflect.TypeToken)1 Logger (com.intellij.openapi.diagnostic.Logger)1 StringUtil (com.intellij.openapi.util.text.StringUtil)1 DeploymentOperationCallback (com.intellij.remoteServer.runtime.deployment.ServerRuntimeInstance.DeploymentOperationCallback)1 LoggingHandler (com.intellij.remoteServer.runtime.log.LoggingHandler)1 File (java.io.File)1 Type (java.lang.reflect.Type)1