Skip to content

Commit 5d0478f

Browse files
committed
More granular validation for snowflake metadata
1 parent 83cde9b commit 5d0478f

File tree

4 files changed

+43
-34
lines changed

4 files changed

+43
-34
lines changed

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/AbstractSnowflakeConnector.java

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import java.util.List;
4343
import java.util.Properties;
4444
import javax.annotation.Nonnull;
45-
import javax.annotation.Nullable;
4645
import javax.sql.DataSource;
4746
import org.apache.commons.lang3.StringUtils;
4847
import org.springframework.jdbc.core.JdbcTemplate;
@@ -102,35 +101,14 @@ public Handle open(@Nonnull ConnectorArguments arguments)
102101

103102
@Override
104103
public final void validate(@Nonnull ConnectorArguments arguments) {
105-
ArrayList<String> messages = new ArrayList<>();
106-
MetadataDumperUsageException exception = null;
107-
108104
if (arguments.isPasswordFlagProvided() && arguments.isPrivateKeyFileProvided()) {
109105
String inconsistentAuth =
110106
"Private key authentication method can't be used together with user password. "
111107
+ "If the private key file is encrypted, please use --"
112108
+ ConnectorArguments.OPT_PRIVATE_KEY_PASSWORD
113109
+ " to specify the key password.";
114-
messages.add(inconsistentAuth);
115-
exception = new MetadataDumperUsageException(inconsistentAuth, messages);
116-
}
117-
118-
boolean hasDatabases = !arguments.getDatabases().isEmpty();
119-
if (arguments.isAssessment()
120-
&& hasDatabases
121-
&& arguments.getConnectorName().toLowerCase().equals("snowflake")) {
122-
String unsupportedFilter =
123-
"Trying to filter by database with the --"
124-
+ ConnectorArguments.OPT_ASSESSMENT
125-
+ " flag. This is unsupported in Assessment. Remove either the --"
126-
+ ConnectorArguments.OPT_ASSESSMENT
127-
+ " or the --"
128-
+ ConnectorArguments.OPT_DATABASE
129-
+ " flag.";
130-
messages.add(unsupportedFilter);
131-
exception = new MetadataDumperUsageException(unsupportedFilter, messages);
110+
throw new MetadataDumperUsageException(inconsistentAuth);
132111
}
133-
removeDuplicateMessageAndThrow(exception);
134112
validateForConnector(arguments);
135113
}
136114

