mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
switch tokens routine
This commit is contained in:
parent
5755a5c462
commit
d14f04fa07
4 changed files with 29 additions and 5 deletions
|
|
@ -75,7 +75,6 @@ public class NotebookRepoSync implements NotebookRepo {
|
|||
}
|
||||
|
||||
for (int i = 0; i < Math.min(storageClassNames.length, getMaxRepoNum()); i++) {
|
||||
@SuppressWarnings("static-access")
|
||||
Class<?> notebookStorageClass;
|
||||
try {
|
||||
notebookStorageClass = getClass().forName(storageClassNames[i].trim());
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import org.apache.zeppelin.notebook.repo.zeppelinhub.model.UserTokenContainer;
|
|||
import org.apache.zeppelin.notebook.repo.zeppelinhub.model.UserSessionContainer;
|
||||
import org.apache.zeppelin.notebook.repo.zeppelinhub.rest.ZeppelinhubRestApiHandler;
|
||||
import org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.Client;
|
||||
import org.apache.zeppelin.notebook.repo.zeppelinhub.websocket.utils.ZeppelinhubUtils;
|
||||
import org.apache.zeppelin.user.AuthenticationInfo;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -76,7 +77,6 @@ public class ZeppelinHubRepo implements NotebookRepo {
|
|||
websocketClient = Client.initialize(getZeppelinWebsocketUri(conf),
|
||||
getZeppelinhubWebsocketUri(conf), token, conf);
|
||||
websocketClient.start();
|
||||
|
||||
}
|
||||
|
||||
private String getZeppelinHubWsUri(URI api) throws URISyntaxException {
|
||||
|
|
@ -241,7 +241,6 @@ public class ZeppelinHubRepo implements NotebookRepo {
|
|||
return EMPTY_NOTE;
|
||||
}
|
||||
String endpoint = Joiner.on("/").join(noteId, "checkpoint", revId);
|
||||
|
||||
String token = getUserToken(subject.getUser());
|
||||
String response = restApiClient.get(token, endpoint);
|
||||
|
||||
|
|
@ -321,19 +320,24 @@ public class ZeppelinHubRepo implements NotebookRepo {
|
|||
LOG.info("User {} will switch instance", user);
|
||||
String ticket = UserSessionContainer.instance.getSession(user);
|
||||
List<Instance> instances;
|
||||
String currentToken = StringUtils.EMPTY, targetToken = StringUtils.EMPTY;
|
||||
try {
|
||||
instances = tokenManager.getUserInstances(ticket);
|
||||
if (instances.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
currentToken = tokenManager.getExistingUserToken(user);
|
||||
for (Instance instance : instances) {
|
||||
if (instance.id == instanceId) {
|
||||
LOG.info("User {} switched to instance {}", user, instances.get(0).name);
|
||||
LOG.info("User {} switched to instance {}", user, instance.name);
|
||||
tokenManager.setUserToken(user, instance.token);
|
||||
targetToken = instance.token;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!StringUtils.isBlank(currentToken) && !StringUtils.isBlank(targetToken)) {
|
||||
ZeppelinhubUtils.userSwitchTokenRoutine(user, currentToken, targetToken);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
LOG.error("Cannot switch instance for user {}", user, e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,17 @@ public class UserTokenContainer {
|
|||
return token;
|
||||
}
|
||||
|
||||
public String getExistingUserToken(String principal) {
|
||||
if (StringUtils.isBlank(principal) || "anonymous".equals(principal)) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
String token = userTokens.get(principal);
|
||||
if (token == null) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
public String removeUserToken(String username) {
|
||||
return userTokens.remove(username);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,4 +118,14 @@ public class ZeppelinhubUtils {
|
|||
.send(msg, token);
|
||||
ZeppelinhubClient.getInstance().removeSession(token);
|
||||
}
|
||||
|
||||
public static void userSwitchTokenRoutine(String username, String originToken,
|
||||
String targetToken) {
|
||||
String offMsg = ZeppelinhubUtils.deadMessage(originToken);
|
||||
ZeppelinhubClient.getInstance().send(offMsg, originToken);
|
||||
ZeppelinhubClient.getInstance().removeSession(originToken);
|
||||
|
||||
String onMsg = ZeppelinhubUtils.liveMessage(targetToken);
|
||||
ZeppelinhubClient.getInstance().send(onMsg, targetToken);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue