use of com.google.cloud.tools.appengine.cloudsdk.CloudSdk 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);
}
use of com.google.cloud.tools.appengine.cloudsdk.CloudSdk in project google-cloud-intellij by GoogleCloudPlatform.
the class AppEngineStop method stop.
/**
* Stops the given module / version of an App Engine application.
*/
public void stop(@NotNull String module, @NotNull String version, @NotNull ProcessStartListener startListener) {
ProcessOutputLineListener outputListener = new ProcessOutputLineListener() {
@Override
public void onOutputLine(String line) {
loggingHandler.print(line + "\n");
}
};
ProcessExitListener stopExitListener = new StopExitListener();
CloudSdk sdk = helper.createSdk(loggingHandler, startListener, outputListener, outputListener, stopExitListener);
DefaultVersionsSelectionConfiguration configuration = new DefaultVersionsSelectionConfiguration();
configuration.setVersions(Collections.singletonList(version));
configuration.setService(module);
configuration.setProject(deploymentConfiguration.getCloudProjectName());
CloudSdkAppEngineVersions command = new CloudSdkAppEngineVersions(sdk);
command.stop(configuration);
}
use of com.google.cloud.tools.appengine.cloudsdk.CloudSdk in project google-cloud-intellij by GoogleCloudPlatform.
the class CloudSdkAppEngineHelper method createSdk.
@Override
public CloudSdk createSdk(LoggingHandler loggingHandler, ProcessStartListener startListener, ProcessOutputLineListener logListener, ProcessOutputLineListener outputListener, ProcessExitListener exitListener) {
if (credentialsPath == null) {
loggingHandler.print(GctBundle.message("appengine.action.credential.not.found") + "\n");
throw new AppEngineException("Failed to create application default credentials.");
}
PluginInfoService pluginInfoService = ServiceManager.getService(PluginInfoService.class);
CloudSdk.Builder sdkBuilder = new CloudSdk.Builder().sdkPath(CloudSdkService.getInstance().getSdkHomePath()).async(true).addStdErrLineListener(logListener).addStdOutLineListener(outputListener).exitListener(exitListener).startListener(startListener).appCommandCredentialFile(credentialsPath.toFile()).appCommandMetricsEnvironment(pluginInfoService.getExternalPluginName()).appCommandMetricsEnvironmentVersion(pluginInfoService.getPluginVersion()).appCommandOutputFormat("json");
getProjectJavaSdk(project).ifPresent(sdkBuilder::javaHome);
return sdkBuilder.build();
}
use of com.google.cloud.tools.appengine.cloudsdk.CloudSdk in project google-cloud-intellij by GoogleCloudPlatform.
the class CloudSdkValidator method validateCloudSdk.
protected Set<CloudSdkValidationResult> validateCloudSdk(Path path) {
Set<CloudSdkValidationResult> validationResults = new HashSet<>();
if (path == null) {
validationResults.add(CloudSdkValidationResult.CLOUD_SDK_NOT_FOUND);
// If the Cloud SDK is not found, don't bother checking anything else
return validationResults;
}
CloudSdk sdk = buildCloudSdkWithPath(path);
try {
sdk.validateCloudSdk();
} catch (CloudSdkNotFoundException exception) {
validationResults.add(CloudSdkValidationResult.CLOUD_SDK_NOT_FOUND);
// If the Cloud SDK is not found, don't bother checking anything else
return validationResults;
} catch (CloudSdkOutOfDateException exception) {
validationResults.add(com.google.cloud.tools.intellij.appengine.sdk.CloudSdkValidationResult.CLOUD_SDK_VERSION_NOT_SUPPORTED);
}
try {
sdk.validateAppEngineJavaComponents();
} catch (AppEngineJavaComponentsNotInstalledException ex) {
validationResults.add(CloudSdkValidationResult.NO_APP_ENGINE_COMPONENT);
}
return validationResults;
}
use of com.google.cloud.tools.appengine.cloudsdk.CloudSdk in project app-maven-plugin by GoogleCloudPlatform.
the class CloudSdkLoginMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
try {
CloudSdk sdk = getAppEngineFactory().defaultCloudSdkBuilder().build();
new CloudSdkAuth(sdk).login();
} catch (AppEngineException ex) {
throw new RuntimeException(ex);
}
if (getServiceAccountKeyFile() != null) {
getLog().warn("serviceAccountKeyFile is configured and will be used instead of Cloud SDK auth " + "state.");
}
}
Aggregations