@Override public void rollbackResourceConfiguration(Subject subject, int resourceId, int configHistoryId) throws ConfigurationUpdateException { ResourceConfigurationUpdate configurationUpdateHistory = entityManager.find(ResourceConfigurationUpdate.class, configHistoryId); Configuration configuration = configurationUpdateHistory.getConfiguration(); if (configuration == null) { throw new ConfigurationUpdateException("No configuration history element exists with id = '" + configHistoryId + "'"); } if (isStructuredAndRawSupported(resourceId)) { updateStructuredOrRawConfiguration(subject, resourceId, configuration, false); } else { updateResourceConfiguration(subject, resourceId, configuration); } }
/** * @deprecated use criteria-based API */ @Deprecated @Override public ResourceConfigurationUpdate getResourceConfigurationUpdate(Subject subject, int configurationUpdateId) { ResourceConfigurationUpdate update = entityManager.find(ResourceConfigurationUpdate.class, configurationUpdateId); if (!authorizationManager.canViewResource(subject, update.getResource().getId())) { throw new PermissionException("User [" + subject.getName() + "] does not have permission to view resource configuration update for [" + update.getResource() + "]"); } update.getConfiguration(); // this is EAGER loaded, so this really doesn't do anything return update; }
public Configuration getResourceConfiguration() { if (!LazyLoadScenario.isShouldLoad()) return null; //make sure to fetch the latest known resource config. This ensures that //the server goes out to the agent if there is no known config yet and thus //giving the scripting user an always up-to-date info. ResourceConfigurationUpdate update = remoteClient.getProxy(ConfigurationManagerRemote.class) .getLatestResourceConfigurationUpdate(remoteClient.getSubject(), resourceClientProxy.resourceId); return update == null ? null : update.getConfiguration(); }
@Override public void persistUpdatedResourceConfiguration(int resourceId, Configuration resourceConfiguration) { ConfigurationManagerLocal configurationManager = LookupUtil.getConfigurationManager(); SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); Subject overlord = subjectManager.getOverlord(); ResourceConfigurationUpdate update = configurationManager.persistResourceConfigurationUpdateInNewTransaction( overlord, resourceId, resourceConfiguration, ConfigurationUpdateStatus.SUCCESS, null, false); if (update == null) { LOG.debug("Not persisting Configuration " + resourceConfiguration + ", since it is identical to the current revision."); return; } Configuration configuration = update.getConfiguration().deepCopy(false); // clone the config, zeroing out ids configurationManager.setResourceConfiguration(resourceId, configuration); // now set it as the current config on the Resource }
@Override public void executeResourceConfigurationUpdate(int updateId) { ResourceConfigurationUpdate update = getResourceConfigurationUpdate(subjectManager.getOverlord(), updateId); Configuration originalConfig = update.getConfiguration(); update.setConfiguration(originalConfig.deepCopy(false)); executeResourceConfigurationUpdate(update); }
Configuration configuration = current.getConfiguration(); configuration.getMap().size(); ConfigurationDefinition configurationDefinition = getResourceConfigurationDefinitionForResourceType( Configuration currentConfig = (current != null) ? current.getConfiguration() : null; Configuration configuration = current.getConfiguration(); configuration.getMap().size(); ConfigurationDefinition configurationDefinition = getResourceConfigurationDefinitionForResourceType(
@Override public PageList<ResourceConfigurationUpdate> findResourceConfigurationUpdatesByCriteria(Subject subject, ResourceConfigurationUpdateCriteria criteria) { CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject, criteria); if (!authorizationManager.isInventoryManager(subject)) { generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.RESOURCE, "resource", subject.getId()); } CriteriaQueryRunner<ResourceConfigurationUpdate> queryRunner = new CriteriaQueryRunner<ResourceConfigurationUpdate>( criteria, generator, entityManager); PageList<ResourceConfigurationUpdate> updates = queryRunner.execute(); // If configurations were fetched, mask them before returning the updates. // We do not want the masked configurations persisted, so detach all entities before masking the configurations. Set<String> fetchFields = new HashSet<String>(generator.getFetchFields(criteria)); if (fetchFields.contains(AbstractConfigurationUpdateCriteria.FETCH_FIELD_CONFIGURATION)) { for (ResourceConfigurationUpdate update : updates) { Configuration configuration = update.getConfiguration(); configuration.getMap().size(); } entityManager.clear(); for (ResourceConfigurationUpdate update : updates) { Configuration configuration = update.getConfiguration(); ConfigurationDefinition configurationDefinition = getResourceConfigurationDefinitionForResourceType( subjectManager.getOverlord(), update.getResource().getResourceType().getId()); ConfigurationMaskingUtility.maskConfiguration(configuration, configurationDefinition); } } return updates; }
public AlertConditionCacheStats checkConditions(ResourceConfigurationUpdate update) { if (update == null) { return new AlertConditionCacheStats(); } AlertConditionCacheStats stats = new AlertConditionCacheStats(); try { Resource resource = update.getResource(); List<ResourceConfigurationCacheElement> cacheElements = lookupResourceConfigurationCacheElements(resource .getId()); processCacheElements(cacheElements, update.getConfiguration(), update.getCreatedTime(), stats); AlertConditionCacheMonitor.getMBean().incrementResourceConfigurationCacheElementMatches(stats.matched); AlertConditionCacheMonitor.getMBean().incrementResourceConfigurationProcessingTime(stats.getAge()); if (log.isDebugEnabled()) log.debug("Check " + update + " - " + stats); } catch (Throwable t) { // don't let any exceptions bubble up to the calling SLSB layer log.error("Error during global cache processing: ", t); } return stats; }
resource.setResourceConfiguration(update.getConfiguration().deepCopyWithoutProxies()); notifyAlertConditionCacheManager("completeResourceConfigurationUpdate", update);
liveConfig); if (update != null) { currentPersistedConfigs.put(memberResource.getId(), update.getConfiguration()); LOG.info("Live configuration for [" + memberResource + "] did not match latest associated ResourceConfigurationUpdate with SUCCESS status.");
@Override @RequiredPermission(Permission.MANAGE_SETTINGS) public StorageNodeConfigurationComposite retrieveConfiguration(Subject subject, StorageNode storageNode) { if (storageNode != null && storageNode.getResource() != null) { Resource storageNodeResource = storageNode.getResource(); ResourceConfigurationUpdate configurationUpdate = configurationManager .getLatestResourceConfigurationUpdate(subject, storageNodeResource.getId()); Configuration storageNodeConfiguration = configurationUpdate.getConfiguration(); Configuration storageNodePluginConfiguration = configurationManager.getPluginConfiguration(subject, storageNodeResource.getId()); if (configurationUpdate != null) { return StorageNodeConfigurationUtil.createCompositeConfiguration(storageNodeConfiguration, storageNodePluginConfiguration, storageNode); } } return new StorageNodeConfigurationComposite(storageNode); }
Configuration currentConfiguration = current.getConfiguration(); Hibernate.initialize(currentConfiguration.getMap()); if (currentConfiguration.equals(newConfiguration)) {
/** * Tells the Agent to asynchronously update a managed resource's configuration as per the specified * <code>ResourceConfigurationUpdate</code>. */ private void executeResourceConfigurationUpdate(ResourceConfigurationUpdate update) { try { AgentClient agentClient = agentManager.getAgentClient(update.getResource().getAgent()); ConfigurationUpdateRequest request = new ConfigurationUpdateRequest(update.getId(), update.getConfiguration(), update.getResource().getId()); agentClient.getConfigurationAgentService().updateResourceConfiguration(request); } catch (RuntimeException e) { // Any exception means the remote call itself failed - make sure to change the status on the update to FAILURE // and set its error message field. if (null != update) { update.setStatus(ConfigurationUpdateStatus.FAILURE); update.setErrorMessage(ThrowableUtil.getStackAsString(e)); // Here we call ourselves, but we do so via the EJB interface so we pick up the REQUIRES_NEW semantics. this.configurationManager.mergeConfigurationUpdate(update); checkForCompletedGroupResourceConfigurationUpdate(update.getId()); } } }