/** * @throws java.lang.IllegalArgumentException if <code>failureType</code> is null */ public static BundleHandoverResponse failure(FailureType failureType, String message) { return failure(failureType, message, null); }
public BundleHandoverContext create() { return new BundleHandoverContext(revert); } }
public BundleHandoverRequest createBundleHandoverRequest() { return new BundleHandoverRequest(content, filename, action, params, context); } }
deploymentMessage); BundleDeployRequest deployRequest = new BundleDeployRequest(); deployRequest.setBundleManagerProvider(BundleManager.this); deployRequest.setResourceDeployment(resourceDeployment); deployRequest.setBundleFilesLocation(bundleFilesDir); deployRequest.setPackageVersionFiles(downloadedFiles); deployRequest.setCleanDeployment(request.isCleanDeployment()); deployRequest.setRevert(request.isRevert()); deployRequest.setDestinationTarget(absoluteDestDir.toURI()); } else { String connectionString = getConnectionString(resourceDeployment); if (connectionString != null) { deployRequest.setDestinationTarget(URI.create(connectionString)); deployRequest.setReferencedConfiguration( createReferencedConfigurationFromResource(resourceDeployment)); 4 * 60 * 60 * 1000; // 4 hours is given to the bundle plugin to do its thing BundleFacet bundlePluginComponent = getBundleFacet(bundleHandlerResourceId, facetMethodTimeout); BundleDeployResult result = bundlePluginComponent.deployBundle(deployRequest); if (result.isSuccess()) { completeDeployment(resourceDeployment, BundleDeploymentStatus.SUCCESS, deploymentMessage); } else { completeDeployment(resourceDeployment, BundleDeploymentStatus.FAILURE, result.getErrorMessage());
filename = request.getFilename(); content = request.getContent(); runtimeName = request.getParams().get("runtimeName"); if (StringUtil.isBlank(runtimeName)) { runtimeName = filename; OutputStream out = uploadConnection.getOutputStream(); if (out == null) { failureResponse = BundleHandoverResponse.failure(EXECUTION, "An error occured while the agent was preparing for content download"); return false; failureResponse = BundleHandoverResponse.failure(EXECUTION, ASUploadConnection.getFailureDescription(uploadResult)); return false;
auditDeployment(resourceDeployment, AUDIT_PURGE_STARTED, bundleDeployment.getName(), deploymentMessage); org.rhq.core.pluginapi.bundle.BundlePurgeRequest purgeRequest = new org.rhq.core.pluginapi.bundle.BundlePurgeRequest(); purgeRequest.setBundleManagerProvider(this); purgeRequest.setLiveResourceDeployment(resourceDeployment); purgeRequest.setDestinationTarget(absoluteDestDir.toURI()); } else { String connectionString = getConnectionString(request.getLiveBundleResourceDeployment()); if (connectionString != null) { purgeRequest.setDestinationTarget(URI.create(connectionString)); purgeRequest.setReferencedConfiguration( createReferencedConfigurationFromResource(request.getLiveBundleResourceDeployment())); 30 * 60 * 1000; // 30 minutes should be enough time for the bundle plugin to purge everything BundleFacet bundlePluginComponent = getBundleFacet(bundleHandlerResourceId, facetMethodTimeout); BundlePurgeResult result = bundlePluginComponent.purgeBundle(purgeRequest); if (result.isSuccess()) { auditDeployment(resourceDeployment, AUDIT_PURGE_ENDED, bundleDeployment.getName(), deploymentMessage); } else { response.setErrorMessage(result.getErrorMessage()); auditDeployment(resourceDeployment, AUDIT_PURGE_ENDED, bundleDeployment.getName(), null, Status.FAILURE, "Failed: " + deploymentMessage, result.getErrorMessage());
@Override public BundlePurgeResult purgeBundle(BundlePurgeRequest request) { BundlePurgeResult result = new BundlePurgeResult(); ServerControl control = ServerControl.onServer(request.getReferencedConfiguration(), AS7Mode.valueOf(request.getDestinationTarget().getPath()), context.getSystemInformation()); Result<Void> check = sanityCheck(control, request.getReferencedConfiguration(), request.getBundleManagerProvider(), request.getLiveResourceDeployment(), false); if (check.failed()) { result.setErrorMessage(check.errorMessage); return result; .forDeployment(request.getLiveResourceDeployment(), request.getReferencedConfiguration()); if (metadata.failed()) { result.setErrorMessage(metadata.errorMessage); return result; ASConnectionParams.createFrom(new ServerPluginConfiguration(request.getReferencedConfiguration()))); String errorMessage = rollbackPatches(control, request.getBundleManagerProvider(), request.getLiveResourceDeployment(), connection, "purge", new ArrayList<String>(pidsToRollback)); result.setErrorMessage(errorMessage); return result; forgetState(request.getLiveResourceDeployment(), request.getReferencedConfiguration());
private BundleHandoverResponse handleDeployment(BundleHandoverRequest handoverRequest) { String serverGroup = handoverRequest.getParams().get("serverGroup"); if (isBlank(serverGroup)) { return BundleHandoverResponse.failure(MISSING_PARAMETER, "serverGroup parameter is missing"); Result result = redeployer.redeployOnServer(); if (result.isRolledBack()) { return BundleHandoverResponse.failure(EXECUTION, result.getFailureDescription()); return BundleHandoverResponse.success(); return BundleHandoverResponse.failure(EXECUTION, result.getFailureDescription()); } else { return BundleHandoverResponse.success();
public BundleHandoverResponse handleContent(BundleHandoverRequest handoverRequest) { try { if (handoverRequest.getAction().equals("deployment")) { return handleDeployment(handoverRequest); if (handoverRequest.getAction().equals("execute-script")) { return handleExecuteScript(handoverRequest); return BundleHandoverResponse.failure(INVALID_ACTION); } catch (Exception e) { return BundleHandoverResponse.failure(EXECUTION, "Unexpected handover failure", e);
@Override public BundleHandoverResponse handoverContent(Resource bundleTarget, BundleHandoverRequest handoverRequest) { try { BundleHandoverFacet component = getBundleHandoverFacet(bundleTarget.getId(), HOURS.toMillis(1)); BundleHandoverResponse report = component.handleContent(handoverRequest); if (report == null) { return BundleHandoverResponse.failure(FailureType.EXECUTION, "Plugin component returned null report"); } return report; } catch (PluginContainerException e) { return BundleHandoverResponse.failure(FailureType.PLUGIN_CONTAINER, "Caught a plugin container exception", e); } }
@Override public String toString() { StringBuilder str = new StringBuilder(this.getClass().getSimpleName()); if (getErrorMessage() != null) { str.append(" error=[").append(getErrorMessage()).append("];"); } str.append(" success=[").append(isSuccess()).append("]"); return str.toString(); }
@Override public String toString() { StringBuilder str = new StringBuilder(this.getClass().getSimpleName()); if (getErrorMessage() != null) { str.append(" error=[").append(getErrorMessage()).append("];"); } str.append(" success=[").append(isSuccess()).append("]"); return str.toString(); }
public static BundleHandoverResponse success() { return success(null); }
private ServerControl onServer(BundleDeployRequest request) { return ServerControl.onServer(request.getReferencedConfiguration(), AS7Mode.valueOf(request.getDestinationTarget().getPath()), context.getSystemInformation()); }
public static BundleHandoverResponse success(String message) { return new BundleHandoverResponse(true, message, null, null); }
private void audit(BundleManagerProvider bmp, BundleResourceDeployment resourceDeployment, String action, String info, BundleResourceDeploymentHistory.Status status, String message) { try { bmp.auditDeployment(resourceDeployment, action, info, BundleResourceDeploymentHistory.Category.AUDIT_MESSAGE, status, message, null); } catch (Exception e) { if (LOG.isDebugEnabled()) { LOG.debug("Failed to report audit deployment.", e); } } }
protected BundleHandoverResponse handleExecuteScript(BundleHandoverRequest handoverRequest) throws IOException { Map<String, String> params = handoverRequest.getParams(); waitTime = Long.parseLong(waitTimeParam); if (waitTime <= 0) { return BundleHandoverResponse.failure(INVALID_PARAMETER, "waitTime must greater than 0"); return BundleHandoverResponse.failure(INVALID_PARAMETER, "waitTime is not a number"); scriptFile = File.createTempFile(handoverRequest.getFilename(), ".tmp", context.getTemporaryDirectory()); FileUtil.writeFile(handoverRequest.getContent(), scriptFile); return BundleHandoverResponse.failure(EXECUTION, error.getMessage(), error); return BundleHandoverResponse.failure(EXECUTION, "Timeout waiting for completion of the CLI process"); return BundleHandoverResponse.failure(EXECUTION, "CLI process exit code is " + exitCode); return BundleHandoverResponse.success();
public BundleHandoverResponse handleContent(BundleHandoverRequest handoverRequest) { try { if (handoverRequest.getAction().equals("deployment")) { return handleDeployment(handoverRequest); if (handoverRequest.getAction().equals("execute-script")) { return handleExecuteScript(handoverRequest); return BundleHandoverResponse.failure(INVALID_ACTION); } catch (Exception e) { return BundleHandoverResponse.failure(EXECUTION, "Unexpected handover failure", e);
/** * @throws java.lang.IllegalArgumentException if <code>failureType</code> is null */ public static BundleHandoverResponse failure(FailureType failureType) { return failure(failureType, null, null); }
/** * @throws java.lang.IllegalArgumentException if <code>failureType</code> is null */ public static BundleHandoverResponse failure(FailureType failureType, String message, Throwable throwable) { if (failureType == null) { throw new IllegalArgumentException("failureType is null"); } return new BundleHandoverResponse(false, message, throwable, failureType); }