/** * Installs a feature-pack provided as a local archive. * * @param featurePack path to feature-pack archive * @param installInUniverse whether to install the feature-pack artifact into the universe repository * @throws ProvisioningException in case installation fails */ public void install(Path featurePack, boolean installInUniverse) throws ProvisioningException { install(getLayoutFactory().addLocal(featurePack, installInUniverse)); }
/** * (Re-)provisions the current installation to the desired specification. * * @param provisioningConfig the desired installation specification * @throws ProvisioningException in case provisioning fails */ public void provision(ProvisioningConfig provisioningConfig) throws ProvisioningException { provision(provisioningConfig, Collections.emptyMap()); }
public void addUniverse(Path installation, String name, String factory, String location) throws ProvisioningException, IOException { UniverseSpec u = new UniverseSpec(factory, location); ProvisioningManager mgr = getProvisioningManager(installation); if (name != null) { mgr.addUniverse(name, u); } else { mgr.setDefaultUniverse(u); } resolveUniverse(u); }
/** * (Re-)provisions the current installation to the desired specification. * * @param provisioningConfig the desired installation specification * @param options feature-pack plug-ins options * @throws ProvisioningException in case provisioning fails */ public void provision(ProvisioningConfig provisioningConfig, Map<String, String> options) throws ProvisioningException { try(ProvisioningLayout<FeaturePackRuntimeBuilder> layout = newConfigLayout(provisioningConfig, options)) { doProvision(layout, getFsDiff(), false); } }
/** * (Re-)provisions the current installation to the desired specification. * * @param provisioningLayout pre-built provisioning layout * @throws ProvisioningException in case provisioning fails */ public void provision(ProvisioningLayout<?> provisioningLayout) throws ProvisioningException { try(ProvisioningLayout<FeaturePackRuntimeBuilder> layout = provisioningLayout.transform(ProvisioningRuntimeBuilder.FP_RT_FACTORY)) { doProvision(layout, getFsDiff(), false); } }
/** * Apply provisioning plan to the currently provisioned installation * * @param plan provisioning plan * @param options provisioning plugin options * @throws ProvisioningException in case of a failure */ public void apply(ProvisioningPlan plan, Map<String, String> options) throws ProvisioningException { ProvisioningConfig config = getProvisioningConfig(); if(config == null) { config = ProvisioningConfig.builder().build(); } try (ProvisioningLayout<FeaturePackRuntimeBuilder> layout = getLayoutFactory().newConfigLayout(config, ProvisioningRuntimeBuilder.FP_RT_FACTORY, false)) { layout.apply(plan, options); doProvision(layout, getFsDiff(), false); } }
String configurations = (String) getValue(DEFAULT_CONFIGS_OPTION_NAME); if (configurations == null) { manager.install(loc, options); } else { final ProvisioningConfig.Builder builder = ProvisioningConfig.builder(); manager.provision(builder.build(), options); manager.provision(new LayersConfigBuilder(pmSession, layers.split(",+"), model, config, loc).build(), options); loc = getManager(session).getProvisioningConfig().getFeaturePackDep(loc.getProducer()).getLocation(); session.getPmSession().getExposedLocation(manager.getInstallationHome(), loc)); } catch (ProvisioningException | IOException ex) { throw new CommandExecutionException(session.getPmSession(), CliErrors.installFailed(), ex);
public void install() { try(ProvisioningManager manager = ProvisioningManager.builder() .addArtifactResolver(LegacyGalleon1RepositoryManager.newInstance(repoHome)) .setInstallationHome(installationDir) fpl = manager.getLayoutFactory().addLocal(localPath, false); manager.install(fpConfigBuilder.build(), pluginOptions); } catch (ProvisioningException ex) { throw new IllegalArgumentException("Couldn't install feature-pack " + fpl, ex);
: new MavenArtifactRepositoryManager(repoSystem, repoSession, repositories); try (ProvisioningManager pm = ProvisioningManager.builder().addArtifactResolver(artifactResolver) .setInstallationHome(installDir.toPath()) .setMessageWriter(new DefaultMessageWriter(System.out, System.err, getLog().isDebugEnabled())) fpl = pm.getLayoutFactory().addLocal(fp.getNormalizedPath(), false); } else if (fp.getGroupId() != null && fp.getArtifactId() != null) { Path path = resolveMaven(fp, (MavenRepoManager) artifactResolver); fpl = pm.getLayoutFactory().addLocal(path, false); } else { fpl = FeaturePackLocation.fromString(fp.getLocation()); pm.getLayoutFactory().addLocal(localResolverItem.getNormalizedPath(), localResolverItem.getInstallInUniverse()); } else if (localResolverItem.hasArtifactCoords()) { Path path = resolveMaven(localResolverItem, (MavenRepoManager) artifactResolver); pm.getLayoutFactory().addLocal(path, false); } else { throw new MojoExecutionException("resolve-local element appears to be neither path not maven artifact"); pm.provision(state.build(), pluginOptions);
/** * Query for available updates and patches for feature-packs in this layout. * * @param includeTransitive whether to include transitive dependencies into the result * @return available updates * @throws ProvisioningException in case of a failure */ public ProvisioningPlan getUpdates(boolean includeTransitive) throws ProvisioningException { final ProvisioningConfig config = getProvisioningConfig(); ProvisioningPlan plan; if (config == null) { plan = ProvisioningPlan.builder(); } else { try (ProvisioningLayout<?> layout = getLayoutFactory().newConfigLayout(config)) { plan = layout.getUpdates(includeTransitive); } } return plan; }
final ProvisioningConfig config = getProvisioningConfig(); if(config == null || !config.hasFeaturePackDeps()) { return null; final Path hashesDir = LayoutUtils.getHashesDir(getInstallationHome()); if(Files.exists(hashesDir)) { final FsEntry originalState = new FsEntry(null, hashesDir); readHashes(originalState, new ArrayList<>()); final FsEntry currentState = getDefaultFsEntryFactory().forPath(getInstallationHome()); return FsDiff.diff(originalState, currentState); try(ProvisioningRuntime rt = getRuntime(config)) { rt.provision(); final FsEntryFactory fsFactory = getDefaultFsEntryFactory(); final FsEntry originalState = fsFactory.forPath(rt.getStagedDir()); final FsEntry currentState = fsFactory.forPath(getInstallationHome()); final long startTime = System.nanoTime(); final FsDiff fsDiff = FsDiff.diff(originalState, currentState);
/** * Installs a feature-pack provided as a local archive. * This method calls install(featurePack, true). * * @param featurePack path to feature-pack archive * @throws ProvisioningException in case installation fails */ public void install(Path featurePack) throws ProvisioningException { install(featurePack, true); }
/** * 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 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; } }
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 Set<String> getUniverseNames(Path installation) { if (pmSession.getState() != null) { return pmSession.getState().getConfig().getUniverseNamedSpecs().keySet(); } try { ProvisioningManager mgr = getProvisioningManager(installation); return mgr.getProvisioningConfig().getUniverseNamedSpecs().keySet(); } catch (ProvisioningException ex) { return Collections.emptySet(); } }
@Override protected void runCommand(PmCommandInvocation invoc) throws CommandExecutionException { try { Function<ProvisioningLayout<FeaturePackLayout>, FeatureContainer> supplier = new Function<ProvisioningLayout<FeaturePackLayout>, FeatureContainer>() { public FeatureContainer apply(ProvisioningLayout<FeaturePackLayout> layout) { try { return getFeatureContainer(invoc.getPmSession(), layout); } catch (CommandExecutionException | ProvisioningException | IOException ex) { throw new RuntimeException(ex); } } }; ProvisioningManager mgr = getManager(invoc.getPmSession()); StateInfoUtil.displayInfo(invoc, mgr.getInstallationHome(), mgr.getProvisioningConfig(), type, supplier); } catch (ProvisioningException | CommandExecutionException ex) { throw new CommandExecutionException(invoc.getPmSession(), CliErrors.infoFailed(), ex); } }
private ProvisioningManager getManager() { return ProvisioningManager.builder() .setArtifactResolver(FeaturePackRepositoryManager.newInstance(repoHome)) .setInstallationHome(installationDir) .build(); } }
@Override protected void runCommand(PmCommandInvocation invoc) throws CommandExecutionException { try { ProvisioningManager mgr = getManager(invoc.getPmSession()); FsDiff diff = mgr.getFsDiff(); if (diff.isEmpty()) { invoc.println("No changes detected"); } else { Path workingDir = Paths.get(invoc.getConfiguration().getAeshContext(). getCurrentWorkingDirectory().getAbsolutePath()); Path installation = mgr.getInstallationHome(); PathResolver resolver = new PathResolver() { @Override public String resolve(String relativePath) { Path absPath = Paths.get(installation.toString(), relativePath); return workingDir.relativize(absPath).toString(); } }; FsDiff.log(diff, new Consumer<String>() { @Override public void accept(String msg) { invoc.println(msg); } }, resolver); } } catch (ProvisioningException ex) { throw new CommandExecutionException(ex.getMessage()); } }