Expose version as AirbyteVersion instead of String in Configs iface (#7369)
This commit is contained in:
@@ -39,7 +39,7 @@ public class LoggingTrackingClient implements TrackingClient {
|
||||
@Override
|
||||
public void track(final UUID workspaceId, final String action, final Map<String, Object> metadata) {
|
||||
LOGGER.info("track. version: {}, userId: {}, action: {}, metadata: {}",
|
||||
identityFetcher.apply(workspaceId).getAirbyteVersion(),
|
||||
identityFetcher.apply(workspaceId).getAirbyteVersion().serialize(),
|
||||
identityFetcher.apply(workspaceId).getCustomerId(),
|
||||
action,
|
||||
metadata);
|
||||
|
||||
@@ -52,7 +52,7 @@ public class SegmentTrackingClient implements TrackingClient {
|
||||
final Map<String, Object> identityMetadata = new HashMap<>();
|
||||
|
||||
// deployment
|
||||
identityMetadata.put(AIRBYTE_VERSION_KEY, trackingIdentity.getAirbyteVersion());
|
||||
identityMetadata.put(AIRBYTE_VERSION_KEY, trackingIdentity.getAirbyteVersion().serialize());
|
||||
identityMetadata.put("deployment_mode", deployment.getDeploymentMode());
|
||||
identityMetadata.put("deployment_env", deployment.getDeploymentEnv());
|
||||
identityMetadata.put("deployment_id", deployment.getDeploymentId());
|
||||
@@ -88,7 +88,7 @@ public class SegmentTrackingClient implements TrackingClient {
|
||||
public void track(final UUID workspaceId, final String action, final Map<String, Object> metadata) {
|
||||
final Map<String, Object> mapCopy = new HashMap<>(metadata);
|
||||
final TrackingIdentity trackingIdentity = identityFetcher.apply(workspaceId);
|
||||
mapCopy.put(AIRBYTE_VERSION_KEY, trackingIdentity.getAirbyteVersion());
|
||||
mapCopy.put(AIRBYTE_VERSION_KEY, trackingIdentity.getAirbyteVersion().serialize());
|
||||
if (!metadata.isEmpty()) {
|
||||
trackingIdentity.getEmail().ifPresent(email -> mapCopy.put("email", email));
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
package io.airbyte.analytics;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import io.airbyte.config.Configs;
|
||||
import io.airbyte.config.StandardWorkspace;
|
||||
import io.airbyte.config.persistence.ConfigNotFoundException;
|
||||
@@ -38,7 +39,7 @@ public class TrackingClientSingleton {
|
||||
public static void initialize(final Configs.TrackingStrategy trackingStrategy,
|
||||
final Deployment deployment,
|
||||
final String airbyteRole,
|
||||
final String airbyteVersion,
|
||||
final AirbyteVersion airbyteVersion,
|
||||
final ConfigRepository configRepository) {
|
||||
initialize(createTrackingClient(
|
||||
trackingStrategy,
|
||||
@@ -53,7 +54,7 @@ public class TrackingClientSingleton {
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static TrackingIdentity getTrackingIdentity(final ConfigRepository configRepository, final String airbyteVersion, final UUID workspaceId) {
|
||||
static TrackingIdentity getTrackingIdentity(final ConfigRepository configRepository, final AirbyteVersion airbyteVersion, final UUID workspaceId) {
|
||||
try {
|
||||
final StandardWorkspace workspace = configRepository.getStandardWorkspace(workspaceId, true);
|
||||
String email = null;
|
||||
|
||||
@@ -4,13 +4,14 @@
|
||||
|
||||
package io.airbyte.analytics;
|
||||
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class TrackingIdentity {
|
||||
|
||||
private final String airbyteVersion;
|
||||
private final AirbyteVersion airbyteVersion;
|
||||
private final UUID customerId;
|
||||
private final String email;
|
||||
private final Boolean anonymousDataCollection;
|
||||
@@ -22,7 +23,7 @@ public class TrackingIdentity {
|
||||
}
|
||||
|
||||
public TrackingIdentity(
|
||||
final String airbyteVersion,
|
||||
final AirbyteVersion airbyteVersion,
|
||||
final UUID customerId,
|
||||
final String email,
|
||||
final Boolean anonymousDataCollection,
|
||||
@@ -36,7 +37,7 @@ public class TrackingIdentity {
|
||||
this.securityUpdates = securityUpdates;
|
||||
}
|
||||
|
||||
public String getAirbyteVersion() {
|
||||
public AirbyteVersion getAirbyteVersion() {
|
||||
return airbyteVersion;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableMap;
|
||||
import com.segment.analytics.Analytics;
|
||||
import com.segment.analytics.messages.IdentifyMessage;
|
||||
import com.segment.analytics.messages.TrackMessage;
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import io.airbyte.config.Configs;
|
||||
import io.airbyte.config.Configs.WorkerEnvironment;
|
||||
import java.util.Map;
|
||||
@@ -25,7 +26,7 @@ import org.mockito.ArgumentCaptor;
|
||||
|
||||
class SegmentTrackingClientTest {
|
||||
|
||||
private static final String AIRBYTE_VERSION = "dev";
|
||||
private static final AirbyteVersion AIRBYTE_VERSION = new AirbyteVersion("dev");
|
||||
private static final Deployment DEPLOYMENT = new Deployment(Configs.DeploymentMode.OSS, UUID.randomUUID(), WorkerEnvironment.DOCKER);
|
||||
private static final String EMAIL = "a@airbyte.io";
|
||||
private static final TrackingIdentity IDENTITY = new TrackingIdentity(AIRBYTE_VERSION, UUID.randomUUID(), EMAIL, false, false, true);
|
||||
@@ -59,7 +60,7 @@ class SegmentTrackingClientTest {
|
||||
.put("deployment_env", DEPLOYMENT.getDeploymentEnv())
|
||||
.put("deployment_mode", DEPLOYMENT.getDeploymentMode())
|
||||
.put("deployment_id", DEPLOYMENT.getDeploymentId())
|
||||
.put("airbyte_version", AIRBYTE_VERSION)
|
||||
.put("airbyte_version", AIRBYTE_VERSION.serialize())
|
||||
.put("email", IDENTITY.getEmail().get())
|
||||
.put("anonymized", IDENTITY.isAnonymousDataCollection())
|
||||
.put("subscribed_newsletter", IDENTITY.isNews())
|
||||
@@ -85,7 +86,7 @@ class SegmentTrackingClientTest {
|
||||
.put("deployment_env", DEPLOYMENT.getDeploymentEnv())
|
||||
.put("deployment_mode", DEPLOYMENT.getDeploymentMode())
|
||||
.put("deployment_id", DEPLOYMENT.getDeploymentId())
|
||||
.put("airbyte_version", AIRBYTE_VERSION)
|
||||
.put("airbyte_version", AIRBYTE_VERSION.serialize())
|
||||
.put("email", IDENTITY.getEmail().get())
|
||||
.put("anonymized", IDENTITY.isAnonymousDataCollection())
|
||||
.put("subscribed_newsletter", IDENTITY.isNews())
|
||||
@@ -99,7 +100,7 @@ class SegmentTrackingClientTest {
|
||||
@Test
|
||||
void testTrack() {
|
||||
final ArgumentCaptor<TrackMessage.Builder> mockBuilder = ArgumentCaptor.forClass(TrackMessage.Builder.class);
|
||||
final ImmutableMap<String, Object> metadata = ImmutableMap.of("airbyte_version", AIRBYTE_VERSION);
|
||||
final ImmutableMap<String, Object> metadata = ImmutableMap.of("airbyte_version", AIRBYTE_VERSION.serialize());
|
||||
|
||||
segmentTrackingClient.track(WORKSPACE_ID, "jump");
|
||||
|
||||
@@ -116,7 +117,7 @@ class SegmentTrackingClientTest {
|
||||
final ImmutableMap<String, Object> metadata = ImmutableMap.of(
|
||||
"height", "80 meters",
|
||||
"email", EMAIL,
|
||||
"airbyte_version", AIRBYTE_VERSION);
|
||||
"airbyte_version", AIRBYTE_VERSION.serialize());
|
||||
|
||||
segmentTrackingClient.track(WORKSPACE_ID, "jump", metadata);
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import io.airbyte.config.Configs;
|
||||
import io.airbyte.config.Configs.WorkerEnvironment;
|
||||
import io.airbyte.config.StandardWorkspace;
|
||||
@@ -24,7 +25,7 @@ import org.junit.jupiter.api.Test;
|
||||
class TrackingClientSingletonTest {
|
||||
|
||||
private static final UUID WORKSPACE_ID = UUID.randomUUID();
|
||||
private static final String AIRBYTE_VERSION = "dev";
|
||||
private static final AirbyteVersion AIRBYTE_VERSION = new AirbyteVersion("dev");
|
||||
private static final String EMAIL = "a@airbyte.io";
|
||||
private static final Deployment DEPLOYMENT = new Deployment(Configs.DeploymentMode.OSS, UUID.randomUUID(), WorkerEnvironment.DOCKER);
|
||||
private static final TrackingIdentity IDENTITY = new TrackingIdentity(AIRBYTE_VERSION, UUID.randomUUID(), EMAIL, false, false, true);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
package io.airbyte.commons.version;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* The AirbyteVersion identifies the version of the database used internally by Airbyte services.
|
||||
@@ -166,4 +167,22 @@ public class AirbyteVersion {
|
||||
return versionWithoutPatch(new AirbyteVersion(airbyteVersion));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
final AirbyteVersion that = (AirbyteVersion) o;
|
||||
return Objects.equals(version, that.version) && Objects.equals(major, that.major) && Objects.equals(minor, that.minor)
|
||||
&& Objects.equals(patch, that.patch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(version, major, minor, patch);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package io.airbyte.config;
|
||||
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -13,7 +14,7 @@ public interface Configs {
|
||||
|
||||
String getAirbyteRole();
|
||||
|
||||
String getAirbyteVersion();
|
||||
AirbyteVersion getAirbyteVersion();
|
||||
|
||||
String getAirbyteApiHost();
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ package io.airbyte.config;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.base.Strings;
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import io.airbyte.config.helpers.LogClientSingleton;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Arrays;
|
||||
@@ -117,8 +118,8 @@ public class EnvConfigs implements Configs {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAirbyteVersion() {
|
||||
return getEnsureEnv(AIRBYTE_VERSION);
|
||||
public AirbyteVersion getAirbyteVersion() {
|
||||
return new AirbyteVersion(getEnsureEnv(AIRBYTE_VERSION));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ package io.airbyte.config;
|
||||
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -47,7 +48,7 @@ class EnvConfigsTest {
|
||||
Assertions.assertThrows(IllegalArgumentException.class, () -> config.getAirbyteVersion());
|
||||
|
||||
when(function.apply(EnvConfigs.AIRBYTE_VERSION)).thenReturn("dev");
|
||||
Assertions.assertEquals("dev", config.getAirbyteVersion());
|
||||
Assertions.assertEquals(new AirbyteVersion("dev"), config.getAirbyteVersion());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -221,7 +221,7 @@ public class SchedulerApp {
|
||||
workspaceRoot,
|
||||
jobPersistence);
|
||||
AirbyteVersion.assertIsCompatible(
|
||||
new AirbyteVersion(configs.getAirbyteVersion()),
|
||||
configs.getAirbyteVersion(),
|
||||
jobPersistence.getVersion().map(AirbyteVersion::new).orElseThrow());
|
||||
|
||||
TrackingClientSingleton.initialize(
|
||||
|
||||
@@ -75,11 +75,11 @@ public class ServerApp implements ServerRunnable {
|
||||
* wouldn't run
|
||||
*/
|
||||
private static final AirbyteVersion KUBE_SUPPORT_FOR_AUTOMATIC_MIGRATION = new AirbyteVersion("0.26.5-alpha");
|
||||
private final String airbyteVersion;
|
||||
private final AirbyteVersion airbyteVersion;
|
||||
private final Set<Class<?>> customComponentClasses;
|
||||
private final Set<Object> customComponents;
|
||||
|
||||
public ServerApp(final String airbyteVersion,
|
||||
public ServerApp(final AirbyteVersion airbyteVersion,
|
||||
final Set<Class<?>> customComponentClasses,
|
||||
final Set<Object> customComponents) {
|
||||
this.airbyteVersion = airbyteVersion;
|
||||
@@ -120,7 +120,7 @@ public class ServerApp implements ServerRunnable {
|
||||
|
||||
server.start();
|
||||
final String banner = MoreResources.readResource("banner/banner.txt");
|
||||
LOGGER.info(banner + String.format("Version: %s\n", airbyteVersion));
|
||||
LOGGER.info(banner + String.format("Version: %s\n", airbyteVersion.serialize()));
|
||||
server.join();
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ public class ServerApp implements ServerRunnable {
|
||||
// if no workspace exists, we create one so the user starts out with a place to add configuration.
|
||||
createWorkspaceIfNoneExists(configRepository);
|
||||
|
||||
final AirbyteVersion airbyteVersion = new AirbyteVersion(configs.getAirbyteVersion());
|
||||
final AirbyteVersion airbyteVersion = configs.getAirbyteVersion();
|
||||
if (jobPersistence.getVersion().isEmpty()) {
|
||||
LOGGER.info(String.format("Setting Database version to %s...", airbyteVersion));
|
||||
jobPersistence.setVersion(airbyteVersion.serialize());
|
||||
|
||||
@@ -81,7 +81,6 @@ import io.airbyte.api.model.WorkspaceRead;
|
||||
import io.airbyte.api.model.WorkspaceReadList;
|
||||
import io.airbyte.api.model.WorkspaceUpdate;
|
||||
import io.airbyte.commons.io.FileTtlManager;
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import io.airbyte.config.Configs;
|
||||
import io.airbyte.config.persistence.ConfigNotFoundException;
|
||||
import io.airbyte.config.persistence.ConfigPersistence;
|
||||
@@ -193,7 +192,7 @@ public class ConfigurationApi implements io.airbyte.api.V1Api {
|
||||
webBackendDestinationsHandler = new WebBackendDestinationsHandler(destinationHandler, configRepository, trackingClient);
|
||||
healthCheckHandler = new HealthCheckHandler(configRepository);
|
||||
archiveHandler = new ArchiveHandler(
|
||||
new AirbyteVersion(configs.getAirbyteVersion()),
|
||||
configs.getAirbyteVersion(),
|
||||
configRepository,
|
||||
jobPersistence,
|
||||
seed,
|
||||
|
||||
@@ -10,6 +10,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
import io.airbyte.analytics.TrackingClient;
|
||||
import io.airbyte.commons.io.FileTtlManager;
|
||||
import io.airbyte.commons.version.AirbyteVersion;
|
||||
import io.airbyte.config.Configs;
|
||||
import io.airbyte.config.persistence.ConfigPersistence;
|
||||
import io.airbyte.config.persistence.ConfigRepository;
|
||||
@@ -25,7 +26,7 @@ public class ConfigurationApiTest {
|
||||
@Test
|
||||
void testImportDefinitions() {
|
||||
final Configs configs = mock(Configs.class);
|
||||
when(configs.getAirbyteVersion()).thenReturn("0.1.0-alpha");
|
||||
when(configs.getAirbyteVersion()).thenReturn(new AirbyteVersion("0.1.0-alpha"));
|
||||
when(configs.getWebappUrl()).thenReturn("http://localhost");
|
||||
|
||||
final ConfigurationApi configurationApi = new ConfigurationApi(
|
||||
|
||||
Reference in New Issue
Block a user