private void write(JobIdentifier<?, ?> jobId, Delta delta, String comment) { _dataStore.update( getTableName(), jobId.toString(), TimeUUIDs.newUUID(), delta, new AuditBuilder().setLocalHost().setComment(comment).build(), WriteConsistency.STRONG ); } }
/** * Last step in dropping a table or facade. */ private void deleteFinal(TableJson json, Storage storage) { // Remove the uuid and storage--we no longer need it. Leave the uuid in _systemTableUuid so it isn't reused. Delta delta = json.newDeleteStorage(storage); Audit audit = new AuditBuilder() .set("_op", "doDeleteFinal") .set("_uuid", storage.getUuidString()) .build(); updateTableMetadata(json.getTable(), delta, audit, InvalidationScope.LOCAL); }
@Timed (name = "bv.emodb.table.AstyanaxTableDAO.audit", absolute = true) @Override public void audit(String name, String op, Audit audit) { checkNotNull(name, "table"); checkNotNull(audit, "audit"); checkTableChangesAllowed(name); Audit augmentedAudit = AuditBuilder.from(audit) .set("_op", op) .build(); updateTableMetadata(name, Deltas.noop(), augmentedAudit, null); }
public static AuditBuilder from(Audit audit) { return new AuditBuilder().setAll(audit.getAll()); }
@Override public void requestStash(String scanId, StashRequest request) { checkNotNull(scanId, "scanId"); checkNotNull(request, "request"); _dataStore.update(getTable(), scanId, TimeUUIDs.newUUID(), Deltas.mapBuilder() .update("requests", Deltas.mapBuilder() .update(request.getRequestedBy(), Deltas.literal(JsonHelper.convert(request.getRequestTime(), String.class))) .build()) .build(), new AuditBuilder().setComment("Added scan request").set("requestedBy", request.getRequestedBy()).build()); }
@Override public boolean saveIfChanged(DataCenter dataCenter, @Nullable DataCenter original) { Map.Entry<String, Object> entry = serialize(dataCenter); // Compare against the original using the serialized form. if (original != null && entry.equals(serialize(original))) { return false; } Delta delta = Deltas.mapBuilder() .put(entry.getKey(), entry.getValue()) .build(); Audit audit = new AuditBuilder().setLocalHost().setProgram("emodb").build(); _dataStore.update(TABLE, ROW, TimeUUIDs.newUUID(), delta, audit); return true; }
private void moveStart(TableJson json, Storage src, String destUuid, String destPlacement, int shardsLog2, String op, Optional<Audit> audit, MoveType moveType) { Delta delta; if (moveType == MoveType.FULL_PLACEMENT) { delta = json.newMovePlacementStart(src, destUuid, destPlacement, shardsLog2); } else { delta = json.newMoveStart(src, destUuid, destPlacement, shardsLog2); } Audit augmentedAudit = (audit.isPresent() ? AuditBuilder.from(audit.get()) : new AuditBuilder()) .set("_op", op) .set("_srcUuid", src.getUuidString()) .set("_srcPlacement", src.getPlacement()) .set("_destUuid", destUuid) .set("_destPlacement", destPlacement) .build(); updateTableMetadata(json.getTable(), delta, augmentedAudit, InvalidationScope.GLOBAL); }
/** * Verifies that the given report table exists or, if not, creates it. */ @Override public void verifyOrCreateReport(String reportId) { checkNotNull(reportId, "reportId"); String tableName = getTableName(reportId); if (_dataStore.getTableExists(tableName)) { return; // Nothing to do. } try { // TODO: when run in the EU this should be routed to the US data center. _dataStore.createTable(tableName, new TableOptionsBuilder().setPlacement(_systemTablePlacement).build(), ImmutableMap.<String, String>of(), new AuditBuilder().setComment("create table").build() ); } catch (TableExistsException e) { // This is expected if we're continuing an existing report. } }
private void moveTables(Collection<String> tables, String destPlacement, Optional<Integer> numShards, PrintWriter out, MoveType moveType) { if (!tables.isEmpty() && destPlacement == null) { out.println("The 'dest' placement query parameter is required when moving tables."); return; } for (String table : tables) { out.printf("Moving table %s to placement %s...%n", table, destPlacement); try { _tableDao.move(table, destPlacement, numShards, new AuditBuilder().build(), moveType); } catch (Exception e) { out.printf("ERROR moving table %s to placement %s: ", table, destPlacement); e.printStackTrace(out); } } }
public AuditBuilder setUser(String user) { return set(Audit.USER, user); } }
@Override public void undoRequestStash(String scanId, StashRequest request) { checkNotNull(scanId, "scanId"); checkNotNull(request, "request"); _dataStore.update(getTable(), scanId, TimeUUIDs.newUUID(), Deltas.conditional(Conditions.isDefined(), Deltas.mapBuilder() .update("requests", Deltas.conditional(Conditions.isDefined(), Deltas.mapBuilder() .update(request.getRequestedBy(), Deltas.delete()) .build())) .build()), new AuditBuilder().setComment("Removed scan request").set("requestedBy", request.getRequestedBy()).build()); }
@Override public boolean saveIfChanged(DataCenter dataCenter, @Nullable DataCenter original) { Map.Entry<String, Object> entry = serialize(dataCenter); // Compare against the original using the serialized form. if (original != null && entry.equals(serialize(original))) { return false; } Delta delta = Deltas.mapBuilder() .put(entry.getKey(), entry.getValue()) .build(); Audit audit = new AuditBuilder().setLocalHost().setProgram("emodb").build(); _dataStore.update(TABLE, ROW, TimeUUIDs.newUUID(), delta, audit); return true; }
private void moveStart(TableJson json, Storage src, String destUuid, String destPlacement, int shardsLog2, String op, Optional<Audit> audit, MoveType moveType) { Delta delta; if (moveType == MoveType.FULL_PLACEMENT) { delta = json.newMovePlacementStart(src, destUuid, destPlacement, shardsLog2); } else { delta = json.newMoveStart(src, destUuid, destPlacement, shardsLog2); } Audit augmentedAudit = (audit.isPresent() ? AuditBuilder.from(audit.get()) : new AuditBuilder()) .set("_op", op) .set("_srcUuid", src.getUuidString()) .set("_srcPlacement", src.getPlacement()) .set("_destUuid", destUuid) .set("_destPlacement", destPlacement) .build(); updateTableMetadata(json.getTable(), delta, augmentedAudit, InvalidationScope.GLOBAL); }
private void updateTableData(AllTablesReportDelta delta, AllTablesReportDelta.TableDelta tableDelta) { _dataStore.update( getTableName(delta.getReportId()), tableDelta.getTableName(), TimeUUIDs.newUUID(), Deltas.mapBuilder() .update("tables", Deltas.mapBuilder() .update(tableDelta.getTableId(), Deltas.mapBuilder() .putIfAbsent("placement", tableDelta.getPlacement()) .putIfAbsent("facade", tableDelta.isFacade()) .update("dropped", tableDelta.isDropped() ? Deltas.literal(true) : Deltas.conditional(Conditions.not(Conditions.equal(true)), Deltas.literal(false))) .update("shards", Deltas.mapBuilder() .put(String.valueOf(tableDelta.getShardId()), JsonHelper.convert(tableDelta.getTableStatistics(), Map.class)) .build()) .build()) .build()) .build(), new AuditBuilder().setComment(delta.getDescription()).build(), WriteConsistency.WEAK); }
private void moveFacades(Collection<String> facades, String srcPlacement, String destPlacement, Optional<Integer> numShards, PrintWriter out, MoveType moveType) { if (!facades.isEmpty() && (srcPlacement == null || destPlacement == null)) { out.println("The 'src' and 'dest' placement query parameters are required when moving facades."); return; } for (String facade : facades) { out.printf("Moving facade %s to placement %s...%n", facade, destPlacement); try { _tableDao.moveFacade(facade, srcPlacement, destPlacement, numShards, new AuditBuilder().build(), moveType); } catch (Exception e) { out.printf("ERROR moving facade %s to placement %s: ", facade, destPlacement); e.printStackTrace(out); } } }
public static AuditBuilder from(Audit audit) { return new AuditBuilder().setAll(audit.getAll()); }
public AuditBuilder setComment(String comment) { return set(Audit.COMMENT, comment); }
@Override public void revokePermissions(String id) { checkNotNull(id, "id"); validateTable(); _dataStore.update( _tableName, id, TimeUUIDs.newUUID(), Deltas.delete(), new AuditBuilder().setLocalHost().setComment("delete permissions").build(), WriteConsistency.GLOBAL); }
/** * Last step in dropping a table or facade. */ private void deleteFinal(TableJson json, Storage storage) { // Remove the uuid and storage--we no longer need it. Leave the uuid in _systemTableUuid so it isn't reused. Delta delta = json.newDeleteStorage(storage); Audit audit = new AuditBuilder() .set("_op", "doDeleteFinal") .set("_uuid", storage.getUuidString()) .build(); updateTableMetadata(json.getTable(), delta, audit, InvalidationScope.LOCAL); }
@Timed (name = "bv.emodb.table.AstyanaxTableDAO.audit", absolute = true) @Override public void audit(String name, String op, Audit audit) { checkNotNull(name, "table"); checkNotNull(audit, "audit"); checkTableChangesAllowed(name); Audit augmentedAudit = AuditBuilder.from(audit) .set("_op", op) .build(); updateTableMetadata(name, Deltas.noop(), augmentedAudit, null); }