protected CruiseConfig configForEditWithPartials(FullConfigUpdateCommand updatingCommand, List<PartialConfig> partials) { CruiseConfig config = updatingCommand.configForEdit(); config.setPartials(partials); return config; }
public CruiseConfig update(CruiseConfig cruiseConfig) { deserializedConfig.setPartials(cruiseConfig.getPartials()); return deserializedConfig; }
private GoConfigHolder reloadConfig(String configXml, final List<PartialConfig> partials) { try { return loader.loadConfigHolder(configXml, cruiseConfig -> cruiseConfig.setPartials(partials)); } catch (Exception e) { LOGGER.debug("[CONFIG_MERGE] Post merge validation failed"); throw new ConfigMergePostValidationException(e.getMessage(), e); } }
private String getUnmergedConfig(UpdateConfigCommand updatingCommand, GoConfigHolder configHolder, List<PartialConfig> partials) throws Exception { CruiseConfig deepCloneForEdit = cloner.deepClone(configHolder.configForEdit); deepCloneForEdit.setPartials(partials); CruiseConfig config = updatingCommand.update(deepCloneForEdit); String configAsXml = configAsXml(config, false); if (deepCloneForEdit.getPartials().size() < partials.size()) throw new RuntimeException("should never be called"); return configAsXml; }
@Override public void call(CruiseConfig cruiseConfig) { cruiseConfig.setPartials(asList(new PartialConfig())); } });
private GoConfigHolder internalLoad(final String content, final ConfigModifyingUser configModifyingUser, final List<PartialConfig> partials) throws Exception { GoConfigHolder configHolder = magicalGoConfigXmlLoader.loadConfigHolder(content, cruiseConfig -> cruiseConfig.setPartials(partials)); CruiseConfig config = configHolder.config; checkinConfigToGitRepo(partials, config, content, configHolder.configForEdit.getMd5(), configModifyingUser.getUserName()); return configHolder; }
private String getMergedConfig(NoOverwriteUpdateConfigCommand noOverwriteCommand, String latestMd5, List<PartialConfig> partials) throws Exception { LOGGER.debug("[Config Save] Getting merged config"); String oldMd5 = noOverwriteCommand.unmodifiedMd5(); CruiseConfig modifiedConfig = getOldConfigAndMutateWithChanges(noOverwriteCommand, oldMd5); modifiedConfig.setPartials(partials); String modifiedConfigAsXml = convertMutatedConfigToXml(modifiedConfig, latestMd5); GoConfigRevision configRevision = new GoConfigRevision(modifiedConfigAsXml, "temporary-md5-for-branch", getConfigUpdatingUser(noOverwriteCommand).getUserName(), CurrentGoCDVersion.getInstance().formatted(), timeProvider); String mergedConfigXml = configRepository.getConfigMergedWithLatestRevision(configRevision, oldMd5); LOGGER.debug("[Config Save] -=- Done converting merged config to XML"); return mergedConfigXml; }
LOGGER.warn(message, e); updatingCommand.clearErrors(); modifiedConfig.setPartials(lastKnownPartials); String configAsXml = configAsXml(modifiedConfig, false); GoConfigHolder holder = internalLoad(configAsXml, new ConfigModifyingUser(currentUser.getUsername().toString()), lastKnownPartials);
@Test public void cloneForValidationShouldKeepProposedPartials() { cruiseConfig.setPartials(Arrays.asList(createPartial())); assertThat(cruiseConfig.getPartials().size(), is(1)); cruiseConfig = cruiseConfig.cloneForValidation(); assertThat(cruiseConfig.getPartials().size(), is(1)); }
private EntityConfigSaveResult trySavingEntity(EntityConfigUpdateCommand updatingCommand, Username currentUser, CruiseConfig modifiedConfig, List<PartialConfig> partials) { modifiedConfig.setPartials(partials); CruiseConfig preprocessedConfig = cloner.deepClone(modifiedConfig); MagicalGoConfigXmlLoader.preprocess(preprocessedConfig); updatingCommand.encrypt(preprocessedConfig); if (updatingCommand.isValid(preprocessedConfig)) { try { LOGGER.info("[Configuration Changed] Saving updated configuration."); String configAsXml = configAsXml(modifiedConfig, true); String md5 = CachedDigestUtils.md5Hex(configAsXml); MagicalGoConfigXmlLoader.setMd5(modifiedConfig, md5); MagicalGoConfigXmlLoader.setMd5(preprocessedConfig, md5); writeToConfigXmlFile(configAsXml); checkinConfigToGitRepo(partials, preprocessedConfig, configAsXml, md5, currentUser.getUsername().toString()); LOGGER.debug("[Config Save] Done writing with lock"); CruiseConfig mergedCruiseConfigForEdit = modifiedConfig; if (!partials.isEmpty()) { LOGGER.debug("[Config Save] Updating GoConfigHolder with mergedCruiseConfigForEdit: Starting."); mergedCruiseConfigForEdit = cloner.deepClone(modifiedConfig); mergedCruiseConfigForEdit.merge(partials, true); LOGGER.debug("[Config Save] Updating GoConfigHolder with mergedCruiseConfigForEdit: Done."); } return new EntityConfigSaveResult(updatingCommand.getPreprocessedEntityConfig(), new GoConfigHolder(preprocessedConfig, modifiedConfig, mergedCruiseConfigForEdit)); } catch (Exception e) { throw new RuntimeException("failed to save : " + e.getMessage()); } } else { throw new GoConfigInvalidException(preprocessedConfig, "Validation failed."); } }