Skip to content

Commit

Permalink
Draft:Update process should check version and not allow reversion th…
Browse files Browse the repository at this point in the history
…rough update #759
  • Loading branch information
parsharma committed Sep 25, 2024
1 parent ff41cff commit 62b52fb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.stream.Collectors;

import org.apache.commons.io.FileUtils;
import org.eclipse.aether.artifact.Artifact;
import org.jboss.galleon.ProvisioningException;
import org.jboss.galleon.diff.FsDiff;
import org.jboss.galleon.diff.FsEntry;
Expand Down Expand Up @@ -117,7 +118,7 @@ public Integer call() throws Exception {
log.tracef("Perform full update");

console.println(CliMessages.MESSAGES.updateHeader(installationDir));

InstallationMetadata installationMetadata = InstallationMetadata.loadInstallation(installationDir);
try (UpdateAction updateAction = actionFactory.update(installationDir, mavenOptions, console, repositories)) {
performUpdate(updateAction, yes, console, installationDir);
}
Expand All @@ -133,6 +134,12 @@ private boolean performUpdate(UpdateAction updateAction, boolean yes, CliConsole
Path targetDir = null;
try {
targetDir = Files.createTempDirectory("update-candidate");
final List<Artifact> manifestUpdates = updateAction.findCurrentChannelSessionManifests();
if(!manifestUpdates.isEmpty()){
for(Artifact version: manifestUpdates){
console.println("Manifest version update detected: Version ["+ version + "]is now available.");
}
}
if (buildUpdate(updateAction, targetDir, yes, console, () -> console.confirmUpdates())) {
console.println("");
console.buildUpdatesComplete();
Expand Down Expand Up @@ -422,17 +429,17 @@ private FeaturePackLocation getFpl(InstallationProfile knownFeaturePack, String
public UpdateCommand(CliConsole console, ActionFactory actionFactory) {
super(console, actionFactory, CliConstants.Commands.UPDATE,
List.of(
new UpdateCommand.PrepareCommand(console, actionFactory),
new UpdateCommand.ApplyCommand(console, actionFactory),
new UpdateCommand.PerformCommand(console, actionFactory),
new UpdateCommand.ListCommand(console, actionFactory),
new PrepareCommand(console, actionFactory),
new ApplyCommand(console, actionFactory),
new PerformCommand(console, actionFactory),
new ListCommand(console, actionFactory),
new SubscribeCommand(console, actionFactory))
);

}

private static boolean buildUpdate(UpdateAction updateAction, Path updateDirectory, boolean yes, CliConsole console, Supplier<Boolean> confirmation) throws OperationException, ProvisioningException {
final UpdateSet updateSet = updateAction.findUpdates();

console.updatesFound(updateSet.getArtifactUpdates());
if (updateSet.isEmpty()) {
return false;
Expand Down Expand Up @@ -470,5 +477,4 @@ public static Path detectProsperoInstallationPath() throws ArgumentParsingExcept
}
return Paths.get(modulePath).toAbsolutePath().getParent();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,13 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.jboss.galleon.util.PathsUtils;
import org.wildfly.channel.Channel;
import org.wildfly.channel.Repository;
Expand All @@ -35,6 +38,7 @@
import org.wildfly.prospero.api.InstallationMetadata;
import org.wildfly.prospero.api.exceptions.OperationException;
import org.wildfly.prospero.galleon.GalleonEnvironment;
import org.wildfly.prospero.metadata.ManifestVersionRecord;
import org.wildfly.prospero.model.ProsperoConfig;
import org.wildfly.prospero.updates.UpdateFinder;
import org.wildfly.prospero.updates.UpdateSet;
Expand Down Expand Up @@ -171,4 +175,14 @@ private ProsperoConfig addTemporaryRepositories(List<Repository> repositories) {

return new ProsperoConfig(channels, prosperoConfig.getMavenOptions());
}

public List<Artifact> findCurrentChannelSessionManifests() {
List<Artifact> manifestArtifacts = new ArrayList<>();
List<ManifestVersionRecord.MavenManifest> mavenManifests = metadata.getManifestVersions().get().getMavenManifests();
for (ManifestVersionRecord.MavenManifest mavenManifest : mavenManifests) {
manifestArtifacts.add(new DefaultArtifact(mavenManifest.getGroupId(), mavenManifest.getArtifactId(), "yaml", mavenManifest.getVersion()));
}
return manifestArtifacts;
}

}

0 comments on commit 62b52fb

Please sign in to comment.