private void init(PmSession pmSession) throws ProvisioningException, IOException { builder = ProvisioningConfig.builder(); config = builder.build(); runtime = ProvisioningRuntimeBuilder.newInstance(pmSession.getMessageWriter(false)) .initLayout(pmSession.getLayoutFactory(), config) .setEncoding(ProvisioningManager.Builder.ENCODING) .build(); container = FeatureContainers.fromProvisioningRuntime(pmSession, runtime); container.setEdit(true); path = "" + PathParser.PATH_SEPARATOR; }
private ProvisioningRuntime getRuntimeInternal(ProvisioningLayout<FeaturePackRuntimeBuilder> layout, FsDiff fsDiff) throws ProvisioningException { return ProvisioningRuntimeBuilder.newInstance(log) .initRtLayout(layout) .setEncoding(encoding) .setFsDiff(fsDiff) .build(); }
public static ProvisioningRuntimeBuilder newInstance(final MessageWriter messageWriter) { return new ProvisioningRuntimeBuilder(messageWriter); }
/** * NOTE: this method will change the current origin to the origin of the group! */ private FeatureGroup getFeatureGroupSpec(String name) throws ProvisioningException { final FeatureGroup fg = getFeatureGroupSpec(currentOrigin, name); clearVisitedFPs(); if(fg == null) { throw new ProvisioningDescriptionException("Failed to locate feature group '" + name + "' in " + (currentOrigin == null ? "the provisioning configuration" : currentOrigin.producer + " and its dependencies")); } return fg; }
private ResolvedFeatureSpec getFeatureSpec(FeaturePackRuntimeBuilder origin, String name, boolean switchOrigin) throws ProvisioningException { final ResolvedFeatureSpec resolvedSpec = findFeatureSpec(origin, name, switchOrigin); clearVisitedFPs(); if(resolvedSpec == null) { if(origin == null) { throw new ProvisioningDescriptionException("Failed to locate feature spec '" + name + "' in the installed feature-packs."); } throw new ProvisioningDescriptionException("Failed to locate feature spec '" + name + "' in " + origin.producer + " and its dependencies."); } return resolvedSpec; }
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); } } }
collectDefaultConfigs(); processFpConfig(fpConfigStack.next()); processConfig(configStack, popConfig(configStack)); mergeModelOnlyConfigs();
parent.addPackageDep(pkgBuilder, type, rt.includedPkgDeps); if(!rt.addToPkgDepBranch(pkgBuilder)) { final FeaturePackRuntimeBuilder currentOrigin = rt.setOrigin(this); try { rt.processPackageDeps(pkgBuilder.spec, pkgBuilder); } catch(UnsatisfiedPackageDependencyException e) { throw new UnsatisfiedPackageDependencyException(getFPID(), pkgName, e); throw new ProvisioningException(Errors.resolvePackage(getFPID(), pkgName), e); } finally { rt.setOrigin(currentOrigin);
private void collectDefaultConfigs(FeaturePackConfig fpConfig) throws ProvisioningException { final ProducerSpec producer = fpConfig.getLocation().getProducer(); thisOrigin = layout.getFeaturePack(producer); final FeaturePackRuntimeBuilder parentFp = setOrigin(thisOrigin); try { if (fpConfig.hasDefinedConfigs()) { configStack = getConfigStack(id); configsToBuild = CollectionUtils.putLinked(configsToBuild, id, configStack); configStack = getConfigStack(id); configsToBuild = CollectionUtils.putLinked(configsToBuild, id, configStack); collectDefaultConfigs(fpConfigStack.next()); setOrigin(parentFp);
List<ProvisionedConfig> getResolvedConfigs() throws ProvisioningException { final int configsTotal = configsToBuild.size(); if(configsTotal == 0) { return Collections.emptyList(); } List<ProvisionedConfig> configList = new ArrayList<>(configsTotal); for(Map.Entry<ConfigId, ConfigModelStack> entry : configsToBuild.entrySet()) { final ConfigId id = entry.getKey(); if(id.getName() == null || contains(configList, id)) { continue; } orderConfig(entry.getValue(), configList, Collections.emptySet()); } return configList.size() > 0 ? Collections.unmodifiableList(configList) : configList; }
public static ProvisioningRuntimeBuilder newInstance() { return newInstance(DefaultMessageWriter.getDefaultInstance()); }
try { currentOrigin.setVisited(true); if (resolved = resolvePackage(currentOrigin, pkgName, parent, type)) { if (offset == 0) { for (int i = resolvedPkgBranch.size() - 1; i >= 0; --i) { clearVisitedFPs(); currentOrigin.setVisited(false);
configStack = getConfigStack(id); configsToBuild = CollectionUtils.putLinked(configsToBuild, id, configStack); collectDefaultConfigs(fpConfigStack.next());
try (ProvisioningRuntime baseRt = ProvisioningRuntimeBuilder.newInstance(log) .initLayout(layout.getFactory(), baseBuilder.build()).build()) { baseConfigs = baseRt.getConfigs();
if(scheduledIds.contains(depId) || contains(configList, depId)) { continue; if(contains(configList, dep.id)) { continue; orderConfig(dep, configList, scheduledIds); throw new ProvisioningDescriptionException("Config " + config.id + " has unsatisfied dependency on config " + depId); if(contains(configList, configStack.id)) { continue; orderConfig(configStack, configList, scheduledIds);
private static ProvisioningRuntime buildFullRuntime(FPID fpid, PmSession pmSession) throws ProvisioningException { FeaturePackConfig config = FeaturePackConfig.forLocation(fpid.getLocation()); ProvisioningConfig provisioning = ProvisioningConfig.builder().addFeaturePackDep(config).build(); ProvisioningRuntime runtime = ProvisioningRuntimeBuilder.newInstance(pmSession.getMessageWriter(false)) .initLayout(pmSession.getLayoutFactory(), provisioning) .setEncoding(ProvisioningManager.Builder.ENCODING) .build(); return runtime; } }
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; }