Package org.rhq.core.domain.content.transfer

Examples of org.rhq.core.domain.content.transfer.ResourcePackageDetails


  }

  public void deploy(CreateResourceReport createResourceReport, ResourceType resourceType) {
        File archiveFile = null;
        try {
            ResourcePackageDetails details = createResourceReport.getPackageDetails();
            PackageDetailsKey key = details.getKey();

            archiveFile = prepareArchive(createResourceReport.getUserSpecifiedResourceName(), key, resourceType);

            String archiveName = archiveFile.getName();
View Full Code Here


      response
          .setOverallRequestErrorMessage("When updating a VDB, only one VDB can be updated at a time."); //$NON-NLS-1$
      return response;
    }

    ResourcePackageDetails packageDetails = packages.iterator().next();

    log.debug("Updating VDB file '" + this.deploymentFile + "' using [" //$NON-NLS-1$ //$NON-NLS-2$
        + packageDetails + "]..."); //$NON-NLS-1$

    log.debug("Writing new VDB bits to temporary file..."); //$NON-NLS-1$
    File tempFile;
    try {
      tempFile = writeNewAppBitsToTempFile(contentServices,
          packageDetails);
    } catch (Exception e) {
      return failApplicationDeployment(
          "Error writing new application bits to temporary file - cause: " //$NON-NLS-1$
              + e, packageDetails);
    }
    log.debug("Wrote new VDB bits to temporary file '" + tempFile //$NON-NLS-1$
        + "'."); //$NON-NLS-1$

    boolean deployExploded = this.deploymentFile.isDirectory();

    // Backup the original app file/dir to <filename>.rej.
    File backupOfOriginalFile = new File(this.deploymentFile.getPath()
        + BACKUP_FILE_EXTENSION);
    log.debug("Backing up existing VDB '" + this.deploymentFile //$NON-NLS-1$
        + "' to '" + backupOfOriginalFile + "'..."); //$NON-NLS-1$ //$NON-NLS-2$
    try {
      if (backupOfOriginalFile.exists())
        FileUtils.forceDelete(backupOfOriginalFile);
      if (this.deploymentFile.isDirectory())
        FileUtils.copyDirectory(this.deploymentFile,
            backupOfOriginalFile, true);
      else
        FileUtils.copyFile(this.deploymentFile, backupOfOriginalFile,
            true);
    } catch (Exception e) {
      throw new RuntimeException("Failed to backup existing EAR/WAR '" //$NON-NLS-1$
          + this.deploymentFile + "' to '" + backupOfOriginalFile //$NON-NLS-1$
          + "'."); //$NON-NLS-1$
    }

    // Now stop the original app.
    try {
      DeploymentManager deploymentManager = getConnection()
          .getDeploymentManager();
      DeploymentProgress progress = deploymentManager
          .stop(this.deploymentUrl);
      DeploymentUtils.run(progress);
    } catch (Exception e) {
      throw new RuntimeException("Failed to stop deployment [" //$NON-NLS-1$
          + this.deploymentUrl + "].", e); //$NON-NLS-1$
    }

    // And then remove it (this will delete the physical file/dir from the
    // deploy dir).
    try {
      DeploymentManager deploymentManager = getConnection()
          .getDeploymentManager();
      DeploymentProgress progress = deploymentManager
          .remove(this.deploymentUrl);
      DeploymentUtils.run(progress);
    } catch (Exception e) {
      throw new RuntimeException("Failed to remove deployment [" //$NON-NLS-1$
          + this.deploymentUrl + "].", e); //$NON-NLS-1$
    }

    // Deploy away!
    log.debug("Deploying '" + tempFile + "'..."); //$NON-NLS-1$ //$NON-NLS-2$
    DeploymentManager deploymentManager = getConnection()
        .getDeploymentManager();
    try {
      DeploymentUtils.deployArchive(deploymentManager, tempFile,
          deployExploded);
    } catch (Exception e) {
      // Deploy failed - rollback to the original app file...
      log.debug("Redeploy failed - rolling back to original archive...", //$NON-NLS-1$
          e);
      String errorMessage = ThrowableUtil.getAllMessages(e);
      try {
        // Delete the new app, which failed to deploy.
        FileUtils.forceDelete(this.deploymentFile);
        // Need to re-deploy the original file - this generally should
        // succeed.
        DeploymentUtils.deployArchive(deploymentManager,
            backupOfOriginalFile, deployExploded);
        errorMessage += " ***** ROLLED BACK TO ORIGINAL APPLICATION FILE. *****"; //$NON-NLS-1$
      } catch (Exception e1) {
        log.debug("Rollback failed!", e1); //$NON-NLS-1$
        errorMessage += " ***** FAILED TO ROLLBACK TO ORIGINAL APPLICATION FILE. *****: " //$NON-NLS-1$
            + ThrowableUtil.getAllMessages(e1);
      }
      log.info("Failed to update VDB file '" + this.deploymentFile //$NON-NLS-1$
          + "' using [" + packageDetails + "]."); //$NON-NLS-1$ //$NON-NLS-2$
      return failApplicationDeployment(errorMessage, packageDetails);
    }

    // Deploy was successful!

    deleteBackupOfOriginalFile(backupOfOriginalFile);
    persistApplicationVersion(packageDetails, this.deploymentFile);

    DeployPackagesResponse response = new DeployPackagesResponse(
        ContentResponseResult.SUCCESS);
    DeployIndividualPackageResponse packageResponse = new DeployIndividualPackageResponse(
        packageDetails.getKey(), ContentResponseResult.SUCCESS);
    response.addPackageResponse(packageResponse);

    log.debug("Updated VDB file '" + this.deploymentFile //$NON-NLS-1$
        + "' successfully - returning response [" + response + "]..."); //$NON-NLS-1$ //$NON-NLS-2$

View Full Code Here

    }

    // Package name is the deployment's file name (e.g. foo.ear).
    PackageDetailsKey key = new PackageDetailsKey(fileName, version,
        PKG_TYPE_VDB, ARCHITECTURE);
    ResourcePackageDetails packageDetails = new ResourcePackageDetails(key);
    packageDetails.setFileName(fileName);
    packageDetails.setLocation(deploymentFile.getPath());
    if (!deploymentFile.isDirectory())
      packageDetails.setFileSize(deploymentFile.length());
    packageDetails.setFileCreatedDate(null)
    Set<ResourcePackageDetails> packages = new HashSet<ResourcePackageDetails>();
    packages.add(packageDetails);

    return packages;
  }
