public static ProvisioningDiffProvider newInstance(ProvisioningLayout<FeaturePackRuntimeBuilder> layout, ProvisionedState provisionedState, FsDiff diff, MessageWriter log) { ProvisioningDiffProvider diffProvider = new ProvisioningDiffProvider(); diffProvider.layout = layout; diffProvider.provisionedConfig = layout.getConfig(); diffProvider.provisionedState = provisionedState; diffProvider.fsDiff = diff; diffProvider.log = log; return diffProvider; }
public void addConfig(ProvisionedConfig config, String... relativePaths) throws ProvisioningException { addConfig(ProvisionedFeatureDiffCallback.DEFAULT, config, relativePaths); }
public void excludePackage(StateDiffPlugin plugin, FPID fpid, String name, String... relativePaths) throws ProvisioningException { getFpcBuilder(fpid).excludePackage(name); suppressPaths(relativePaths); }
return mergedConfig; if (!hasConfigChanges()) { mergedConfig = provisionedConfig; return provisionedConfig; final ProvisioningConfig.Builder configBuilder = initProvisioningConfig(); final Collection<ConfigModel> definedConfigs = provisionedConfig.getDefinedConfigs(); if (!definedConfigs.isEmpty()) { if(provisionedConfig.hasDefinedConfig(configId)) { if (baseConfigs == null) { final ProvisioningConfig.Builder baseBuilder = initProvisioningConfig(); for (ProvisionedConfig config : provisionedState.getConfigs()) { final ConfigId provisionedId = new ConfigId(config.getModel(), config.getName()); if(getProvisionedConfig(baseConfigs, configId.getModel(), configId.getName()) != null) { if(provisionedConfig.isInheritConfigs()) { if(!provisionedConfig.isConfigModelExcluded(configId)) {
/** * Merge user changes recognized by the provisioning plug-ins (such as * changes to the configuration files) into the provisioning configuration * file describing the state of the installation). * * @return true if some changes have been persisted, false otherwise. * @throws ProvisioningException in case the merge fails */ public boolean persistChanges() throws ProvisioningException { final ProvisioningDiffProvider diffProvider = getDiffMergedConfig(); if(diffProvider == null) { return false; } final ProvisioningConfig mergedConfig = diffProvider.getMergedConfig(); if(mergedConfig.equals(getProvisioningConfig())) { return false; } try (ProvisioningLayout<FeaturePackRuntimeBuilder> layout = getLayoutFactory().newConfigLayout(mergedConfig, ProvisioningRuntimeBuilder.FP_RT_FACTORY, false)) { doProvision(layout, diffProvider.getFsDiff(), false); } return true; }
public void updateConfig(ProvisionedFeatureDiffCallback featureDiffCallback, ProvisionedConfig updatedConfig, String... relativePaths) throws ProvisioningException { final ConfigId configId = new ConfigId(updatedConfig.getModel(), updatedConfig.getName()); configPlugins = CollectionUtils.put(configPlugins, configId, featureDiffCallback); if(featureDiff == null) { featureDiff = new FeatureDiff(log); } featureDiff.init(getRequiredProvisionedConfig(provisionedState.getConfigs(), updatedConfig.getModel(), updatedConfig.getName())); featureDiff.diff(featureDiffCallback, updatedConfig); final ConfigModel mergedConfig = featureDiff.getMergedConfig(layout); if (mergedConfig == null) { log.verbose("%s has not changed", updatedConfig.getName()); } else { updatedConfigs.put(configId, mergedConfig); } featureDiff.reset(); suppressPaths(relativePaths); }
private static ProvisionedConfig getRequiredProvisionedConfig(List<ProvisionedConfig> list, String model, String name) throws ProvisioningException { final ProvisionedConfig config = getProvisionedConfig(list, model, name); if(config == null) { throw new ProvisioningException("Failed to locate provisioned config " + model + "/" + name); } return config; }
private ProvisioningDiffProvider getDiffMergedConfig() throws ProvisioningException { final FsDiff diff = getFsDiff(); if(diff == null || diff.isEmpty()) { return null; } try (ProvisioningLayout<FeaturePackRuntimeBuilder> layout = layoutFactory.newConfigLayout(getProvisioningConfig(), ProvisioningRuntimeBuilder.FP_RT_FACTORY, false)) { final ProvisioningDiffProvider diffProvider = ProvisioningDiffProvider.newInstance(layout, getProvisionedState(), diff, log); layout.visitPlugins(new FeaturePackPluginVisitor<StateDiffPlugin>() { @Override public void visitPlugin(StateDiffPlugin plugin) throws ProvisioningException { plugin.diff(diffProvider); } }, StateDiffPlugin.class); return diffProvider; } }
public void includePackage(StateDiffPlugin plugin, FPID fpid, String name, String... relativePaths) throws ProvisioningException { getFpcBuilder(fpid).includePackage(name); suppressPaths(relativePaths); }