public ConfigModifyingUser user() { return new ConfigModifyingUser(userName); } }
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; }
public ConfigModifyingUser user() { return new ConfigModifyingUser(userName); } }
private GoConfigHolder trySavingFullConfig(FullConfigUpdateCommand updatingCommand, GoConfigHolder configHolder, List<PartialConfig> partials) throws Exception { String userName = getConfigUpdatingUser(updatingCommand).getUserName(); GoConfigHolder goConfigHolder; LOGGER.debug("[Config Save] ==-- Getting modified config"); if (shouldMergeConfig(updatingCommand, configHolder)) { if (!systemEnvironment.get(SystemEnvironment.ENABLE_CONFIG_MERGE_FEATURE)) { throw new ConfigMergeException(ConfigFileHasChangedException.CONFIG_CHANGED_PLEASE_REFRESH); } goConfigHolder = this.fullConfigSaveMergeFlow.execute(updatingCommand, partials, userName); } else { goConfigHolder = this.fullConfigSaveNormalFlow.execute(updatingCommand, partials, userName); } reloadStrategy.latestState(goConfigHolder.config); return goConfigHolder; }
private ConfigModifyingUser getConfigUpdatingUser(UpdateConfigCommand updatingCommand) { return updatingCommand instanceof UserAware ? ((UserAware) updatingCommand).user() : new ConfigModifyingUser(); }
synchronized GoConfigHolder forceLoad(File configFile) throws Exception { LOGGER.debug("Reloading config file: {}", configFile.getAbsolutePath()); GoConfigHolder holder; try { try { List<PartialConfig> lastKnownPartials = cloner.deepClone(cachedGoPartials.lastKnownPartials()); holder = internalLoad(FileUtils.readFileToString(configFile, UTF_8), new ConfigModifyingUser(FILESYSTEM), lastKnownPartials); } catch (GoConfigInvalidException e) { if (!canUpdateConfigWithLastValidPartials()) { throw e; } else { List<PartialConfig> lastValidPartials = cloner.deepClone(cachedGoPartials.lastValidPartials()); holder = internalLoad(FileUtils.readFileToString(configFile, UTF_8), new ConfigModifyingUser(FILESYSTEM), lastValidPartials); } } return holder; } catch (Exception e) { LOGGER.error("Unable to load config file: {} {}", configFile.getAbsolutePath(), e.getMessage(), e); if (configFile.exists()) { LOGGER.warn("--- {} ---", configFile.getAbsolutePath()); LOGGER.warn(FileUtils.readFileToString(configFile, StandardCharsets.UTF_8)); LOGGER.warn("------"); } LOGGER.debug("", e); throw e; } }
@Deprecated public synchronized GoConfigHolder write(String configFileContent, boolean shouldMigrate) throws Exception { File configFile = fileLocation(); try { if (shouldMigrate) { configFileContent = upgrader.upgradeIfNecessary(configFileContent); } GoConfigHolder configHolder = internalLoad(configFileContent, new ConfigModifyingUser(), new ArrayList<>()); String toWrite = configAsXml(configHolder.configForEdit, false); LOGGER.trace("Writing config file: {}", configFile.getAbsolutePath()); writeToConfigXmlFile(toWrite); return configHolder; } catch (Exception e) { LOGGER.error("Unable to write config file: {}\n{}", configFile.getAbsolutePath(), e.getMessage(), e); throw e; } }
modifiedConfig.setPartials(lastKnownPartials); String configAsXml = configAsXml(modifiedConfig, false); GoConfigHolder holder = internalLoad(configAsXml, new ConfigModifyingUser(currentUser.getUsername().toString()), lastKnownPartials); LOGGER.info("Update operation on merged configuration succeeded with {} KNOWN partials. Now there are {} LAST KNOWN partials", lastKnownPartials.size(), cachedGoPartials.lastKnownPartials().size());