View Full Code Here

        {
            // Package name and file name of the application are the same
            String fileName = new File(fullFileName).getName();
           
            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(file.lastModified()); // TODO: get created date via SIGAR
           
            packages.add(details);
        }
       
        return packages;
View Full Code Here

     JBossASServerComponent jass = (JBossASServerComponent) resourceContext.getParentResourceComponent();
     return jass.getConfigurationPath();
   }

   protected void esbCreate(CreateResourceReport report, String resourceTypeName) {
        ResourcePackageDetails details = report.getPackageDetails();
        PackageDetailsKey key = details.getKey();
        String archiveName = key.getName();

        try {
            // First check to see if the file name has the correct extension. Reject if the user attempts to
            // deploy a WAR file with a bad extension.
            String expectedExtension;
            if (resourceTypeName.equals(RESOURCE_TYPE_ESB)) {
                expectedExtension = "esb";
            } else {
                expectedExtension = "";
            }
         
            int lastPeriod = archiveName.lastIndexOf(".");
          String extension = archiveName.substring(lastPeriod + 1);
          if (lastPeriod == -1 || !expectedExtension.equals(extension)) {
            report.setStatus(CreateResourceStatus.FAILURE);
              report.setErrorMessage("Incorrect extension specified on filename [" + archiveName + "]. Expected ["
                + expectedExtension + "]");
              return;
          }

            Configuration deployTimeConfiguration = details.getDeploymentTimeConfiguration();
            String deployDirectory = deployTimeConfiguration.getSimple("deployDirectory").getStringValue();

            // Verify the user did not enter a path that represents a security issue:
            // - No absolute directories; must be relative to the configuration path
            // - Cannot contain parent directory references
            File testPath = new File(deployDirectory);

            if (testPath.isAbsolute()) {
              throw new RuntimeException("Path to deploy (deployDirectory) must be a relative path. Path specified: "
                      + deployDirectory);
            }
           
            if (deployDirectory.contains("..")) {
            throw new RuntimeException(
                "Path to deploy (deployDirectory) may not reference the parent directory. Path specified: "
                    + deployDirectory);
          }

          // Perform the deployment
            FileContentDelegate deployer = new FileContentDelegate(new File(getConfigurationPath(), deployDirectory),
                    "", details.getPackageTypeName());

            PropertySimple zipProperty = deployTimeConfiguration.getSimple("deployZipped");

          if (zipProperty != null && zipProperty.getBooleanValue() != null) {
            boolean zip = zipProperty.getBooleanValue();
View Full Code Here

                    sha256 = new MessageDigestGenerator(MessageDigestGenerator.SHA_256).calcDigestString(file);
                } catch (Exception e) {
                    // leave as null
                }

                ResourcePackageDetails details = new ResourcePackageDetails(new PackageDetailsKey(file.getName(),
                    getVersion(sha256), getPackageTypeName(), "noarch"));

                packages.add(details);
                details.setFileCreatedDate(file.lastModified()); // Why don't we have a last modified time?
                details.setFileName(file.getName());
                details.setFileSize(file.length());
                details.setClassification(MIME_TYPE_JAR);
                details.setSHA256(sha256);
                details.setDisplayVersion(getDisplayVersion(file));

                details.setExtraProperties(config);
            } catch (IOException e) {
                // If we can't open it, don't worry about it, we just won't know the version
            } finally {
                try {
                    if (jf != null)
View Full Code Here

        Set<ResourcePackageDetails> resultSet = objectUnderTest.discoverDeployedPackages();

        //verify the results (Assert and mock verification)
        Assert.assertEquals(resultSet.size(), 1);

        ResourcePackageDetails resultPackageDetails = (ResourcePackageDetails) resultSet.toArray()[0];

        Assert.assertEquals(resultPackageDetails.getVersion(), "[sha256=abcd1234]");
        Assert.assertEquals(resultPackageDetails.getSHA256(), "abcd1234");
    }
View Full Code Here

        report.setResourceId(resource1.getId());

        // Package version that exists
        PackageDetailsKey key1 = new PackageDetailsKey(package1.getName(), "2.0.0",
            package1.getPackageType().getName(), architecture1.getName());
        ResourcePackageDetails package1 = new ResourcePackageDetails(key1);

        report.addDeployedPackage(package1);

        // Package version number that doesn't exist
        PackageDetailsKey key2 = new PackageDetailsKey(package2.getName(), "3.0.0", this.package2.getPackageType()
            .getName(), architecture1.getName());
        ResourcePackageDetails package2 = new ResourcePackageDetails(key2);

        report.addDeployedPackage(package2);

        // Package with same version number but different architecture
        PackageDetailsKey key3 = new PackageDetailsKey(package3.getName(), "1.0.0", this.package3.getPackageType()
            .getName(), architecture2.getName());
        ResourcePackageDetails package3 = new ResourcePackageDetails(key3);

        report.addDeployedPackage(package3);

        // Package where entire package does not exist
        PackageDetailsKey key4 = new PackageDetailsKey("PackageX", "1.0.0", packageType4.getName(),
            architecture1.getName());
        ResourcePackageDetails package4 = new ResourcePackageDetails(key4);

        //   Fully populate this version to make sure the translation from details -> domain model works
        //   Don't need to do this on all packages
        package4.setClassification("Package X1 Category");
        package4.setDisplayName("Package X1 Display Name");
        package4.setDisplayVersion("Package X1 Display Version");
        package4.setFileCreatedDate(System.currentTimeMillis());
        package4.setFileName("package4.tar.gz");
        package4.setFileSize(1000L);
        package4.setLicenseName("GPL");
        package4.setLicenseVersion("2");
        package4.setLongDescription("Package X1 Long Description");
        package4.setMD5("7bf1adec93fdb899aeca248a38603d58");
        package4.setSHA256("935f051cab5240b979bba87ce58183d50f592a962202ca683f12a7966414fe6c");
        package4.setShortDescription("Package X1 Short Description");

        String package4Metadata = "Package X1 Metadata";
        package4.setMetadata(package4Metadata.getBytes());

        Configuration package4DeploymentConfiguration = new Configuration();
        package4DeploymentConfiguration.put(new PropertySimple("property1", "value1"));
        package4.setDeploymentTimeConfiguration(package4DeploymentConfiguration);

        Configuration package4ExtraProperties = new Configuration();
        package4ExtraProperties.put(new PropertySimple("property2", "value2"));
        package4.setExtraProperties(package4ExtraProperties);

        report.addDeployedPackage(package4);

        // Upgraded package to package version known to the system
        PackageDetailsKey key5 = new PackageDetailsKey("Package4", "2.0.0", this.package4.getPackageType().getName(),
            architecture1.getName());
        ResourcePackageDetails package5 = new ResourcePackageDetails(key5);

        report.addDeployedPackage(package5);

        // In most cases, the same package report will come back from the agent (i.e. no changes). This is a simple way
        // of testing that to ensure we're not messing up and adding multiple installed packages.
View Full Code Here

        Configuration deploymentConfiguration1 = new Configuration();
        deploymentConfiguration1.put(new PropertySimple("property1", "value1"));

        PackageDetailsKey key1 = new PackageDetailsKey(package1.getName(), packageVersion1.getVersion(), package1
            .getPackageType().getName(), packageVersion1.getArchitecture().getName());
        ResourcePackageDetails packageDetails1 = new ResourcePackageDetails(key1);
        packageDetails1.setDeploymentTimeConfiguration(deploymentConfiguration1);

        installUs.add(packageDetails1);

        // Package 2, Version 1 (intentionally older version) with no configuration values
        PackageVersion packageVersion2 = package2.getVersions().get(0);

        PackageDetailsKey key2 = new PackageDetailsKey(package2.getName(), packageVersion2.getVersion(), package2
            .getPackageType().getName(), packageVersion2.getArchitecture().getName());
        ResourcePackageDetails packageDetails2 = new ResourcePackageDetails(key2);

        installUs.add(packageDetails2);

        // Make sure the mock is configured to return a success
        this.contentAgentService.setResponseReturnStatus(ContentResponseResult.SUCCESS);
View Full Code Here

        Configuration deploymentConfiguration1 = new Configuration();
        deploymentConfiguration1.put(new PropertySimple("property1", "value1"));

        PackageDetailsKey key1 = new PackageDetailsKey(package1.getName(), packageVersion1.getVersion(), package1
            .getPackageType().getName(), packageVersion1.getArchitecture().getName());
        ResourcePackageDetails packageDetails1 = new ResourcePackageDetails(key1);
        packageDetails1.setDeploymentTimeConfiguration(deploymentConfiguration1);

        installUs.add(packageDetails1);

        // Make sure the mock is configured to return a success
        this.contentAgentService.setResponseReturnStatus(ContentResponseResult.SUCCESS);
View Full Code Here

TOP

Related Classes of org.rhq.core.domain.content.transfer.ResourcePackageDetails

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.