DRILL-8348: Cannot delete disabled storage plugins (#2696)
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 b8670d7..f7e7cc5 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 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 @@
*/
@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 bb086f6..c86c2c7 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 @@
@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 8fba531..544400f 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.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 f1d2bb7..693f9e6 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 @@
/**
* 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 a56392f..96b0527 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 @@
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 e17b4fa..64d6e39 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 @@
return aliasRegistryProvider;
}
- public OAuthTokenProvider getoAuthTokenProvider() { return oAuthTokenProvider; }
+ public OAuthTokenProvider getOauthTokenProvider() { return oAuthTokenProvider; }
public EventLoopGroup getBitLoopGroup() {
return context.getControlLoopGroup();
@@ -317,7 +317,7 @@
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 71b12b9..b4aaf7b 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 @@
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 @@
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 @@
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 @@
// 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 b41e392..61d85c5 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.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;
@@ -77,6 +77,9 @@
StoragePluginRegistry storage;
@Inject
+ WorkManager workManager;
+
+ @Inject
SecurityContext sc;
@Inject
@@ -275,10 +278,9 @@
@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 @@
/**
* 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 63d3812..3cbd9ea 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.' })
+ }
});
});
}