diff --git a/clients/java/src/main/java/marquez/client/models/Run.java b/clients/java/src/main/java/marquez/client/models/Run.java index 24c57936ad..f0373568a3 100644 --- a/clients/java/src/main/java/marquez/client/models/Run.java +++ b/clients/java/src/main/java/marquez/client/models/Run.java @@ -28,6 +28,7 @@ public final class Run extends RunMeta { @Nullable private final Instant startedAt; @Nullable private final Long durationMs; @Nullable private final Instant endedAt; + @Nullable private final JobVersionId jobVersion; @Getter private final Map facets; @Getter private final List inputDatasetVersions; @Getter private final List outputDatasetVersions; @@ -43,6 +44,7 @@ public Run( @Nullable final Instant endedAt, @Nullable final Long durationMs, @Nullable final Map args, + @Nullable final JobVersionId jobVersion, @Nullable final Map facets, @Nullable final List inputDatasetVersions, @Nullable final List outputDatasetVersions) { @@ -53,6 +55,7 @@ public Run( this.startedAt = startedAt; this.durationMs = durationMs; this.endedAt = endedAt; + this.jobVersion = jobVersion; this.facets = (facets == null) ? ImmutableMap.of() : ImmutableMap.copyOf(facets); this.inputDatasetVersions = (inputDatasetVersions == null) ? Collections.emptyList() : inputDatasetVersions; @@ -72,6 +75,10 @@ public Optional getDurationMs() { return Optional.ofNullable(durationMs); } + public Optional getJobVersion() { + return Optional.ofNullable(jobVersion); + } + public boolean hasFacets() { return !facets.isEmpty(); } diff --git a/clients/java/src/test/java/marquez/client/MarquezClientTest.java b/clients/java/src/test/java/marquez/client/MarquezClientTest.java index 0434c982de..d730003981 100644 --- a/clients/java/src/test/java/marquez/client/MarquezClientTest.java +++ b/clients/java/src/test/java/marquez/client/MarquezClientTest.java @@ -87,6 +87,7 @@ import marquez.client.models.JobId; import marquez.client.models.JobMeta; import marquez.client.models.JobType; +import marquez.client.models.JobVersionId; import marquez.client.models.JsonGenerator; import marquez.client.models.LineageEvent; import marquez.client.models.Namespace; @@ -243,6 +244,8 @@ public class MarquezClientTest { private static final URL LOCATION = newLocation(); private static final JobType JOB_TYPE = newJobType(); private static final String JOB_DESCRIPTION = newDescription(); + private static final JobVersionId JOB_VERSION = + new JobVersionId(JOB_ID.getNamespace(), JOB_ID.getName(), CURRENT_VERSION); private static final Job JOB = new Job( JOB_ID, @@ -287,6 +290,7 @@ public class MarquezClientTest { ENDED_AT, DURATION, RUN_ARGS, + JOB_VERSION, null, INPUT_RUN_DATASET_FACETS, OUTPUT_RUN_DATASET_FACETS); @@ -302,6 +306,7 @@ public class MarquezClientTest { ENDED_AT, DURATION, RUN_ARGS, + JOB_VERSION, null, INPUT_RUN_DATASET_FACETS, OUTPUT_RUN_DATASET_FACETS); @@ -317,6 +322,7 @@ public class MarquezClientTest { ENDED_AT, DURATION, RUN_ARGS, + JOB_VERSION, null, INPUT_RUN_DATASET_FACETS, OUTPUT_RUN_DATASET_FACETS); @@ -332,6 +338,7 @@ public class MarquezClientTest { ENDED_AT, DURATION, RUN_ARGS, + JOB_VERSION, null, INPUT_RUN_DATASET_FACETS, OUTPUT_RUN_DATASET_FACETS); @@ -347,6 +354,7 @@ public class MarquezClientTest { ENDED_AT, DURATION, RUN_ARGS, + JOB_VERSION, null, INPUT_RUN_DATASET_FACETS, OUTPUT_RUN_DATASET_FACETS); @@ -377,6 +385,7 @@ public class MarquezClientTest { ENDED_AT, DURATION, RUN_ARGS, + JOB_VERSION, null, INPUT_RUN_DATASET_FACETS, OUTPUT_RUN_DATASET_FACETS), diff --git a/clients/java/src/test/java/marquez/client/models/JsonGenerator.java b/clients/java/src/test/java/marquez/client/models/JsonGenerator.java index 8a248c7cd5..bc97af9883 100644 --- a/clients/java/src/test/java/marquez/client/models/JsonGenerator.java +++ b/clients/java/src/test/java/marquez/client/models/JsonGenerator.java @@ -319,6 +319,18 @@ private static ObjectNode toObj(final Run run) { obj.put("startedAt", run.getStartedAt().map(ISO_INSTANT::format).orElse(null)); obj.put("endedAt", run.getEndedAt().map(ISO_INSTANT::format).orElse(null)); obj.put("durationMs", run.getDurationMs().orElse(null)); + obj.set( + "jobVersion", + run.getJobVersion() + .map( + jobVersionId -> { + final ObjectNode jobVersion = MAPPER.createObjectNode(); + jobVersion.put("namespace", jobVersionId.getNamespace()); + jobVersion.put("name", jobVersionId.getName()); + jobVersion.put("version", jobVersionId.getVersion().toString()); + return jobVersion; + }) + .orElse(null)); obj.putArray("inputDatasetVersions").addAll(inputDatasetVersions); obj.putArray("outputDatasetVersions").addAll(outputDatasetVersions); diff --git a/clients/java/src/test/java/marquez/client/models/ModelGenerator.java b/clients/java/src/test/java/marquez/client/models/ModelGenerator.java index 3bfa758374..aff03ae981 100644 --- a/clients/java/src/test/java/marquez/client/models/ModelGenerator.java +++ b/clients/java/src/test/java/marquez/client/models/ModelGenerator.java @@ -250,6 +250,7 @@ public static Run newRun() { newRunArgs(), null, null, + null, null); }