Skip to content

Commit

Permalink
Allow dev-tagged connectors to always be updateable (#8219)
Browse files Browse the repository at this point in the history
* allow dev-tagged images to be always updateable

* update comment

* move dev image tag to a separate constants file

* move dev tag image name to constant

* remove relative import path

* update seed spec
  • Loading branch information
lmossman authored Dec 3, 2021
1 parent 64bd0a6 commit 298c8b2
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1417,7 +1417,7 @@
oauthFlowInitParameters: []
oauthFlowOutputParameters:
- - "access_token"
- dockerImage: "airbyte/source-facebook-pages:0.1.4"
- dockerImage: "airbyte/source-facebook-pages:0.1.5"
spec:
documentationUrl: "https://docs.airbyte.io/integrations/sources/facebook-pages"
connectionSpecification:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Copyright (c) 2021 Airbyte, Inc., all rights reserved.
*/

package io.airbyte.server;

public class ServerConstants {

public static final String DEV_IMAGE_TAG = "dev";

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

package io.airbyte.server.handlers;

import static io.airbyte.server.ServerConstants.DEV_IMAGE_TAG;

import com.google.common.annotations.VisibleForTesting;
import io.airbyte.api.model.DestinationDefinitionCreate;
import io.airbyte.api.model.DestinationDefinitionIdRequestBody;
Expand Down Expand Up @@ -127,8 +129,11 @@ public DestinationDefinitionRead updateDestinationDefinition(final DestinationDe
final StandardDestinationDefinition currentDestination = configRepository
.getStandardDestinationDefinition(destinationDefinitionUpdate.getDestinationDefinitionId());

final boolean imageTagHasChanged = !currentDestination.getDockerImageTag().equals(destinationDefinitionUpdate.getDockerImageTag());
final ConnectorSpecification spec = imageTagHasChanged
// specs are re-fetched from the container if the image tag has changed, or if the tag is "dev",
// to allow for easier iteration of dev images
final boolean specNeedsUpdate = !currentDestination.getDockerImageTag().equals(destinationDefinitionUpdate.getDockerImageTag())
|| destinationDefinitionUpdate.getDockerImageTag().equals(DEV_IMAGE_TAG);
final ConnectorSpecification spec = specNeedsUpdate
? getSpecForImage(currentDestination.getDockerRepository(), destinationDefinitionUpdate.getDockerImageTag())
: currentDestination.getSpec();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

package io.airbyte.server.handlers;

import static io.airbyte.server.ServerConstants.DEV_IMAGE_TAG;

import com.google.common.annotations.VisibleForTesting;
import io.airbyte.api.model.SourceDefinitionCreate;
import io.airbyte.api.model.SourceDefinitionIdRequestBody;
Expand Down Expand Up @@ -121,8 +123,11 @@ public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate
final StandardSourceDefinition currentSourceDefinition =
configRepository.getStandardSourceDefinition(sourceDefinitionUpdate.getSourceDefinitionId());

final boolean imageTagHasChanged = !currentSourceDefinition.getDockerImageTag().equals(sourceDefinitionUpdate.getDockerImageTag());
final ConnectorSpecification spec = imageTagHasChanged
// specs are re-fetched from the container if the image tag has changed, or if the tag is "dev",
// to allow for easier iteration of dev images
final boolean specNeedsUpdate = !currentSourceDefinition.getDockerImageTag().equals(sourceDefinitionUpdate.getDockerImageTag())
|| sourceDefinitionUpdate.getDockerImageTag().equals(DEV_IMAGE_TAG);
final ConnectorSpecification spec = specNeedsUpdate
? getSpecForImage(currentSourceDefinition.getDockerRepository(), sourceDefinitionUpdate.getDockerImageTag())
: currentSourceDefinition.getSpec();

Expand Down
3 changes: 3 additions & 0 deletions airbyte-webapp/src/constants/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export abstract class Constants {
static readonly DEV_IMAGE_TAG: string = "dev";
}
6 changes: 4 additions & 2 deletions airbyte-webapp/src/core/domain/connector/connector.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { isSourceDefinition, isSourceDefinitionSpecification } from "./source";
import { ConnectorDefinition, ConnectorDefinitionSpecification } from "./types";
import { Constants } from "constants/constants";

export class Connector {
static id(connector: ConnectorDefinition): string {
Expand All @@ -14,8 +15,9 @@ export class Connector {

static hasNewerVersion(connector: ConnectorDefinition): boolean {
return (
!Connector.isDeprecated(connector) &&
connector.latestDockerImageTag !== connector.dockerImageTag
(!Connector.isDeprecated(connector) &&
connector.latestDockerImageTag !== connector.dockerImageTag) ||
connector.dockerImageTag === Constants.DEV_IMAGE_TAG
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { FormattedMessage, useIntl } from "react-intl";

import { Input, LoadingButton } from "components";
import { FormContent } from "./PageComponents";
import { Constants } from "constants/constants";

type IProps = {
version: string;
Expand Down Expand Up @@ -85,6 +86,9 @@ const VersionCell: React.FC<IProps> = ({
return null;
};

const isConnectorUpdateable =
currentVersion !== version || currentVersion === Constants.DEV_IMAGE_TAG;

return (
<FormContent>
<Formik
Expand All @@ -111,7 +115,7 @@ const VersionCell: React.FC<IProps> = ({
<LoadingButton
isLoading={isSubmitting}
type="submit"
disabled={(isSubmitting || !dirty) && currentVersion === version}
disabled={(isSubmitting || !dirty) && !isConnectorUpdateable}
>
<FormattedMessage id="form.change" />
</LoadingButton>
Expand Down

0 comments on commit 298c8b2

Please sign in to comment.