This is an automated email from the ASF dual-hosted git repository.
dzamo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git
The following commit(s) were added to refs/heads/master by this push:
new 6e80ec0eba DRILL-8348: Cannot delete disabled storage plugins (#2696)
6e80ec0eba is described below
commit 6e80ec0eba27afea49edab32387b40631df99df8
Author: James Turton <[email protected]>
AuthorDate: Tue Nov 1 19:36:18 2022 +0200
DRILL-8348: Cannot delete disabled storage plugins (#2696)
---
.../store/googlesheets/GoogleSheetsStoragePlugin.java | 4 ++--
.../drill/exec/store/http/HttpStoragePlugin.java | 2 +-
.../apache/drill/exec/oauth/OAuthTokenProvider.java | 2 +-
.../drill/exec/oauth/PersistentTokenRegistry.java | 2 +-
.../org/apache/drill/exec/oauth/TokenRegistry.java | 4 ++--
.../org/apache/drill/exec/server/DrillbitContext.java | 4 ++--
.../apache/drill/exec/server/rest/OAuthRequests.java | 8 ++++----
.../drill/exec/server/rest/StorageResources.java | 18 ++++++++++--------
.../src/main/resources/rest/storage/update.ftl | 10 ++++++++--
9 files changed, 31 insertions(+), 23 deletions(-)
diff --git
a/contrib/storage-googlesheets/src/main/java/org/apache/drill/exec/store/googlesheets/GoogleSheetsStoragePlugin.java
b/contrib/storage-googlesheets/src/main/java/org/apache/drill/exec/store/googlesheets/GoogleSheetsStoragePlugin.java
index b8670d7b04..f7e7cc54aa 100644
---
a/contrib/storage-googlesheets/src/main/java/org/apache/drill/exec/store/googlesheets/GoogleSheetsStoragePlugin.java
+++
b/contrib/storage-googlesheets/src/main/java/org/apache/drill/exec/store/googlesheets/GoogleSheetsStoragePlugin.java
@@ -70,7 +70,7 @@ public class GoogleSheetsStoragePlugin extends
AbstractStoragePlugin {
public GoogleSheetsStoragePlugin(GoogleSheetsStoragePluginConfig
configuration, DrillbitContext context, String name) {
super(context, name);
this.config = configuration;
- this.tokenProvider = context.getoAuthTokenProvider();
+ this.tokenProvider = context.getOauthTokenProvider();
this.schemaFactory = new GoogleSheetsSchemaFactory(this);
}
@@ -182,7 +182,7 @@ public class GoogleSheetsStoragePlugin extends
AbstractStoragePlugin {
*/
@VisibleForTesting
public void initializeTokenTableForTesting() {
- OAuthTokenProvider tokenProvider = context.getoAuthTokenProvider();
+ OAuthTokenProvider tokenProvider = context.getOauthTokenProvider();
tokenRegistry = tokenProvider.getOauthTokenRegistry(null);
}
diff --git
a/contrib/storage-http/src/main/java/org/apache/drill/exec/store/http/HttpStoragePlugin.java
b/contrib/storage-http/src/main/java/org/apache/drill/exec/store/http/HttpStoragePlugin.java
index bb086f609c..c86c2c7d22 100644
---
a/contrib/storage-http/src/main/java/org/apache/drill/exec/store/http/HttpStoragePlugin.java
+++
b/contrib/storage-http/src/main/java/org/apache/drill/exec/store/http/HttpStoragePlugin.java
@@ -75,7 +75,7 @@ public class HttpStoragePlugin extends AbstractStoragePlugin {
@VisibleForTesting
public void initializeOauthTokenTable(String username) {
- OAuthTokenProvider tokenProvider = context.getoAuthTokenProvider();
+ OAuthTokenProvider tokenProvider = context.getOauthTokenProvider();
tokenRegistry = tokenProvider.getOauthTokenRegistry(username);
tokenRegistry.createTokenTable(getName());
}
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/OAuthTokenProvider.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/OAuthTokenProvider.java
index 8fba531b21..544400f002 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/OAuthTokenProvider.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/OAuthTokenProvider.java
@@ -22,7 +22,7 @@ import org.apache.drill.common.AutoCloseables;
import org.apache.drill.exec.server.DrillbitContext;
/**
- * Class for managing oauth tokens. Storage plugins will have to manage
obtaining the plugins, but
+ * Class for managing oauth tokens. Storage plugins will have to manage
obtaining the tokens, but
* these classes handle the storage of access and refresh tokens.
*/
public class OAuthTokenProvider implements AutoCloseable {
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/PersistentTokenRegistry.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/PersistentTokenRegistry.java
index f1d2bb7ed5..693f9e6dbd 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/PersistentTokenRegistry.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/PersistentTokenRegistry.java
@@ -32,7 +32,7 @@ import java.util.function.Supplier;
/**
* Implementation of {@link TokenRegistry} that persists token tables
- * to the pre-configured persistent store.
+ * to the preconfigured persistent store.
*/
public class PersistentTokenRegistry implements TokenRegistry {
private final PersistentStore<PersistentTokenTable> store;
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/TokenRegistry.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/TokenRegistry.java
index a56392fce9..96b052730c 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/TokenRegistry.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/oauth/TokenRegistry.java
@@ -34,8 +34,8 @@ public interface TokenRegistry extends AutoCloseable {
PersistentTokenTable getTokenTable(String name);
/**
- * Deletes aliases table for specified {@code userName}.
- * @param pluginName name of the user whose aliases table should be removed
+ * Deletes the token table for specified {@code pluginName}.
+ * @param pluginName name of the plugin whose token table should be removed
*/
void deleteTokenTable(String pluginName);
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
index e17b4fab4e..64d6e39277 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/DrillbitContext.java
@@ -224,7 +224,7 @@ public class DrillbitContext implements AutoCloseable {
return aliasRegistryProvider;
}
- public OAuthTokenProvider getoAuthTokenProvider() { return
oAuthTokenProvider; }
+ public OAuthTokenProvider getOauthTokenProvider() { return
oAuthTokenProvider; }
public EventLoopGroup getBitLoopGroup() {
return context.getControlLoopGroup();
@@ -317,7 +317,7 @@ public class DrillbitContext implements AutoCloseable {
getCompiler().close();
getMetastoreRegistry().close();
getAliasRegistryProvider().close();
- getoAuthTokenProvider().close();
+ getOauthTokenProvider().close();
}
public ResourceManager getResourceManager() {
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
index 71b12b92b4..b4aaf7b021 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
@@ -63,7 +63,7 @@ public class OAuthRequests {
SecurityContext sc) {
try {
DrillbitContext context = ((AbstractStoragePlugin)
storage.getPlugin(name)).getContext();
- OAuthTokenProvider tokenProvider = context.getoAuthTokenProvider();
+ OAuthTokenProvider tokenProvider = context.getOauthTokenProvider();
PersistentTokenTable tokenTable =
tokenProvider.getOauthTokenRegistry(getQueryUser(storage.getPlugin(name).getConfig(),
authEnabled, sc)).getTokenTable(name);
// Set the access token
@@ -85,7 +85,7 @@ public class OAuthRequests {
SecurityContext sc) {
try {
DrillbitContext context = ((AbstractStoragePlugin)
storage.getPlugin(name)).getContext();
- OAuthTokenProvider tokenProvider = context.getoAuthTokenProvider();
+ OAuthTokenProvider tokenProvider = context.getOauthTokenProvider();
PersistentTokenTable tokenTable = tokenProvider.getOauthTokenRegistry(
getQueryUser(storage.getPlugin(name).getConfig(), authEnabled,
sc)).getTokenTable(name);
@@ -107,7 +107,7 @@ public class OAuthRequests {
UserAuthEnabled authEnabled,
SecurityContext sc) {
try {
DrillbitContext context = ((AbstractStoragePlugin)
storage.getPlugin(name)).getContext();
- OAuthTokenProvider tokenProvider = context.getoAuthTokenProvider();
+ OAuthTokenProvider tokenProvider = context.getOauthTokenProvider();
PersistentTokenTable tokenTable = tokenProvider
.getOauthTokenRegistry(getQueryUser(storage.getPlugin(name).getConfig(),
authEnabled, sc))
.getTokenTable(name);
@@ -145,7 +145,7 @@ public class OAuthRequests {
// If USER_TRANSLATION is enabled, Drill will create a token table for
each user.
TokenRegistry tokenRegistry = ((AbstractStoragePlugin)
storage.getPlugin(name))
.getContext()
- .getoAuthTokenProvider()
+ .getOauthTokenProvider()
.getOauthTokenRegistry(getQueryUser(storage.getPlugin(name).getConfig(),
authEnabled, sc));
// Add a token registry table if none exists
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
index b41e392175..61d85c5bd5 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
@@ -50,12 +50,12 @@ import org.apache.drill.common.logical.StoragePluginConfig;
import org.apache.drill.common.logical.StoragePluginConfig.AuthMode;
import org.apache.drill.exec.oauth.TokenRegistry;
import org.apache.drill.exec.server.rest.DrillRestServer.UserAuthEnabled;
-import org.apache.drill.exec.store.AbstractStoragePlugin;
import org.apache.drill.exec.store.StoragePluginRegistry;
import
org.apache.drill.exec.store.StoragePluginRegistry.PluginEncodingException;
import org.apache.drill.exec.store.StoragePluginRegistry.PluginException;
import org.apache.drill.exec.store.StoragePluginRegistry.PluginFilter;
import
org.apache.drill.exec.store.StoragePluginRegistry.PluginNotFoundException;
+import org.apache.drill.exec.work.WorkManager;
import org.glassfish.jersey.server.mvc.Viewable;
import org.slf4j.Logger;
@@ -76,6 +76,9 @@ public class StorageResources {
@Inject
StoragePluginRegistry storage;
+ @Inject
+ WorkManager workManager;
+
@Inject
SecurityContext sc;
@@ -275,10 +278,9 @@ public class StorageResources {
@Operation(externalDocs = @ExternalDocumentation(description = "Apache Drill
REST API documentation:", url =
"https://drill.apache.org/docs/rest-api-introduction/"))
public Response deletePlugin(@PathParam("name") String name) {
try {
- TokenRegistry tokenRegistry = ((AbstractStoragePlugin)
storage.getPlugin(name))
- .getContext()
- .getoAuthTokenProvider()
-
.getOauthTokenRegistry(getActiveUser(storage.getPlugin(name).getConfig()));
+ TokenRegistry tokenRegistry = workManager.getContext()
+ .getOauthTokenProvider()
+ .getOauthTokenRegistry(getQueryUser(storage.getStoredConfig(name)));
// Delete a token registry table if it exists
tokenRegistry.deleteTokenTable(name);
@@ -416,11 +418,11 @@ public class StorageResources {
/**
* This function checks to see if a given storage plugin is using
USER_TRANSLATION mode.
- * If so, it will return the active user name. If not it will return null.
+ * If so, it will return the query user name. If not it will return null.
* @param config {@link StoragePluginConfig} The current plugin configuration
- * @return If USER_TRANSLATION is enabled, returns the active user. If not,
returns null.
+ * @return If USER_TRANSLATION is enabled, returns the query user. If not,
returns null.
*/
- private String getActiveUser(StoragePluginConfig config) {
+ private String getQueryUser(StoragePluginConfig config) {
if (config.getAuthMode() == AuthMode.USER_TRANSLATION &&
authEnabled.get()) {
return sc.getUserPrincipal().getName();
} else {
diff --git a/exec/java-exec/src/main/resources/rest/storage/update.ftl
b/exec/java-exec/src/main/resources/rest/storage/update.ftl
index 63d3812798..3cbd9ea90e 100644
--- a/exec/java-exec/src/main/resources/rest/storage/update.ftl
+++ b/exec/java-exec/src/main/resources/rest/storage/update.ftl
@@ -204,8 +204,14 @@
function deleteFunction() {
showConfirmationDialog('"${model.getPlugin().getName()}"' + ' plugin
will be deleted. Proceed?', function() {
- $.get("/storage/" +
encodeURIComponent("${model.getPlugin().getName()}") + "/delete",
serverMessage).fail(function() {
- serverMessage({ errorMessage: "Error
while trying to delete." })
+ $.ajax({
+ url: '/storage/' +
encodeURIComponent('${model.getPlugin().getName()}') + '.json',
+ method: 'DELETE',
+ contentType: 'application/json',
+ success: serverMessage,
+ error: function(request,msg,error) {
+ serverMessage({ errorMessage: 'Error while trying to delete.' })
+ }
});
});
}