@JsonCreator private static @Nonnull SnapshotMetadata create( @JsonProperty(PROP_CREATION_TIMESTAMP) @Nullable Instant creationTimestamp, @JsonProperty(PROP_INITIALIZATION_METADATA) @Nullable InitializationMetadata initializationMetadata, @JsonProperty(PROP_PARENT_SNAPSHOT_ID) @Nullable SnapshotId parentSnapshot) { return new SnapshotMetadata( requireNonNull(creationTimestamp), requireNonNull(initializationMetadata), parentSnapshot); }
@Override public boolean equals(@Nullable Object obj) { if (this == obj) { return true; } if (!(obj instanceof SnapshotMetadataEntry)) { return false; } SnapshotMetadataEntry rhs = (SnapshotMetadataEntry) obj; return _name.equals(rhs._name) && _metadata.equals(rhs._metadata); }
public static Instant getSnapshotCreationTimeOrMin(NetworkId networkId, SnapshotId snapshotId) { try { return readMetadata(networkId, snapshotId).getCreationTimestamp(); } catch (Exception e) { return Instant.MIN; } }
private void initSnapshotMetadata(String network, String snapshot, ProcessingStatus status) throws IOException { WorkMgrTestUtils.initSnapshotWithTopology(NETWORK, snapshot, ImmutableSet.of()); SnapshotMetadataMgr.writeMetadata( new SnapshotMetadata(Instant.now(), null).updateStatus(status, null), network, snapshot); }
public static synchronized void updateInitializationStatus( NetworkId networkId, SnapshotId snapshotId, ProcessingStatus status, String errMessage) throws IOException { writeMetadata( readMetadata(networkId, snapshotId).updateStatus(status, errMessage), networkId, snapshotId); }
public static InitializationMetadata getInitializationMetadata( NetworkId networkId, SnapshotId snapshotId) throws IOException { SnapshotMetadata trMetadata = readMetadata(networkId, snapshotId); return trMetadata.getInitializationMetadata(); }
public static @Nullable SnapshotId getParentSnapshotId(NetworkId network, SnapshotId snapshot) throws IOException { return readMetadata(network, snapshot).getParentSnapshotId(); }
private static boolean isParsed(@Nonnull SnapshotMetadataEntry snapshotMetadataEntry) { ProcessingStatus processingStatus = snapshotMetadataEntry.getMetadata().getInitializationMetadata().getProcessingStatus(); switch (processingStatus) { case DATAPLANED: case DATAPLANING: case DATAPLANING_FAIL: case PARSED: return true; case PARSING: case PARSING_FAIL: case UNINITIALIZED: default: return false; } }
public @Nonnull SnapshotMetadata updateStatus(ProcessingStatus status, String errMessage) { return new SnapshotMetadata( _creationTimestamp, _initializationMetadata.updateStatus(status, errMessage), _parentSnapshotId); } }
private void initializeNetworkNodeRolesFromEarliestSnapshot(@Nonnull String network) throws IOException { Optional<String> snapshot = listSnapshotsWithMetadata(network).stream() .filter(WorkMgr::isParsed) .sorted(Comparator.comparing(e -> e.getMetadata().getCreationTimestamp())) .map(SnapshotMetadataEntry::getName) .findFirst(); if (snapshot.isPresent()) { putNetworkNodeRoles(getSnapshotNodeRoles(network, snapshot.get()), network); } }
@Test public void serialization() { SnapshotMetadata metadata = new SnapshotMetadata(Instant.ofEpochMilli(758949005001L), new SnapshotId("blah")); JsonNode jsonNode = BatfishObjectMapper.mapper().valueToTree(metadata); assertThat(jsonNode.get(PROP_CREATION_TIMESTAMP).asText(), equalTo("1994-01-19T03:10:05.001Z")); assertThat(jsonNode.get(PROP_PARENT_SNAPSHOT_ID).asText(), equalTo("blah")); assertThat( jsonNode.get(PROP_INITIALIZATION_METADATA).get("currentStatus").asText(), equalTo(ProcessingStatus.UNINITIALIZED.toString())); } }
private void createSnapshotWithMetadata(String network, String snapshot) throws IOException { NetworkId networkId = _idManager.getNetworkId(network); SnapshotId snapshotId = _idManager.generateSnapshotId(); _idManager.assignSnapshot(snapshot, networkId, snapshotId); SnapshotMetadataMgr.writeMetadata( new SnapshotMetadata(new Date().toInstant(), null), networkId, snapshotId); }
new SnapshotMetadata(Instant.now(), parentSnapshotId), networkId, snapshotId); } catch (Exception e) { BatfishException metadataError = new BatfishException("Could not write testrigMetadata", e);
public static void initSnapshotWithTopology(String network, String snapshot, Set<String> nodes) throws IOException { IdManager idManager = Main.getWorkMgr().getIdManager(); NetworkId networkId = idManager.getNetworkId(network); SnapshotId snapshotId = idManager.hasSnapshotId(snapshot, networkId) ? idManager.getSnapshotId(snapshot, networkId) : idManager.generateSnapshotId(); idManager.assignSnapshot(snapshot, networkId, snapshotId); SnapshotMetadataMgr.writeMetadata( new SnapshotMetadata(new Date().toInstant(), null), networkId, snapshotId); Topology pojoTopology = new Topology(snapshot); pojoTopology.setNodes(nodes.stream().map(Node::new).collect(Collectors.toSet())); Main.getWorkMgr().getStorage().storePojoTopology(pojoTopology, networkId, snapshotId); org.batfish.datamodel.Topology envTopology = new org.batfish.datamodel.Topology(ImmutableSortedSet.of()); Main.getWorkMgr().getStorage().storeTopology(envTopology, networkId, snapshotId); }