@Override public PatchingHistory getPatchingHistory(String streamName) throws PatchingException { final InstalledIdentity identity = streamName == null ? manager.getDefaultIdentity() : manager.getInstalledIdentity(streamName, null); return PatchingHistory.Factory.getHistory(identity); }
public PatchToolImpl(final InstallationManager manager) { this.manager = manager; this.runner = new IdentityPatchRunner(manager.getInstalledImage()); this.callback = runner; }
protected InstallationManager loadInstallationManager() throws IOException { final File jbossHome = new File(tempDir, JBOSS_INSTALLATION); final File modules = new File(jbossHome, MODULES); return InstallationManager.load(jbossHome, Collections.singletonList(modules), Collections.emptyList(), productConfig); }
@Override protected void execute(OperationContext context, ModelNode operation, InstallationManager instMgr, String patchStream) throws OperationFailedException { try { if (patchStream != null) { final InstalledIdentity installedIdentity = instMgr.getInstalledIdentity(patchStream, null); ageOutHistory(installedIdentity); } else { for (InstalledIdentity installedIdentity : instMgr.getInstalledIdentities()) { ageOutHistory(installedIdentity); } } } catch (PatchingException e) { throw new IllegalStateException(PatchLogger.ROOT_LOGGER.failedToLoadIdentity(), e); } context.completeStep(OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER); }
@Override public Set<String> children() { final InstallationManager manager = getInstallationManager(); if (manager == null) { return Collections.emptySet(); } final Collection<? extends PatchableTarget> targets = getChildTargets(manager.getDefaultIdentity()); if (targets.isEmpty()) { return Collections.emptySet(); } if (targets.size() == 1) { final PatchableTarget target = targets.iterator().next(); return Collections.singleton(target.getName()); } final Set<String> names = new HashSet<String>(targets.size()); for (PatchableTarget target : targets) { names.add(target.getName()); } return names; } }
@Override protected void execute(final OperationContext context, final ModelNode operation, final InstallationManager installationManager, final String patchStream) throws OperationFailedException { if (installationManager.requiresRestart()) { throw PatchLogger.ROOT_LOGGER.serverRequiresRestart(); installationManager.restartRequired(); context.restartRequired(); context.completeStep(new OperationContext.ResultHandler() { final ModelNode failureDescription = context.getFailureDescription(); PatchOperationTarget.formatFailedResponse(e, failureDescription); installationManager.clearRestartRequired(); } finally {
protected PatchingResult execute(final File workDir, final ContentVerificationPolicy contentPolicy) throws PatchingException, IOException, XMLStreamException { final File patchBundleXml = new File(workDir, PatchBundleXml.MULTI_PATCH_XML); if (patchBundleXml.exists()) { final InputStream patchIs = new FileInputStream(patchBundleXml); try { // Handle multi patch installs final BundledPatch bundledPatch = PatchBundleXml.parse(patchIs); return applyPatchBundle(workDir, bundledPatch, contentPolicy); } finally { safeClose(patchIs); } } else { // Parse the xml File patchXml = new File(workDir, PatchXml.PATCH_XML); PatchMetadataResolver patchResolver = parsePatchXml(patchXml); Patch patch = patchResolver.resolvePatch(null, null); final InstalledIdentity installedIdentity = manager.getInstalledIdentity(patch.getIdentity().getName(), null); final String currentVersion = installedIdentity.getIdentity().getVersion(); if(!Constants.UNKNOWN.equals(currentVersion) && !patch.getIdentity().getVersion().equals(currentVersion)) { patchXml = new File(workDir, currentVersion + PatchMerger.PATCH_XML_SUFFIX); if(!patchXml.exists()) { throw new PatchingException("The patch does not contain metadata for currently installed " + patch.getIdentity().getName() + " version " + currentVersion); } patchResolver = parsePatchXml(patchXml); patch = patchResolver.resolvePatch(null, null); } return apply(patchResolver, PatchContentProvider.DefaultContentProvider.create(workDir), contentPolicy); } }
this.manager = load(jbossHome, productConfig); final File cleanupMaker = new File(manager.getInstalledImage().getInstallationMetadata(), "cleanup-patching-dirs"); boolean cleanup = cleanupMaker.exists(); for(InstalledIdentity installedIdentity : manager.getInstalledIdentities()) { final Identity identity = installedIdentity.getIdentity(); final TargetInfo patchingInfo = identity.loadTargetInfo(); final File renamingMaker = new File(manager.getInstalledImage().getInstallationMetadata(), "cleanup-renaming-files"); if (renamingMaker.exists()) { try {
@Override public void handleResult(OperationContext.ResultAction resultAction, OperationContext context, ModelNode operation) { if(resultAction == OperationContext.ResultAction.KEEP) { result.commit(); } else { installationManager.clearRestartRequired(); context.revertRestartRequired(); result.rollback(); } } });
@Override public List<String> getPatchStreams() throws PatchingException { final List<InstalledIdentity> installedIdentities = manager.getInstalledIdentities(); if(installedIdentities.size() == 1) { return Collections.singletonList(installedIdentities.get(0).getIdentity().getName()); } final List<String> result = new ArrayList<String>(installedIdentities.size()); for(InstalledIdentity ii : installedIdentities) { result.add(ii.getIdentity().getName()); } return result; }
@Override public Set<String> children() { final InstallationManager manager = getInstallationManager(); if (manager == null) { return Collections.emptySet(); } final Collection<? extends PatchableTarget> targets = getChildTargets(manager.getDefaultIdentity()); if (targets.isEmpty()) { return Collections.emptySet(); } if (targets.size() == 1) { final PatchableTarget target = targets.iterator().next(); return Collections.singleton(target.getName()); } final Set<String> names = new HashSet<String>(targets.size()); for (PatchableTarget target : targets) { names.add(target.getName()); } return names; } }
@Override protected void execute(final OperationContext context, final ModelNode operation, final InstallationManager installationManager, final String patchStream) throws OperationFailedException { if (installationManager.requiresRestart()) { throw PatchLogger.ROOT_LOGGER.serverRequiresRestart(); installationManager.restartRequired(); context.restartRequired(); context.completeStep(new OperationContext.ResultHandler() { final ModelNode failureDescription = context.getFailureDescription(); PatchOperationTarget.formatFailedResponse(e, failureDescription); installationManager.clearRestartRequired(); } finally {
@Override protected void execute(OperationContext context, ModelNode operation, InstallationManager instMgr, String patchStream) throws OperationFailedException { try { if (patchStream != null) { final InstalledIdentity installedIdentity = instMgr.getInstalledIdentity(patchStream, null); ageOutHistory(installedIdentity); } else { for (InstalledIdentity installedIdentity : instMgr.getInstalledIdentities()) { ageOutHistory(installedIdentity); } } } catch (PatchingException e) { throw new IllegalStateException(PatchLogger.ROOT_LOGGER.failedToLoadIdentity(), e); } context.completeStep(OperationContext.RollbackHandler.NOOP_ROLLBACK_HANDLER); }
protected PatchingResult execute(final File workDir, final ContentVerificationPolicy contentPolicy) throws PatchingException, IOException, XMLStreamException { final File patchBundleXml = new File(workDir, PatchBundleXml.MULTI_PATCH_XML); if (patchBundleXml.exists()) { final InputStream patchIs = new FileInputStream(patchBundleXml); try { // Handle multi patch installs final BundledPatch bundledPatch = PatchBundleXml.parse(patchIs); return applyPatchBundle(workDir, bundledPatch, contentPolicy); } finally { safeClose(patchIs); } } else { // Parse the xml File patchXml = new File(workDir, PatchXml.PATCH_XML); PatchMetadataResolver patchResolver = parsePatchXml(patchXml); Patch patch = patchResolver.resolvePatch(null, null); final InstalledIdentity installedIdentity = manager.getInstalledIdentity(patch.getIdentity().getName(), null); final String currentVersion = installedIdentity.getIdentity().getVersion(); if(!Constants.UNKNOWN.equals(currentVersion) && !patch.getIdentity().getVersion().equals(currentVersion)) { patchXml = new File(workDir, currentVersion + PatchMerger.PATCH_XML_SUFFIX); if(!patchXml.exists()) { throw new PatchingException("The patch does not contain metadata for currently installed " + patch.getIdentity().getName() + " version " + currentVersion); } patchResolver = parsePatchXml(patchXml); patch = patchResolver.resolvePatch(null, null); } return apply(patchResolver, PatchContentProvider.DefaultContentProvider.create(workDir), contentPolicy); } }
this.manager = load(jbossHome, productConfig); final File cleanupMaker = new File(manager.getInstalledImage().getInstallationMetadata(), "cleanup-patching-dirs"); boolean cleanup = cleanupMaker.exists(); for(InstalledIdentity installedIdentity : manager.getInstalledIdentities()) { final Identity identity = installedIdentity.getIdentity(); final TargetInfo patchingInfo = identity.loadTargetInfo(); final File renamingMaker = new File(manager.getInstalledImage().getInstallationMetadata(), "cleanup-renaming-files"); if (renamingMaker.exists()) { try {
@Override public void handleResult(OperationContext.ResultAction resultAction, OperationContext context, ModelNode operation) { if (resultAction == OperationContext.ResultAction.KEEP) { result.commit(); } else { installationManager.clearRestartRequired(); context.revertRestartRequired(); result.rollback(); } }
@Override public List<String> getPatchStreams() throws PatchingException { final List<InstalledIdentity> installedIdentities = manager.getInstalledIdentities(); if(installedIdentities.size() == 1) { return Collections.singletonList(installedIdentities.get(0).getIdentity().getName()); } final List<String> result = new ArrayList<String>(installedIdentities.size()); for(InstalledIdentity ii : installedIdentities) { result.add(ii.getIdentity().getName()); } return result; }
@Override public PatchingHistory getPatchingHistory(String streamName) throws PatchingException { final InstalledIdentity identity = streamName == null ? manager.getDefaultIdentity() : manager.getInstalledIdentity(streamName, null); return PatchingHistory.Factory.getHistory(identity); }
PatchableTarget getLayer(final String layerName) { return installationManager.getDefaultIdentity().getLayer(layerName); }
final InstallationManager installationManager = (InstallationManager) registry.getRequiredService(InstallationManagerService.NAME).getValue(); if (installationManager.requiresRestart()) { throw PatchLogger.ROOT_LOGGER.serverRequiresRestart(); installationManager.restartRequired(); final PatchingResult result = runner.applyPatch(is, policy); context.restartRequired(); final ModelNode failureDescription = context.getFailureDescription(); PatchOperationTarget.formatFailedResponse(e, failureDescription); installationManager.clearRestartRequired();