Added support for mounting shared storage in server mode. #5014

This commit is contained in:
Nikhil Mohite
2023-03-06 17:03:47 +05:30
committed by GitHub
parent c35d449d7e
commit 9da8a188fa
19 changed files with 307 additions and 66 deletions

View File

@@ -51,7 +51,8 @@ from pgadmin.tools.sqleditor.utils.query_history import QueryHistory
from pgadmin.tools.sqleditor.utils.macros import get_macros,\
get_user_macros, set_macros
from pgadmin.utils.constants import MIMETYPE_APP_JS, \
SERVER_CONNECTION_CLOSED, ERROR_MSG_TRANS_ID_NOT_FOUND, ERROR_FETCHING_DATA
SERVER_CONNECTION_CLOSED, ERROR_MSG_TRANS_ID_NOT_FOUND, \
ERROR_FETCHING_DATA, MY_STORAGE
from pgadmin.model import Server, ServerGroup
from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry
from pgadmin.settings import get_setting
@@ -1808,7 +1809,9 @@ def load_file():
file_path = unquote(file_data['file_name'])
# retrieve storage directory path
storage_manager_path = get_storage_directory()
storage_manager_path = get_storage_directory(
shared_storage=file_data['storage'])
try:
Filemanager.check_access_permission(storage_manager_path, file_path)
except Exception as e:
@@ -1850,7 +1853,13 @@ def save_file():
file_data = json.loads(request.data)
# retrieve storage directory path
storage_manager_path = get_storage_directory()
last_storage = Preferences.module('file_manager').preference(
'last_storage').get()
if last_storage != MY_STORAGE:
storage_manager_path = get_storage_directory(
shared_storage=last_storage)
else:
storage_manager_path = get_storage_directory()
# generate full path of file
file_path = unquote(file_data['file_name'])

View File

@@ -439,8 +439,8 @@ export default function QueryToolComponent({params, pgWindow, pgAdmin, selectedN
'supported_types': ['*', 'sql'], // file types allowed
'dialog_type': 'select_file', // open select file dialog
};
pgAdmin.Tools.FileManager.show(fileParams, (fileName)=>{
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.LOAD_FILE, fileName);
pgAdmin.Tools.FileManager.show(fileParams, (fileName, storage)=>{
eventBus.current.fireEvent(QUERY_TOOL_EVENTS.LOAD_FILE, fileName, storage);
}, null, modal);
}],
[QUERY_TOOL_EVENTS.TRIGGER_SAVE_FILE, (isSaveAs=false)=>{

View File

@@ -350,9 +350,10 @@ export default function Query() {
}
});
eventBus.registerListener(QUERY_TOOL_EVENTS.LOAD_FILE, (fileName)=>{
eventBus.registerListener(QUERY_TOOL_EVENTS.LOAD_FILE, (fileName, storage)=>{
queryToolCtx.api.post(url_for('sqleditor.load_file'), {
'file_name': decodeURI(fileName),
'storage': storage
}, {transformResponse: [(data, headers) => {
if(headers['content-type'].includes('application/json')) {
return JSON.parse(data);