Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ private void addChannelChange(
aaArchivePVS.get(archiverAlias).add(newArchiverPV);
}
}

private ArchiveAction pickArchiveAction(String archiveStatus, String pvStatus) {
if (archiveStatus.equals("Being archived") && (pvStatus.equals(PV_STATUS_INACTIVE))) {
return ArchiveAction.PAUSE;
Expand All @@ -209,39 +209,52 @@ private ArchiveAction pickArchiveAction(String archiveStatus, String pvStatus) {
&& !archiveStatus.equals("Paused")
&& pvStatus.equals(PV_STATUS_ACTIVE)) { // If archive status anything else
return ArchiveAction.ARCHIVE;

}

return ArchiveAction.NONE;
}

private Map<ArchiveAction, List<ArchivePVOptions>> getArchiveActions(
Map<String, ArchivePVOptions> archivePVS, ArchiverInfo archiverInfo) {
Map<String, ArchivePVOptions> archivePVS, ArchiverInfo archiverInfo) {
if (archiverInfo == null) {
return Map.of();
}

logger.log(Level.INFO, () -> String.format("Get archiver status in archiver %s", archiverInfo));

Map<ArchiveAction, List<ArchivePVOptions>> result = new EnumMap<>(ArchiveAction.class);
Arrays.stream(ArchiveAction.values())
.forEach(archiveAction -> result.put(archiveAction, new ArrayList<>()));
Arrays.stream(ArchiveAction.values()).forEach(archiveAction -> result.put(archiveAction, new ArrayList<>()));
// Don't request to archive an empty list.
if (archivePVS.isEmpty()) {
return result;
}
List<Map<String, String>> statuses =
archiverClient.getStatuses(archivePVS, archiverInfo.url(), archiverInfo.alias());
statuses.forEach(
archivePVStatusJsonMap -> {
String archiveStatus = archivePVStatusJsonMap.get("status");
String pvName = archivePVStatusJsonMap.get("pvName");
String pvStatus = archivePVS.get(pvName).getPvStatus();
ArchiveAction action = pickArchiveAction(archiveStatus, pvStatus);
result.get(action).add(archivePVS.get(pvName));
});
List<Map<String, String>> statuses = archiverClient.getStatuses(archivePVS, archiverInfo.url(), archiverInfo.alias());
logger.log(Level.FINER, "Statuses {0}", statuses);
statuses.forEach(archivePVStatusJsonMap -> {
String archiveStatus = archivePVStatusJsonMap.get("status");
String pvName = archivePVStatusJsonMap.get("pvName");

if (archiveStatus == null || pvName == null) {
logger.log(Level.WARNING, "Missing status or pvName in archivePVStatusJsonMap: {0}", archivePVStatusJsonMap);
return;
}

ArchivePVOptions archivePVOptions = archivePVS.get(pvName);
if (archivePVOptions == null) {
logger.log(Level.WARNING, "archivePVS does not contain pvName: {0}", pvName);
return;
}

String pvStatus = archivePVOptions.getPvStatus();
ArchiveAction action = pickArchiveAction(archiveStatus, pvStatus);

List<ArchivePVOptions> archivePVOptionsList = result.get(action);
archivePVOptionsList.add(archivePVOptions);
});
return result;
}

private ArchivePVOptions createArchivePV(
List<String> policyList, Channel channel, String archiveProperty, String pvStaus) {
ArchivePVOptions newArchiverPV = new ArchivePVOptions();
Expand Down
Loading