public static FeatureContainer fromProvisioningRuntime(PmSession session, ProvisioningRuntime runtime) throws ProvisioningException, IOException { ProvisioningInfo info = new ProvisioningInfo(runtime.getProvisioningConfig()); populateFeatureContainer(info, session, runtime, false); return info; }
public void close() { runtime.close(); }
protected Set<ProvisioningOption> getPluginOptions(ProvisioningRuntime runtime) throws ProvisioningException { Set<ProvisioningOption> pluginOptions = new HashSet<>(ProvisioningOption.getStandardList()); FeaturePackPluginVisitor<InstallPlugin> visitor = new FeaturePackPluginVisitor<InstallPlugin>() { @Override public void visitPlugin(InstallPlugin plugin) throws ProvisioningException { pluginOptions.addAll(plugin.getOptions().values()); } }; runtime.getLayout().visitPlugins(visitor, InstallPlugin.class); return pluginOptions; }
private void doProvision(ProvisioningLayout<FeaturePackRuntimeBuilder> layout, FsDiff fsDiff, boolean undo) throws ProvisioningException { try (ProvisioningRuntime runtime = getRuntimeInternal(layout, fsDiff)) { runtime.provision(); if (runtime.getProvisioningConfig().hasFeaturePackDeps()) { persistHashes(runtime); final Map<String, Boolean> undoTasks = StateHistoryUtils.readUndoTasks(home, log); if (!undoTasks.isEmpty()) { final Path staged = runtime.getStagedDir(); for (Map.Entry<String, Boolean> entry : undoTasks.entrySet()) { final Path stagedPath = staged.resolve(entry.getKey()); undoTasks = FsDiff.replay(fsDiff, runtime.getStagedDir(), log); PathsUtils.replaceDist(runtime.getStagedDir(), home, undo, undoTasks, log); } finally { this.provisioningConfig = null;
for (FeaturePackRuntime rt : runtime.getFeaturePacks()) { gavs.put(Identity.buildOrigin(rt.getFPID().getProducer()), rt); runtime.getLayout().visitPlugins(visitor, CliPlugin.class); CliPlugin plugin = cliPlugins.isEmpty() ? null : cliPlugins.get(0); PackageGroupsBuilder pkgBuilder = new PackageGroupsBuilder(); FeatureSpecsBuilder specsBuilder = new FeatureSpecsBuilder(); for (FeaturePackRuntime rt : runtime.getFeaturePacks()) { pkgBuilder.resetRoots(); for (PackageRuntime pkg : rt.getPackages()) { Group specsRoot = specsBuilder.buildTree(runtime.getLayout(), session, rt.getFPID(), fp.getFPID(), pkgBuilder.getPackages(), allSpecs, null); fp.setFeatureSpecRoot(Identity.buildOrigin(rt.getFPID().getProducer()), specsRoot); for (ProvisionedConfig c : runtime.getConfigs()) { ConfigInfo config = new ConfigInfo(c.getModel(), c.getName(), c.getLayers()); fp.addFinalConfig(config); Group specsRoot = specsBuilder.buildTree(runtime.getLayout(), session, entry.getKey().getLocation().getFPID(), fp.getFPID(), pkgBuilder.getPackages(), false, entry.getValue());
private boolean displayConfigs(PmCommandInvocation commandInvocation, ProvisioningLayout<FeaturePackLayout> pLayout) throws ProvisioningException, IOException { Map<String, List<ConfigInfo>> configs = new HashMap<>(); try (ProvisioningRuntime rt = ProvisioningRuntimeBuilder. newInstance(commandInvocation.getPmSession().getMessageWriter(false)) .initRtLayout(pLayout.transform(ProvisioningRuntimeBuilder.FP_RT_FACTORY)) .setEncoding(ProvisioningManager.Builder.ENCODING) .build()) { for (ProvisionedConfig m : rt.getConfigs()) { String model = m.getModel(); List<ConfigInfo> names = configs.get(model); if (names == null) { names = new ArrayList<>(); configs.put(model, names); } if (m.getName() != null) { names.add(new ConfigInfo(model, m.getName(), m.getLayers())); } } String str = StateInfoUtil.buildConfigs(configs, pLayout); if (str != null) { commandInvocation.print(str); } return str != null; } }
private ProvisioningConfig buildNewConfig(PmSession pmSession) throws ProvisioningException, IOException { ProvisioningConfig tmp = builder.build(); if (runtime != null) { runtime.close(); } runtime = ProvisioningRuntimeBuilder.newInstance(pmSession.getMessageWriter(false)) .initLayout(pmSession.getLayoutFactory(), tmp) .setEncoding(ProvisioningManager.Builder.ENCODING) .build(); Set<FeaturePackLocation.FPID> dependencies = new HashSet<>(); for (FeaturePackRuntime rt : runtime.getFeaturePacks()) { dependencies.add(rt.getFPID()); } FeatureContainer tmpContainer = FeatureContainers.fromProvisioningRuntime(pmSession, runtime); // Need to have in sync the current with the full. // If fullConainer creation is a failure, the container will be not updated. Map<String, FeatureContainer> tmpDeps = new HashMap<>(); if (container != null) { tmpDeps.putAll(container.getFullDependencies()); } buildDependencies(pmSession, dependencies, tmpDeps); container = tmpContainer; container.setEdit(true); container.setFullDependencies(tmpDeps); return tmp; }
rt.provision(); final FsEntryFactory fsFactory = getDefaultFsEntryFactory(); final FsEntry originalState = fsFactory.forPath(rt.getStagedDir()); final FsEntry currentState = fsFactory.forPath(getInstallationHome()); final long startTime = System.nanoTime();
public String getOptionValue(ProvisioningOption option) throws ProvisioningException { return getOptionValue(option, null); }
/** * Deprecated in 3.0.0 in favor of the equivalent with ProvisioningOption * @param option plugin option * @return whether the value is set * @throws ProvisioningException in case of an error */ @Deprecated public boolean isOptionSet(PluginOption option) throws ProvisioningException { return isOptionSet((ProvisioningOption)option); }
private void persistHashes(ProvisioningRuntime runtime) throws ProvisioningException { final long startTime = System.nanoTime(); final FsEntry root = getDefaultFsEntryFactory().forPath(runtime.getStagedDir()); if (root.hasChildren()) { final Path hashes = LayoutUtils.getHashesDir(runtime.getStagedDir()); try { Files.createDirectories(hashes); } catch (IOException e) { throw new ProvisioningException("Failed to persist hashes", e); } final List<FsEntry> dirs = new ArrayList<>(); persistChildHashes(hashes, root, dirs, hashes); if(!dirs.isEmpty()) { for(int i = dirs.size() - 1; i >= 0; --i) { persistDirHashes(hashes, dirs.get(i), dirs); } } } if(log.isVerboseEnabled()) { final long timeMs = (System.nanoTime() - startTime) / 1000000; final long timeSec = timeMs / 1000; log.print("Hashing took %d.%d seconds", timeSec, (timeMs - timeSec * 1000)); } }
return new ProvisioningRuntime(this, messageWriter);
baseConfigs = baseRt.getConfigs();
@Deprecated public String getOptionValue(PluginOption option) throws ProvisioningException { return getOptionValue((ProvisioningOption)option); }
private ProvisionedConfig getDefaultProvisionedConfig(ProvisioningLayout<?> layout, final ConfigModel definedConfig) throws ProvisioningException { final ProvisioningConfig originalConfig = layout.getConfig(); final ProvisioningConfig.Builder baseBuilder = ProvisioningConfig.builder().initUniverses(originalConfig) .addOptions(originalConfig.getOptions()); if (originalConfig.hasTransitiveDeps()) { for (FeaturePackConfig fp : originalConfig.getTransitiveDeps()) { baseBuilder.addFeaturePackDep(originalConfig.originOf(fp.getLocation().getProducer()), fp); } } for (FeaturePackConfig fp : originalConfig.getFeaturePackDeps()) { baseBuilder.addFeaturePackDep(originalConfig.originOf(fp.getLocation().getProducer()), fp); } baseBuilder.setInheritConfigs(false); baseBuilder.includeDefaultConfig(model, name); baseBuilder.addConfig(getBaseConfig(definedConfig)); ProvisioningConfig baseC = baseBuilder.build(); try(ProvisioningRuntime baseRt = ProvisioningRuntimeBuilder.newInstance(log).initLayout(layout.getFactory(), baseC).build()) { return getRequiredProvisionedConfig(baseRt.getConfigs(), model, name); } } }
public static FeatureContainer fromFeaturePackId(PmSession session, FPID fpid, String name) throws ProvisioningException, IOException { if (fpid.getBuild() == null) { FeaturePackLocation loc = session.getUniverse().resolveLatestBuild(fpid.getLocation()); fpid = loc.getFPID(); } FeatureContainer fp = Caches.getFeaturePackInfo(fpid); if (fp != null) { return fp; } try (ProvisioningRuntime rt = buildFullRuntime(fpid, session)) { fp = new FeaturePackInfo(name, fpid, rt.getProvisioningConfig()); populateFeatureContainer(fp, session, rt, true); Caches.addFeaturePackInfo(fpid, fp); } return fp; }
@Deprecated public String getOptionValue(PluginOption option, String defaultValue) throws ProvisioningException { return getOptionValue((ProvisioningOption)option, defaultValue); }