@@ -143,15 +121,6 @@ public final void validate(@Nonnull ConnectorArguments arguments) {
143121
*/
144122
protected abstract void validateForConnector(@Nonnull ConnectorArguments arguments);
145123

146-
private static void removeDuplicateMessageAndThrow(
147-
@Nullable MetadataDumperUsageException exception) {
148-
if (exception != null) {
149-
List<String> messages = exception.getMessages();
150-
messages.remove(messages.size() - 1);
151-
throw exception;
152-
}
153-
}
154-
155124
private DataSource createUserPasswordDataSource(@Nonnull ConnectorArguments arguments, String url)
156125
throws SQLException {
157126
Driver driver =

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeAccountUsageMetadataConnector.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,20 @@
1616
*/
1717
package com.google.edwmigration.dumper.application.dumper.connector.snowflake;
1818

19+
import static com.google.edwmigration.dumper.application.dumper.ConnectorArguments.OPT_ASSESSMENT;
1920
import static com.google.edwmigration.dumper.application.dumper.connector.snowflake.SnowflakeInput.USAGE_ONLY_SOURCE;
2021

2122
import com.google.auto.service.AutoService;
23+
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
24+
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2225
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
2326
import java.io.IOException;
2427
import javax.annotation.Nonnull;
28+
import javax.annotation.ParametersAreNonnullByDefault;
2529

2630
/** @author shevek */
2731
@AutoService(Connector.class)
32+
@ParametersAreNonnullByDefault
2833
public class SnowflakeAccountUsageMetadataConnector extends SnowflakeMetadataConnector {
2934

3035
public SnowflakeAccountUsageMetadataConnector() {
@@ -38,7 +43,15 @@ public String getDescription() {
3843
}
3944

4045
@Override
41-
public void printHelp(@Nonnull Appendable out) throws IOException {
46+
public void printHelp(Appendable out) throws IOException {
4247
out.append(AbstractSnowflakeConnector.describeAsDelegate(this, "snowflake"));
4348
}
49+
50+
@Override
51+
public final void validateForConnector(ConnectorArguments arguments) {
52+
if (arguments.isAssessment()) {
53+
String message = String.format("The --%s flag is not supported.", OPT_ASSESSMENT);
54+
throw new MetadataDumperUsageException(message);
55+
}
56+
}
4457
}

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeInformationSchemaMetadataConnector.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,20 @@
1616
*/
1717
package com.google.edwmigration.dumper.application.dumper.connector.snowflake;
1818

19+
import static com.google.edwmigration.dumper.application.dumper.ConnectorArguments.OPT_ASSESSMENT;
1920
import static com.google.edwmigration.dumper.application.dumper.connector.snowflake.SnowflakeInput.SCHEMA_ONLY_SOURCE;
2021

2122
import com.google.auto.service.AutoService;
23+
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
24+
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2225
import com.google.edwmigration.dumper.application.dumper.connector.Connector;
2326
import java.io.IOException;
2427
import javax.annotation.Nonnull;
28+
import javax.annotation.ParametersAreNonnullByDefault;
2529

2630
/** @author shevek */
2731
@AutoService(Connector.class)
32+
@ParametersAreNonnullByDefault
2833
public class SnowflakeInformationSchemaMetadataConnector extends SnowflakeMetadataConnector {
2934

3035
public SnowflakeInformationSchemaMetadataConnector() {
@@ -41,4 +46,12 @@ public String getDescription() {
4146
public void printHelp(@Nonnull Appendable out) throws IOException {
4247
out.append(AbstractSnowflakeConnector.describeAsDelegate(this, "snowflake"));
4348
}
49+
50+
@Override
51+
public final void validateForConnector(ConnectorArguments arguments) {
52+
if (arguments.isAssessment()) {
53+
String message = String.format("The --%s flag is not supported.", OPT_ASSESSMENT);
54+
throw new MetadataDumperUsageException(message);
55+
}
56+
}
4457
}

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeMetadataConnector.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.common.annotations.VisibleForTesting;
2424
import com.google.common.collect.ImmutableList;
2525
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
26+
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2627
import com.google.edwmigration.dumper.application.dumper.annotations.RespectsArgumentAssessment;
2728
import com.google.edwmigration.dumper.application.dumper.annotations.RespectsArgumentDatabaseForConnection;
2829
import com.google.edwmigration.dumper.application.dumper.annotations.RespectsArgumentDatabasePredicate;
@@ -132,7 +133,20 @@ public Iterable<ConnectorProperty> getPropertyConstants() {
132133
}
133134

134135
@Override
135-
protected final void validateForConnector(@Nonnull ConnectorArguments arguments) {}
136+
protected void validateForConnector(@Nonnull ConnectorArguments arguments) {
137+
boolean hasDatabases = !arguments.getDatabases().isEmpty();
138+
if (arguments.isAssessment() && hasDatabases) {
139+
String unsupportedFilter =
140+
"Trying to filter by database with the --"
141+
+ ConnectorArguments.OPT_ASSESSMENT
142+
+ " flag. This is unsupported in Assessment. Remove either the --"
143+
+ ConnectorArguments.OPT_ASSESSMENT
144+
+ " or the --"
145+
+ ConnectorArguments.OPT_DATABASE
146+
+ " flag.";
147+
throw new MetadataDumperUsageException(unsupportedFilter);
148+
}
149+
}
136150

137151
private void addSqlTasksWithInfoSchemaFallback(
138152
@Nonnull List<? super Task<?>> out,

0 commit comments

Comments
 (0)