From f8012804f483b622ca3b1e950066f0e2f9410d35 Mon Sep 17 00:00:00 2001 From: Cole Snodgrass Date: Mon, 12 Dec 2022 09:36:40 -0800 Subject: [PATCH] convert SchedulerApiController to Micronaut (#20337) * wip; SchedulerApiController * remove @Named * remove @Singleton * add back todo message --- .../features/EnvVariableFeatureFlags.java | 6 ++-- airbyte-proxy/nginx-auth.conf.template | 4 +-- airbyte-proxy/nginx-no-auth.conf.template | 4 +-- .../java/io/airbyte/server/ServerFactory.java | 13 ++------- .../server/apis/SchedulerApiController.java | 12 ++++++-- .../apis/binders/SchedulerApiBinder.java | 21 -------------- .../apis/factories/SchedulerApiFactory.java | 29 ------------------- .../server/handlers/SchedulerHandler.java | 2 -- 8 files changed, 20 insertions(+), 71 deletions(-) delete mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java delete mode 100644 airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java diff --git a/airbyte-commons/src/main/java/io/airbyte/commons/features/EnvVariableFeatureFlags.java b/airbyte-commons/src/main/java/io/airbyte/commons/features/EnvVariableFeatureFlags.java index a9926b8ac6a62..ab21bc3a997e8 100644 --- a/airbyte-commons/src/main/java/io/airbyte/commons/features/EnvVariableFeatureFlags.java +++ b/airbyte-commons/src/main/java/io/airbyte/commons/features/EnvVariableFeatureFlags.java @@ -5,11 +5,13 @@ package io.airbyte.commons.features; import java.util.function.Function; -import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -@Slf4j public class EnvVariableFeatureFlags implements FeatureFlags { + private static final Logger log = LoggerFactory.getLogger(EnvVariableFeatureFlags.class); + public static final String USE_STREAM_CAPABLE_STATE = "USE_STREAM_CAPABLE_STATE"; public static final String AUTO_DETECT_SCHEMA = "AUTO_DETECT_SCHEMA"; public static final String LOG_CONNECTOR_MESSAGES = "LOG_CONNECTOR_MESSAGES"; diff --git a/airbyte-proxy/nginx-auth.conf.template b/airbyte-proxy/nginx-auth.conf.template index 9193023649042..b00916d37f701 100644 --- a/airbyte-proxy/nginx-auth.conf.template +++ b/airbyte-proxy/nginx-auth.conf.template @@ -43,7 +43,7 @@ http { } } - location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations|sources|source_definitions|state)/.* { + location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations|scheduler|sources|source_definitions|state)/.* { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -104,7 +104,7 @@ http { } location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations - |source_definitions|sources|state)/.* { + |scheduler|source_definitions|sources|state)/.* { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/airbyte-proxy/nginx-no-auth.conf.template b/airbyte-proxy/nginx-no-auth.conf.template index 761a43ca33b47..841333391ae1b 100644 --- a/airbyte-proxy/nginx-no-auth.conf.template +++ b/airbyte-proxy/nginx-no-auth.conf.template @@ -25,7 +25,7 @@ http { proxy_pass "${PROXY_PASS_MICRONAUT_API}"; } - location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations|sources|source_definitions|state)/.* { + location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations|scheduler|sources|source_definitions|state)/.* { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -58,7 +58,7 @@ http { proxy_pass "${PROXY_PASS_MICRONAUT_API}"; } - location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations|sources|source_definitions|state)/.* { + location ~ ^/api/v1/(connections|destinations|destination_definitions|destination_definition_specifications|destination_oauths|operations|scheduler|sources|source_definitions|state)/.* { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java index 59be104829022..1b8c6e035f02b 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java +++ b/airbyte-server/src/main/java/io/airbyte/server/ServerFactory.java @@ -13,13 +13,11 @@ import io.airbyte.config.persistence.SecretsRepositoryWriter; import io.airbyte.db.Database; import io.airbyte.persistence.job.JobPersistence; -import io.airbyte.server.apis.DestinationDefinitionSpecificationApiController; import io.airbyte.server.apis.JobsApiController; import io.airbyte.server.apis.LogsApiController; import io.airbyte.server.apis.NotificationsApiController; import io.airbyte.server.apis.OpenapiApiController; import io.airbyte.server.apis.OperationApiController; -import io.airbyte.server.apis.SchedulerApiController; import io.airbyte.server.apis.SourceApiController; import io.airbyte.server.apis.SourceDefinitionApiController; import io.airbyte.server.apis.SourceDefinitionSpecificationApiController; @@ -30,7 +28,6 @@ import io.airbyte.server.apis.binders.JobsApiBinder; import io.airbyte.server.apis.binders.LogsApiBinder; import io.airbyte.server.apis.binders.NotificationApiBinder; -import io.airbyte.server.apis.binders.SchedulerApiBinder; import io.airbyte.server.apis.binders.SourceDefinitionSpecificationApiBinder; import io.airbyte.server.apis.binders.SourceOauthApiBinder; import io.airbyte.server.apis.binders.WebBackendApiBinder; @@ -38,7 +35,6 @@ import io.airbyte.server.apis.factories.JobsApiFactory; import io.airbyte.server.apis.factories.LogsApiFactory; import io.airbyte.server.apis.factories.NotificationsApiFactory; -import io.airbyte.server.apis.factories.SchedulerApiFactory; import io.airbyte.server.apis.factories.SourceDefinitionSpecificationApiFactory; import io.airbyte.server.apis.factories.SourceOauthApiFactory; import io.airbyte.server.apis.factories.WebBackendApiFactory; @@ -63,10 +59,8 @@ import io.airbyte.server.scheduler.SynchronousSchedulerClient; import java.net.http.HttpClient; import java.nio.file.Path; -import java.util.Map; import java.util.Set; import org.flywaydb.core.Flyway; -import org.slf4j.MDC; public interface ServerFactory { @@ -138,7 +132,6 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul final WebBackendConnectionsHandler webBackendConnectionsHandler, final WebBackendGeographiesHandler webBackendGeographiesHandler, final WebBackendCheckUpdatesHandler webBackendCheckUpdatesHandler) { - final Map mdc = MDC.getCopyOfContextMap(); SourceOauthApiFactory.setValues(oAuthHandler); @@ -148,8 +141,6 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul NotificationsApiFactory.setValues(workspacesHandler); - SchedulerApiFactory.setValues(schedulerHandler); - SourceDefinitionSpecificationApiFactory.setValues(schedulerHandler); WebBackendApiFactory.setValues(webBackendConnectionsHandler, webBackendGeographiesHandler, webBackendCheckUpdatesHandler); @@ -163,7 +154,8 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul NotificationsApiController.class, OpenapiApiController.class, OperationApiController.class, - SchedulerApiController.class, + SourceApiController.class, + SourceDefinitionApiController.class, SourceDefinitionSpecificationApiController.class, SourceOauthApiController.class, StateApiController.class, @@ -174,7 +166,6 @@ public ServerRunnable create(final SynchronousSchedulerClient synchronousSchedul new JobsApiBinder(), new LogsApiBinder(), new NotificationApiBinder(), - new SchedulerApiBinder(), new SourceDefinitionSpecificationApiBinder(), new SourceOauthApiBinder(), new WebBackendApiBinder(), diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java index addc445d3c0fa..009bec3d816b1 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SchedulerApiController.java @@ -10,23 +10,31 @@ import io.airbyte.api.model.generated.SourceCoreConfig; import io.airbyte.api.model.generated.SourceDiscoverSchemaRead; import io.airbyte.server.handlers.SchedulerHandler; -import lombok.AllArgsConstructor; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Post; -@AllArgsConstructor +@Controller("/api/v1/scheduler") public class SchedulerApiController implements SchedulerApi { private final SchedulerHandler schedulerHandler; + public SchedulerApiController(final SchedulerHandler schedulerHandler) { + this.schedulerHandler = schedulerHandler; + } + + @Post("/destinations/check_connection") @Override public CheckConnectionRead executeDestinationCheckConnection(final DestinationCoreConfig destinationCoreConfig) { return ApiHelper.execute(() -> schedulerHandler.checkDestinationConnectionFromDestinationCreate(destinationCoreConfig)); } + @Post("/sources/check_connection") @Override public CheckConnectionRead executeSourceCheckConnection(final SourceCoreConfig sourceCoreConfig) { return ApiHelper.execute(() -> schedulerHandler.checkSourceConnectionFromSourceCreate(sourceCoreConfig)); } + @Post("/sources/discover_schema") @Override public SourceDiscoverSchemaRead executeSourceDiscoverSchema(final SourceCoreConfig sourceCoreConfig) { return ApiHelper.execute(() -> schedulerHandler.discoverSchemaForSourceFromSourceCreate(sourceCoreConfig)); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java b/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java deleted file mode 100644 index 64a904193b908..0000000000000 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/binders/SchedulerApiBinder.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server.apis.binders; - -import io.airbyte.server.apis.SchedulerApiController; -import io.airbyte.server.apis.factories.SchedulerApiFactory; -import org.glassfish.hk2.utilities.binding.AbstractBinder; -import org.glassfish.jersey.process.internal.RequestScoped; - -public class SchedulerApiBinder extends AbstractBinder { - - @Override - protected void configure() { - bindFactory(SchedulerApiFactory.class) - .to(SchedulerApiController.class) - .in(RequestScoped.class); - } - -} diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java b/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java deleted file mode 100644 index 7ba4cf9b9ff20..0000000000000 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/factories/SchedulerApiFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2022 Airbyte, Inc., all rights reserved. - */ - -package io.airbyte.server.apis.factories; - -import io.airbyte.server.apis.SchedulerApiController; -import io.airbyte.server.handlers.SchedulerHandler; -import org.glassfish.hk2.api.Factory; - -public class SchedulerApiFactory implements Factory { - - private static SchedulerHandler schedulerHandler; - - public static void setValues(final SchedulerHandler schedulerHandler) { - SchedulerApiFactory.schedulerHandler = schedulerHandler; - } - - @Override - public SchedulerApiController provide() { - return new SchedulerApiController(SchedulerApiFactory.schedulerHandler); - } - - @Override - public void dispose(final SchedulerApiController instance) { - /* no op */ - } - -} diff --git a/airbyte-server/src/main/java/io/airbyte/server/handlers/SchedulerHandler.java b/airbyte-server/src/main/java/io/airbyte/server/handlers/SchedulerHandler.java index d9abc1e0b3ce1..490208d1c7258 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/handlers/SchedulerHandler.java +++ b/airbyte-server/src/main/java/io/airbyte/server/handlers/SchedulerHandler.java @@ -82,9 +82,7 @@ import java.util.Optional; import java.util.UUID; import javax.validation.constraints.NotNull; -import lombok.extern.slf4j.Slf4j; -@Slf4j @Singleton public class SchedulerHandler {