modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
| 8 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
| 41 ----------
2 files changed, 8 insertions(+), 41 deletions(-)
New commits:
commit 9db052a47faf5837892d3fed1e8cfa74ed28791b
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Dec 12 10:03:40 2011 -0600
[BZ 758753] Use SHA as the identifier for package discovery. The version is unreliable
and not correctly updated between server and agent.
Also, populate the installed package during discovery; the complete method is not the
correct place because it does not necessarly mean that the package was fully deployed even
if copied.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
index d64d8a5..7096645 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/PackageVersion.java
@@ -57,7 +57,7 @@ import org.rhq.core.domain.util.OSGiVersionComparator;
* @author Jason Dobies
*/
@Entity
-@NamedQueries( {
+@NamedQueries({
@NamedQuery(name = PackageVersion.QUERY_FIND_BY_PACKAGE_DETAILS, query = ""
//
+ "SELECT pv FROM PackageVersion AS pv " //
+ " WHERE pv.generalPackage.name = :packageName " //
@@ -66,6 +66,12 @@ import org.rhq.core.domain.util.OSGiVersionComparator;
+ " AND ( ( NOT pv.sha256 IS NULL AND pv.sha256 = :sha ) OR "
+ " ( pv.sha256 IS NULL AND pv.architecture.name = :architectureName
AND pv.version = :version ) "
+ " ) "),
+ @NamedQuery(name = PackageVersion.QUERY_FIND_BY_PACKAGE_SHA, query = "" //
+ + "SELECT pv FROM PackageVersion AS pv " //
+ + " WHERE pv.generalPackage.name = :packageName " //
+ + " AND pv.generalPackage.packageType.name = :packageTypeName " //
+ + " AND pv.generalPackage.packageType.resourceType.id = :resourceTypeId
" //
+ + " AND pv.sha256 = :sha "),
@NamedQuery(name = PackageVersion.QUERY_FIND_BY_PACKAGE_VER_ARCH, query =
"SELECT pv FROM PackageVersion AS pv "
+ " WHERE pv.generalPackage.name = :name " + " AND
pv.generalPackage.packageType.id = :packageTypeId "
+ " AND pv.architecture.id = :architectureId " + " AND
pv.version = :version "),
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index 70f5c0c..29c3c85 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -203,13 +203,11 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
// If the package exists see if package version already exists
if (null != generalPackage) {
Query packageVersionQuery = entityManager
- .createNamedQuery(PackageVersion.QUERY_FIND_BY_PACKAGE_DETAILS);
+ .createNamedQuery(PackageVersion.QUERY_FIND_BY_PACKAGE_SHA);
packageVersionQuery.setFlushMode(FlushModeType.COMMIT);
packageVersionQuery.setParameter("packageName",
discoveredPackage.getName());
packageVersionQuery.setParameter("packageTypeName",
discoveredPackage.getPackageTypeName());
packageVersionQuery.setParameter("resourceTypeId",
resource.getResourceType().getId());
- packageVersionQuery.setParameter("architectureName",
discoveredPackage.getArchitectureName());
- packageVersionQuery.setParameter("version",
discoveredPackage.getVersion());
packageVersionQuery.setParameter("sha",
discoveredPackage.getSHA256());
List<PackageVersion> resultPackageVersions =
packageVersionQuery.getResultList();
if (resultPackageVersions.size() > 0) {
@@ -546,10 +544,6 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
// We're closing out the package request for this package version, so
remove it from the cache of entries
// that need to be closed
inProgressEntries.remove(packageVersion);
-
- if (singleResponse.getResult() == ContentResponseResult.SUCCESS) {
- updateInstalledPackages(resource, packageVersion);
- }
}
// For any entries that were not closed, add closing entries
@@ -2077,37 +2071,4 @@ public class ContentManagerBean implements ContentManagerLocal,
ContentManagerRe
ex.printStackTrace();
}
}
-
- /**
- * Update the set of installed packages for a content type resource.
- * Existing installed packages are purged and a new set of installed
- * packages is created. Currently, a content type resource has only
- * and only one installed package.
- *
- * @param resource resource
- * @param packageVersion package version
- */
- @SuppressWarnings("unchecked")
- private void updateInstalledPackages(Resource resource, PackageVersion
packageVersion) {
- if (resource.getResourceType().getCreationDataType() ==
ResourceCreationDataType.CONTENT) {
- Query installedPackageQuery =
entityManager.createNamedQuery(InstalledPackage.QUERY_FIND_BY_RESOURCE_ID);
- installedPackageQuery.setParameter("resourceId",
resource.getId());
-
- List<InstalledPackage> installedPackages =
installedPackageQuery.getResultList();
- if ((installedPackages != null) && (installedPackages.size() > 0))
{
- for (InstalledPackage installedPackage : installedPackages) {
- entityManager.refresh(installedPackage);
- entityManager.remove(installedPackage);
- }
- }
-
- InstalledPackage installedPackage = new InstalledPackage();
- installedPackage.setInstallationDate(System.currentTimeMillis());
- installedPackage.setPackageVersion(packageVersion);
- installedPackage.setResource(resource);
- entityManager.persist(installedPackage);
-
- entityManager.flush();
- }
- }
}
\ No newline at end of file
Show replies by date