
org.opensearch.migrations.cli.Items Maven / Gradle / Ivy
package org.opensearch.migrations.cli;
import java.util.List;
import java.util.stream.Collectors;
import org.opensearch.migrations.metadata.CreationResult;
import lombok.Builder;
import lombok.Data;
import lombok.NonNull;
/**
* Either items that are candidates for migration or have been migrated;
*/
@Builder
@Data
public class Items {
static final String NONE_FOUND_MARKER = "";
private final boolean dryRun;
@NonNull
private final List indexTemplates;
@NonNull
private final List componentTemplates;
@NonNull
private final List indexes;
@NonNull
private final List aliases;
private final String failureMessage;
public String asCliOutput() {
var sb = new StringBuilder();
if (isDryRun()) {
sb.append("Migration Candidates:" + System.lineSeparator());
} else {
sb.append("Migrated Items:" + System.lineSeparator());
}
appendSection(sb, "Index Templates", getIndexTemplates());
appendSection(sb, "Component Templates", getComponentTemplates());
appendSection(sb, "Indexes", getIndexes());
appendSection(sb, "Aliases", getAliases());
return sb.toString();
}
private void appendSection(StringBuilder sb, String sectionTitle, List items) {
sb.append(Format.indentToLevel(1))
.append(sectionTitle)
.append(":")
.append(System.lineSeparator());
if (items.isEmpty()) {
sb.append(Format.indentToLevel(2))
.append(NONE_FOUND_MARKER)
.append(System.lineSeparator());
} else {
appendItems(sb, items);
appendFailures(sb, items);
}
sb.append(System.lineSeparator());
}
private void appendItems(StringBuilder sb, List items) {
var successfulItems = items.stream()
.filter(r -> r.wasSuccessful())
.map(r -> r.getName())
.collect(Collectors.toList());
if (!successfulItems.isEmpty()) {
sb.append(Format.indentToLevel(2))
.append(getPrintableList(successfulItems))
.append(System.lineSeparator());
}
}
private void appendFailures(StringBuilder sb, List items) {
var failures = items.stream()
.filter(r -> !r.wasSuccessful())
.map(this::failureMessage)
.sorted()
.collect(Collectors.toList());
if (!failures.isEmpty()) {
failures.forEach(failure -> sb.append(Format.indentToLevel(2))
.append(failure)
.append(System.lineSeparator()));
}
}
private String failureMessage(CreationResult result){
var sb = new StringBuilder()
.append(result.getFailureType().isFatal() ? "ERROR" : "WARN")
.append(" - ")
.append(result.getName())
.append(" ")
.append(result.getFailureType().getMessage());
if (result.getFailureType().isFatal()) {
sb.append(": " + result.getException().getMessage());
}
return sb.toString();
}
private String getPrintableList(List list) {
return list.stream().sorted().collect(Collectors.joining(", "));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy