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 FeatureContainer getFeatureContainer(PmSession session, ProvisioningLayout<FeaturePackLayout> layout) throws ProvisioningException, CommandExecutionException, IOException { FeatureContainer container; ProvisioningManager manager = getManager(session); if (manager.getProvisionedState() == null) { throw new CommandExecutionException("Specified directory doesn't contain an installation"); } if (layout == null) { ProvisioningConfig config = manager.getProvisioningConfig(); try (ProvisioningRuntime runtime = manager.getRuntime(config)) { container = FeatureContainers.fromProvisioningRuntime(session, runtime); } } else { try (ProvisioningRuntime runtime = manager.getRuntime(layout)) { container = FeatureContainers.fromProvisioningRuntime(session, runtime); } } return container; } }