private void updateInventoryStatus(Resource resource, InventoryStatus newStatus, long now) { resource.setInventoryStatus(newStatus); resource.setItime(now); resource.setAgentSynchronizationNeeded(); }
private void setInventoryStatus(Resource parentResource, Resource resource, Map<Resource, Set<PostMergeAction>> postMergeActions) { // never autocommit a platform if (null == parentResource) { resource.setInventoryStatus(InventoryStatus.NEW); return; } ResourceType resourceType = resource.getResourceType(); boolean isParentCommitted = InventoryStatus.COMMITTED == parentResource.getInventoryStatus(); boolean isService = ResourceCategory.SERVICE == resourceType.getCategory(); boolean isParentServer = ResourceCategory.SERVER == parentResource.getResourceType().getCategory(); // always autocommit non-top-level-server children of committed parents if (isParentCommitted && (isService || isParentServer)) { resource.setInventoryStatus(InventoryStatus.COMMITTED); return; } // always autocommit top-level-server if it's an RHQ Storage Node (and the platform, if necessary) boolean isStorageNodePlugin = "RHQStorage".equals(resourceType.getPlugin()); boolean isStorageNode = (isStorageNodePlugin && "RHQ Storage Node".equals(resourceType.getName())); if (isStorageNode) { resource.setInventoryStatus(InventoryStatus.COMMITTED); if (!isParentCommitted) { parentResource.setInventoryStatus(InventoryStatus.COMMITTED); } addPostMergeAction(postMergeActions, resource, PostMergeAction.LINK_STORAGE_NODE); return; } // otherwise, set NEW resource.setInventoryStatus(InventoryStatus.NEW); }
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void completeDeleteResourceRequest(DeleteResourceResponse response) { if (LOG.isDebugEnabled()) { LOG.debug("Received call to complete delete resource: " + response); } // Load the persisted history entry DeleteResourceHistory history = entityManager.find(DeleteResourceHistory.class, response.getRequestId()); // There is some inconsistency if we're completing a request that was not in the database if (history == null) { LOG.error("Attempting to complete a request that was not found in the database: " + response.getRequestId()); return; } // Update the history entry history.setErrorMessage(response.getErrorMessage()); history.setStatus(response.getStatus()); // If successful mark resource as deleted and uninventory children if (response.getStatus() == DeleteResourceStatus.SUCCESS) { Resource resource = history.getResource(); // get doomed children Set<Resource> children = resource.getChildResources(); // set the resource deleted and update the db in case it matters to the child operations resource.setInventoryStatus(InventoryStatus.DELETED); //resource.setParentResource(null); can't null this out since the query DeleteResourceHistory.QUERY_FIND_BY_PARENT_RESOURCE_ID needs it resource.setItime(System.currentTimeMillis()); entityManager.merge(resource); // uninventory the children of the deleted resource (see rhq-2378) uninventoryChildren(children); } }
res.setAgent(parent.getAgent()); res.setParentResource(parent); res.setInventoryStatus(InventoryStatus.COMMITTED); res.setDescription(resType.getDescription() + ". Created via REST-api");
platform.setUuid(UUID.randomUUID().toString()); platform.setAgent(agent); platform.setInventoryStatus(InventoryStatus.COMMITTED); platform.setModifiedBy(caller.getName()); platform.setDescription(type.getDescription() + ". Created via REST-api");
res.setAgent(parent.getAgent()); res.setParentResource(parent); res.setInventoryStatus(InventoryStatus.COMMITTED); res.setDescription(resType.getDescription() + ". Created via REST-api");
resource.setInventoryStatus(InventoryStatus.COMMITTED);
log.debug("Adding manually discovered resource [" + resource + "] to inventory..."); resource.setInventoryStatus(InventoryStatus.COMMITTED); parentResource.addChildResourceWithoutAncestry(resource); initResourceContainer(resource);
existingResource.setInventoryStatus(InventoryStatus.COMMITTED); existingResource.setPluginConfiguration(updatedResource.getPluginConfiguration()); existingResource.setAgentSynchronizationNeeded();
resource.setInventoryStatus(InventoryStatus.COMMITTED); resource.setItime(System.currentTimeMillis()); try {
resource.setInventoryStatus(syncInfo.getInventoryStatus()); refreshResourceComponentState(container, true); syncedResources.add(resource);
private Resource cloneResourceWithoutChildren(Resource resourceFromServer) { // Use a CopyOnWriteArraySet for childResources to allow the field to be concurrently accessed safely // (i.e. to avoid ConcurrentModificationExceptions). Set<Resource> childResources = new CopyOnWriteArraySet<Resource>(); Resource resource = new Resource(childResources); resource.setId(resourceFromServer.getId()); resource.setUuid(resourceFromServer.getUuid()); resource.setResourceKey(resourceFromServer.getResourceKey()); resource.setResourceType(resourceFromServer.getResourceType()); resource.setMtime(resourceFromServer.getMtime()); resource.setInventoryStatus(resourceFromServer.getInventoryStatus()); resource.setPluginConfiguration(resourceFromServer.getPluginConfiguration()); resource.setVersion(resourceFromServer.getVersion()); resource.setName(resourceFromServer.getName()); compactResource(resource); return resource; }
private boolean mergeResource(Resource sourceResource, Resource targetResource) { if (targetResource.getId() != 0 && targetResource.getId() != sourceResource.getId()) { log.warn("Id for " + targetResource + " changed from [" + targetResource.getId() + "] to [" + sourceResource.getId() + "]."); } targetResource.setId(sourceResource.getId()); targetResource.setUuid(sourceResource.getUuid()); if (!targetResource.getResourceKey().equals(sourceResource.getResourceKey())) { log.warn("Resource key for " + targetResource + " changed from [" + targetResource.getResourceKey() + "] to [" + sourceResource.getResourceKey() + "]."); } targetResource.setResourceKey(sourceResource.getResourceKey()); targetResource.setResourceType(sourceResource.getResourceType()); targetResource.setMtime(sourceResource.getMtime()); targetResource.setInventoryStatus(sourceResource.getInventoryStatus()); // (jshaughn) noticed we don't set the version here, should we? boolean pluginConfigUpdated = (!targetResource.getPluginConfiguration().equals( sourceResource.getPluginConfiguration())); targetResource.setPluginConfiguration(sourceResource.getPluginConfiguration()); targetResource.setName(sourceResource.getName()); compactResource(targetResource); return pluginConfigUpdated; }
private static Resource convertToPojoResource(Resource resource, boolean includeDescendants) { Resource pojoResource = new Resource(resource.getId()); pojoResource.setUuid(resource.getUuid()); pojoResource.setResourceKey(resource.getResourceKey()); pojoResource.setResourceType(resource.getResourceType()); pojoResource.setMtime(resource.getMtime()); pojoResource.setInventoryStatus(resource.getInventoryStatus()); Configuration pcCopy = resource.getPluginConfiguration(); if (pcCopy != null) { pcCopy = pcCopy.deepCopy(); } pojoResource.setPluginConfiguration(pcCopy); pojoResource.setName(resource.getName()); pojoResource.setDescription(resource.getDescription()); pojoResource.setLocation(resource.getLocation()); pojoResource.setVersion(resource.getVersion()); if (resource.getParentResource() != null) { pojoResource.setParentResource(convertToPojoResource(resource.getParentResource(), false)); } if (includeDescendants) { for (Resource childResource : resource.getChildResources()) { if (isVisibleInInventory(childResource)) { pojoResource.addChildResource(convertToPojoResource(childResource, true)); } } } return pojoResource; }