Skip to content

Commit

Permalink
wip update version info format
Browse files Browse the repository at this point in the history
Signed-off-by: Max Thonagel <12283268+thoniTUB@users.noreply.github.com>
  • Loading branch information
thoniTUB committed Apr 8, 2024
1 parent be7e405 commit 8b7a72c
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,22 @@

import java.net.URL;
import java.time.LocalDate;
import java.util.Map;
import java.util.List;

import com.bakdata.conquery.models.config.FrontendConfig;
import com.bakdata.conquery.models.config.IdColumnConfig;

/**
* API Response for the dynamic configuration of the frontend
*
* @param version backend version
* @param formBackendVersions mapping of form backend ids to their versions (version can be null)
* @param versions mapping of backend and form backend ids to their versions (version can be null)
* @param currency currency representation
* @param queryUpload identifier specific column configuration for the query upload
* @param manualUrl url to a user manual
* @param contactEmail typical a mailto-url
*/
public record FrontendConfiguration(
String version,

Map<String, String> formBackendVersions,
List<VersionContainer> versions,
FrontendConfig.CurrencyConfig currency,
IdColumnConfig queryUpload,
URL manualUrl,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.bakdata.conquery.apiv1.frontend;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.NonNull;

public record VersionContainer(
@NonNull String name,
String version,
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
Date buildTime
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,6 @@
import java.util.UUID;
import java.util.function.Function;

import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.client.Invocation;
import jakarta.ws.rs.client.WebTarget;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;

import com.bakdata.conquery.apiv1.forms.ExternalForm;
import com.bakdata.conquery.models.auth.entities.User;
import com.bakdata.conquery.models.auth.permissions.Ability;
Expand All @@ -24,6 +16,13 @@
import com.codahale.metrics.health.HealthCheck;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.dropwizard.health.check.http.HttpHealthCheck;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.client.Invocation;
import jakarta.ws.rs.client.WebTarget;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;

@Slf4j
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.bakdata.conquery.io.external.form;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

@Data
public class FormBackendVersion {
private String version;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
private Date buildTime;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,8 @@
import java.util.HashSet;
import java.util.Set;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.ws.rs.client.Client;

import com.bakdata.conquery.apiv1.forms.ExternalForm;
import com.bakdata.conquery.apiv1.frontend.VersionContainer;
import com.bakdata.conquery.commands.ManagerNode;
import com.bakdata.conquery.io.cps.CPSType;
import com.bakdata.conquery.io.cps.CPSTypeIdResolver;
Expand All @@ -33,6 +28,11 @@
import com.google.common.collect.ImmutableCollection;
import io.dropwizard.client.JerseyClientBuilder;
import io.dropwizard.jersey.jackson.JacksonMessageBodyProvider;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.ws.rs.client.Client;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -113,7 +113,7 @@ private void updateVersion(ExternalFormBackendApi externalApi) {

try {
final String version = externalApi.getVersion();
final String oldVersion = VersionInfo.INSTANCE.setFormBackendVersion(getId(), version);
final VersionContainer oldVersion = VersionInfo.INSTANCE.setFormBackendVersion(new VersionContainer(getId(), version, null));
if (!version.equals(oldVersion)) {
log.info("Form Backend '{}' version update: {} -> {}", getId(), oldVersion, version);
}
Expand All @@ -122,8 +122,8 @@ private void updateVersion(ExternalFormBackendApi externalApi) {
log.warn("Unable to retrieve version from form backend '{}'. Enable trace logging for more info", getId(), (Exception) (log.isTraceEnabled()
? e
: null));
// Set place holder
VersionInfo.INSTANCE.setFormBackendVersion(getId(), "no-version-available");

VersionInfo.INSTANCE.setFormBackendVersion(new VersionContainer(getId(), null, null));
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ public FrontendConfiguration getFrontendConfig() {
.toList());

final FrontendConfig frontendConfig = config.getFrontend();


return new FrontendConfiguration(
VersionInfo.INSTANCE.getProjectVersion(),
VersionInfo.INSTANCE.getFormBackendVersions(),
VersionInfo.INSTANCE.getVersions(),
frontendConfig.getCurrency(),
idColumns,
frontendConfig.getManualUrl(),
Expand Down
26 changes: 21 additions & 5 deletions backend/src/main/java/com/bakdata/conquery/util/VersionInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@

import java.io.BufferedReader;
import java.time.ZonedDateTime;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;

import com.bakdata.conquery.apiv1.frontend.VersionContainer;
import com.github.powerlibraries.io.In;
import lombok.Getter;
import lombok.ToString;
Expand All @@ -21,8 +24,12 @@ public class VersionInfo {
private ZonedDateTime buildTime;
private String projectVersion;

// Form backend id -> version
private final Map<String, String> formBackendVersions = new HashMap<>();
/**
* Form backend id -> version
*
* @implNote using {@link TreeMap} to have a stable key order
*/
private final Map<String, VersionContainer> formBackendVersions = new TreeMap<>();

private VersionInfo() {
try {
Expand All @@ -45,7 +52,16 @@ private VersionInfo() {
}
}

public String setFormBackendVersion(String formBackendId, String version) {
return formBackendVersions.put(formBackendId, version);
public List<VersionContainer> getVersions() {
List<VersionContainer> versions = new ArrayList<>();

versions.add(new VersionContainer("Backend", projectVersion, null));
versions.addAll(formBackendVersions.values());

return versions;
}

public VersionContainer setFormBackendVersion(VersionContainer version) {
return formBackendVersions.put(version.name(), version);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,11 @@
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriBuilder;

import com.bakdata.conquery.apiv1.execution.FullExecutionStatus;
import com.bakdata.conquery.apiv1.execution.ResultAsset;
import com.bakdata.conquery.apiv1.frontend.FrontendConfiguration;
import com.bakdata.conquery.apiv1.frontend.VersionContainer;
import com.bakdata.conquery.integration.common.IntegrationUtils;
import com.bakdata.conquery.io.result.ExternalResult;
import com.bakdata.conquery.models.auth.entities.User;
Expand All @@ -34,6 +31,8 @@
import com.bakdata.conquery.resources.hierarchies.HierarchyHelper;
import com.bakdata.conquery.util.support.StandaloneSupport;
import com.bakdata.conquery.util.support.TestConquery;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriBuilder;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -79,9 +78,9 @@ public void execute(String name, TestConquery testConquery) throws Exception {
frontendConfiguration =
support.getClient().target(frontendConfigURI).request(MediaType.APPLICATION_JSON_TYPE).get().readEntity(FrontendConfiguration.class);

assertThat(frontendConfiguration.formBackendVersions())
assertThat(frontendConfiguration.versions())
.describedAs("Checking health of form backend")
.containsExactlyEntriesOf(Map.of(FORM_BACKEND_ID, "3.2.1-ge966c285")); // example value from OpenAPI Spec
.contains(new VersionContainer(FORM_BACKEND_ID, "3.2.1-ge966c285", null)); // example value from OpenAPI Spec

log.info("Send an external form");
final User testUser = support.getTestUser();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import static org.assertj.core.api.Assertions.assertThat;

import java.io.IOException;
import java.time.Instant;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.BitSet;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
Expand All @@ -29,6 +31,7 @@
import com.bakdata.conquery.apiv1.query.concept.specific.CQOr;
import com.bakdata.conquery.io.AbstractSerializationTest;
import com.bakdata.conquery.io.cps.CPSType;
import com.bakdata.conquery.io.external.form.FormBackendVersion;
import com.bakdata.conquery.io.jackson.Injectable;
import com.bakdata.conquery.io.jackson.MutableInjectableValues;
import com.bakdata.conquery.io.jackson.serializer.SerializationTestUtil;
Expand Down Expand Up @@ -833,4 +836,15 @@ public void arrayObject2Int() throws JSONException, IOException {

}

@Test
public void formBackendVersion() throws JSONException, IOException {
final FormBackendVersion version = new FormBackendVersion();
version.setVersion("3.45.45-g85ut85u43t8");
version.setBuildTime(Date.from(Instant.ofEpochSecond(1712554025))); //new Date(2024, Calendar.APRIL, 8, 21, 17, 44));

SerializationTestUtil.forType(FormBackendVersion.class)
.objectMappers(getApiMapper(), getManagerInternalMapper())
.test(version);
}

}

0 comments on commit 8b7a72c

Please sign in to comment.