private DeployPackagesResponse failApplicationDeployment(String errorMessage, ResourcePackageDetails packageDetails) { DeployPackagesResponse response = new DeployPackagesResponse(ContentResponseResult.FAILURE); DeployIndividualPackageResponse packageResponse = new DeployIndividualPackageResponse(packageDetails.getKey(), ContentResponseResult.FAILURE); packageResponse.setErrorMessage(errorMessage); response.addPackageResponse(packageResponse); return response; }
@Override public RemovePackagesResponse removePackages(Set<ResourcePackageDetails> packages) { RemovePackagesResponse response = new RemovePackagesResponse(ContentResponseResult.NOT_PERFORMED); response.setOverallRequestErrorMessage("Removal of packages backing the deployments is not supported."); return response; }
public RemovePackagesResponse(ContentResponseResult overallRequestResult) { setOverallRequestResult(overallRequestResult); }
@Override public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type) { if (deploymentFile == null) { return Collections.emptySet(); } String name = getDeploymentName(); String sha256 = getSHA256(deploymentFile); String version = getVersion(sha256); PackageDetailsKey key = new PackageDetailsKey(name, version, type.getName(), "noarch"); ResourcePackageDetails details = new ResourcePackageDetails(key); details.setDisplayVersion(getDisplayVersion(deploymentFile)); details.setFileCreatedDate(null); //TODO figure this out from Sigar somehow? details.setFileName(name); details.setFileSize(deploymentFile.length()); details.setInstallationTimestamp(deploymentFile.lastModified()); details.setLocation(deploymentFile.getAbsolutePath()); details.setSHA256(sha256); return Collections.singleton(details); }
public static ResourcePackageDetails packageVersionToDetails(PackageVersion packageVersion) { Package generalPackage = packageVersion.getGeneralPackage(); PackageDetailsKey key = new PackageDetailsKey(generalPackage.getName(), packageVersion.getVersion(), packageVersion.getGeneralPackage().getPackageType().getName(), packageVersion.getArchitecture().getName()); ResourcePackageDetails details = new ResourcePackageDetails(key); details.setClassification(generalPackage.getClassification()); details.setDisplayName(packageVersion.getDisplayName()); details.setFileCreatedDate(packageVersion.getFileCreatedDate()); details.setFileName(packageVersion.getFileName()); details.setFileSize(packageVersion.getFileSize()); details.setLicenseName(packageVersion.getLicenseName()); details.setLicenseVersion(packageVersion.getLicenseVersion()); details.setLongDescription(packageVersion.getLongDescription()); details.setMD5(packageVersion.getMD5()); details.setMetadata(packageVersion.getMetadata()); details.setSHA256(packageVersion.getSHA256()); details.setShortDescription(packageVersion.getShortDescription()); Long created = packageVersion.getFileCreatedDate(); if (created != null) { details.setInstallationTimestamp(created.longValue()); } return details; }
@Override public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails> packages, ContentServices contentServices) { getLog().debug("Starting deployment.."); DeployPackagesResponse response = new DeployPackagesResponse(); response.setOverallRequestResult(ContentResponseResult.FAILURE); response.setOverallRequestErrorMessage("Can only deploy one package at a time"); getLog().warn("deployPackages can only deploy one package at a time"); .getKey().getName()); OutputStream out = uploadConnection.getOutputStream(); if (out == null) { response.setOverallRequestResult(ContentResponseResult.FAILURE); response .setOverallRequestErrorMessage("An error occured while the agent was preparing for content download"); return response; getLog().info("Deploying " + resourceType.getName() + " Resource with key [" + detail.getKey() + "]..."); contentServices.downloadPackageBits(context.getContentContext(), detail.getKey(), out, true); } catch (Exception e) { uploadConnection.cancelUpload(); response.setOverallRequestResult(ContentResponseResult.FAILURE); response.setOverallRequestErrorMessage("An error occured while the agent was downloading the content"); return response; response.setOverallRequestResult(ContentResponseResult.FAILURE); response.setOverallRequestErrorMessage(ASUploadConnection.getFailureDescription(uploadResult)); return response;
DeployPackagesResponse response = new DeployPackagesResponse(); String packageName = details.getName(); OutputStream out = uploadConnection.getOutputStream(); if (out == null) { response.addPackageResponse(new DeployIndividualPackageResponse(details.getKey(), ContentResponseResult.FAILURE)); continue; contentServices.downloadPackageBits(cctx, details.getKey(), out, false); } catch (Exception e) { uploadConnection.cancelUpload(); response.addPackageResponse(new DeployIndividualPackageResponse(details.getKey(), ContentResponseResult.FAILURE)); continue; response.addPackageResponse(new DeployIndividualPackageResponse(details.getKey(), ContentResponseResult.FAILURE)); else { DeployIndividualPackageResponse individualPackageResponse = new DeployIndividualPackageResponse( details.getKey(), ContentResponseResult.SUCCESS); response.addPackageResponse(individualPackageResponse); response.setOverallRequestResult(ContentResponseResult.SUCCESS); response.addPackageResponse(new DeployIndividualPackageResponse(details.getKey(), ContentResponseResult.FAILURE)); } else { response.addPackageResponse(new DeployIndividualPackageResponse(details.getKey(),
response = contentManager.performPackageDeployment(request.getResourceId(), request.getPackages()); } catch (Throwable throwable) { response = new DeployPackagesResponse(ContentResponseResult.FAILURE); response.setOverallRequestErrorMessage(ThrowableUtil.getStackAsString(throwable)); response.setRequestId(request.getRequestId()); Set<DeployIndividualPackageResponse> packageResponses = response.getPackageResponses(); if (packageResponses != null) { PackageDetailsKey key = individualResponse.getKey(); individualResponse.getKey().getPackageTypeName()); } catch (Throwable throwable) { log.error("Error occurred on content discovery request" + throwable); if (response.getOverallRequestResult() == ContentResponseResult.SUCCESS) {
public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails> packages, ContentServices contentServices) { DeployPackagesResponse response = new DeployPackagesResponse(ContentResponseResult.FAILURE); response.setOverallRequestErrorMessage("When deploying WAR files only one can be updated at a time."); return response; DeployPackagesResponse response = new DeployPackagesResponse(ContentResponseResult.SUCCESS); DeployIndividualPackageResponse packageResponse = new DeployIndividualPackageResponse(packageDetails.getKey(), ContentResponseResult.SUCCESS); response.addPackageResponse(packageResponse);
response = contentManager.performPackageDelete(request.getResourceId(), request.getPackages()); } catch (Throwable throwable) { response = new RemovePackagesResponse(ContentResponseResult.FAILURE); response.setOverallRequestErrorMessage(ThrowableUtil.getStackAsString(throwable)); response.setRequestId(request.getRequestId()); Set<RemoveIndividualPackageResponse> packageResponses = response.getPackageResponses(); if (packageResponses != null) { PackageDetailsKey key = individualResponse.getKey();
query.setParameter("id", response.getRequestId()); ContentServiceRequest persistedRequest = (ContentServiceRequest) query.getSingleResult(); persistedRequest.setErrorMessage(response.getOverallRequestErrorMessage()); persistedRequest.setStatus(translateRequestResultStatus(response.getOverallRequestResult())); for (RemoveIndividualPackageResponse singleResponse : response.getPackageResponses()) { PackageDetailsKey key = singleResponse.getKey(); Query packageVersionQuery = entityManager .createNamedQuery(PackageVersion.QUERY_FIND_BY_PACKAGE_DETAILS_KEY_WITH_NON_NULL_RESOURCE_TYPE); history.setTimestamp(timestamp); if (singleResponse.getResult() == ContentResponseResult.SUCCESS) { history.setStatus(InstalledPackageHistoryStatus.DELETED); history.setErrorMessage(singleResponse.getErrorMessage()); if (response.getOverallRequestResult() == ContentResponseResult.SUCCESS) { history.setStatus(InstalledPackageHistoryStatus.DELETED); } else {
PackageDetailsKey key = packageDetails.getKey(); Query packageVersionQuery = entityManager .createNamedQuery(PackageVersion.QUERY_FIND_BY_PACKAGE_DETAILS_KEY_WITH_NON_NULL_RESOURCE_TYPE); history.setDeploymentConfigurationValues(packageDetails.getDeploymentTimeConfiguration()); history.setPackageVersion(packageVersion); history.setResource(resource);
/** * Translates the transfer object representation of package deployment steps into domain entities. * * @param transferSteps cannot be <code>null</code> * @param history history item the steps are a part of, this will be used when creating the domain entities * to establish the relationship * @return list of domain entities */ private List<PackageInstallationStep> translateInstallationSteps(List<DeployPackageStep> transferSteps, InstalledPackageHistory history) { List<PackageInstallationStep> steps = new ArrayList<PackageInstallationStep>(transferSteps.size()); int stepOrder = 0; for (DeployPackageStep transferStep : transferSteps) { PackageInstallationStep step = new PackageInstallationStep(); step.setDescription(transferStep.getDescription()); step.setKey(transferStep.getStepKey()); step.setResult(transferStep.getStepResult()); step.setErrorMessage(transferStep.getStepErrorMessage()); step.setOrder(stepOrder++); step.setInstalledPackageHistory(history); steps.add(step); } return steps; }
@Override public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type) { Operation op = new ReadChildrenNames(address, "deployment"); // TODO read full packages not only names Result node = getASConnection().execute(op); if (!node.isSuccess()) return null; List<String> resultList = (List<String>) node.getResult(); // TODO needs checking Set<ResourcePackageDetails> details = new HashSet<ResourcePackageDetails>(); for (String file : resultList) { String t; if (file.contains(".")) t = file.substring(file.lastIndexOf(".") + 1); else t = "-none-"; ResourcePackageDetails detail = new ResourcePackageDetails(new PackageDetailsKey(file, "1.0", t, "all")); details.add(detail); } return details; }
@Override public void deployPackagesWithNote(Subject user, int[] resourceIds, int[] packageVersionIds, String requestNotes) { for (int resourceId : resourceIds) { Set<ResourcePackageDetails> packages = new HashSet<ResourcePackageDetails>(); for (int packageVersionId : packageVersionIds) { PackageVersion packageVersion = entityManager.find(PackageVersion.class, packageVersionId); if (packageVersion == null) { throw new IllegalArgumentException("PackageVersion: [" + packageVersionId + "] not found!"); } ResourcePackageDetails details = ContentManagerHelper.packageVersionToDetails(packageVersion); details.setInstallationTimestamp(System.currentTimeMillis()); packages.add(details); } deployPackages(user, resourceId, packages, requestNotes); } }
public DeployPackagesResponse(ContentResponseResult overallRequestResult) { setOverallRequestResult(overallRequestResult); }
public RemoveIndividualPackageResponse(PackageDetailsKey key, ContentResponseResult result) { if (key == null) { throw new IllegalArgumentException("key cannot be null"); } setResult(result); this.key = key; }
public DeployIndividualPackageResponse(PackageDetailsKey key, ContentResponseResult result) { if (key == null) { throw new IllegalArgumentException("key cannot be null"); } setResult(result); this.key = key; }
public List<SubscribedRepo> findSubscriptions(Subject subject, int resourceId) { if (!authzManager.canViewResource(subject, resourceId)) { throw new PermissionException("User [" + subject + "] can't view resource with id " + resourceId); } List<SubscribedRepo> list = new ArrayList<SubscribedRepo>(); PageControl pc = new PageControl(); for (RepoComposite repoComposite : findResourceSubscriptions(subject, resourceId, pc)) { Repo repo = repoComposite.getRepo(); SubscribedRepo summary = new SubscribedRepo(repo.getId(), repo.getName()); list.add(summary); } return list; }
public Set<ResourcePackageDetails> discoverDeployedPackages(PackageType type) { Set<ResourcePackageDetails> packages = new HashSet<ResourcePackageDetails>(); Configuration pluginConfiguration = getResourceContext().getPluginConfiguration(); String fullFileName = pluginConfiguration.getSimpleValue(PROPERTY_FILENAME, null); if (fullFileName == null) { throw new IllegalStateException("Plugin configuration does not contain the full file name of the WAR file."); } // If the parent WAR resource was found, this file should exist File file = new File(fullFileName); if (file.exists()) { // Package name and file name of the application are the same String fileName = new File(fullFileName).getName(); String sha256 = getSHA256(file); String version = getVersion(sha256); String displayVersion = getDisplayVersion(file); PackageDetailsKey key = new PackageDetailsKey(fileName, version, PKG_TYPE_FILE, ARCHITECTURE); ResourcePackageDetails details = new ResourcePackageDetails(key); details.setFileName(fileName); details.setLocation(file.getPath()); if (!file.isDirectory()) details.setFileSize(file.length()); details.setFileCreatedDate(null); // TODO: get created date via SIGAR details.setInstallationTimestamp(System.currentTimeMillis()); // TODO: anything better than discovery time details.setSHA256(sha256); details.setDisplayVersion(displayVersion); packages.add(details); } return packages; }