Added capability to deploy PostgreSQL servers on Amazon RDS. Fixes #7177

This commit is contained in:
Khushboo Vashi
2022-02-14 12:13:48 +05:30
committed by Akshay Joshi
parent b89e306df0
commit e61a1045f5
50 changed files with 3393 additions and 42 deletions

View File

@@ -763,7 +763,7 @@ def index():
mfa_enabled=is_mfa_enabled(),
login_url=login_url,
_=gettext,
auth_only_internal=auth_only_internal
auth_only_internal=auth_only_internal,
))
# Set the language cookie after login, so next time the user will have that

View File

@@ -112,6 +112,10 @@ def server_icon_and_background(is_connected, manager, server):
return 'icon-shared-server-not-connected{0}'.format(
server_background_color
)
elif server.cloud_status == -1:
return 'icon-server-cloud-deploy{0}'.format(
server_background_color
)
else:
return 'icon-server-not-connected{0}'.format(
server_background_color
@@ -256,7 +260,8 @@ class ServerModule(sg.ServerGroupPluginModule):
user_name=server.username,
shared=server.shared,
is_kerberos_conn=bool(server.kerberos_conn),
gss_authenticated=manager.gss_authenticated
gss_authenticated=manager.gss_authenticated,
cloud_status=server.cloud_status
)
@property
@@ -998,7 +1003,8 @@ class ServerNode(PGChildNodeView):
'tunnel_authentication': tunnel_authentication,
'kerberos_conn': bool(server.kerberos_conn),
'gss_authenticated': manager.gss_authenticated,
'gss_encrypted': manager.gss_encrypted
'gss_encrypted': manager.gss_encrypted,
'cloud_status': server.cloud_status
}
return ajax_response(response)

View File

@@ -342,17 +342,17 @@ define('pgadmin.node.schema', [
pgBrowser.add_menus([{
name: 'create_schema_on_coll', node: 'coll-schema', module: this,
applies: ['object', 'context'], callback: 'show_obj_properties',
category: 'create', priority: 4, label: gettext('Schema...'),
category: 'create', priority: 1, label: gettext('Schema...'),
icon: 'wcTabIcon icon-schema', data: {action: 'create'},
},{
name: 'create_schema', node: 'schema', module: this,
applies: ['object', 'context'], callback: 'show_obj_properties',
category: 'create', priority: 4, label: gettext('Schema...'),
category: 'create', priority: 1, label: gettext('Schema...'),
icon: 'wcTabIcon icon-schema', data: {action: 'create'},
},{
name: 'create_schema', node: 'database', module: this,
applies: ['object', 'context'], callback: 'show_obj_properties',
category: 'create', priority: 4, label: gettext('Schema...'),
category: 'create', priority: 1, label: gettext('Schema...'),
icon: 'wcTabIcon icon-schema', data: {action: 'create'},
enable: 'can_create_schema',
},

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.4.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
<g>
<path d="M29,12.3c0,0-5.6,0-10,4.4c-0.2,0.2-0.4,0.4-0.5,0.6c-0.8-0.1-2,0-2.6,0.6c-1.4,1.4-1.9,3.8-1.9,3.8l3.1-0.4v1.1l1.9,1.9
h1.1l-0.4,3.1c0,0,2.4-0.5,3.8-1.9c0.6-0.6,0.6-1.8,0.6-2.6c0.2-0.2,0.4-0.3,0.6-0.5C29,17.9,29,12.3,29,12.3z M22.8,17.3
c0-0.7,0.6-1.2,1.2-1.2s1.2,0.6,1.2,1.2s-0.6,1.2-1.2,1.2S22.8,18,22.8,17.3z"/>
<path d="M18,24.5c-0.6,0.6-1.5,0.3-1.5,0.3s-0.3-0.9,0.3-1.5c0,0,0.1-0.1,0.1-0.1l-0.3-0.3c-0.2,0.1-0.5,0.2-0.6,0.4
c-0.9,0.9-0.7,2.7-0.7,2.7s1.9,0.1,2.7-0.7c0.2-0.2,0.3-0.4,0.4-0.6l-0.3-0.3C18.1,24.4,18.1,24.5,18,24.5z"/>
<path d="M2.5,8.9h18.6c0.8,0,1.5-0.7,1.5-1.5V4.3c0-0.8-0.7-1.5-1.5-1.5H2.5C1.7,2.7,1,3.4,1,4.3v3.1C1,8.2,1.7,8.9,2.5,8.9z
M18.8,4.6c0.6,0,1.2,0.5,1.2,1.2s-0.5,1.2-1.2,1.2s-1.2-0.5-1.2-1.2S18.2,4.6,18.8,4.6z M15.8,4.6c0.6,0,1.2,0.5,1.2,1.2
s-0.5,1.2-1.2,1.2s-1.2-0.5-1.2-1.2S15.1,4.6,15.8,4.6z"/>
<path d="M2.5,16.5h15.4c0.1-0.2,0.3-0.4,0.4-0.5c1.4-1.4,2.9-2.3,4.3-3v-1.1c0-0.8-0.7-1.5-1.5-1.5H2.5c-0.8,0-1.5,0.7-1.5,1.5V15
C1,15.8,1.7,16.5,2.5,16.5z M18.8,12.3c0.6,0,1.2,0.5,1.2,1.2c0,0.6-0.5,1.2-1.2,1.2s-1.2-0.5-1.2-1.2
C17.7,12.8,18.2,12.3,18.8,12.3z M15.8,12.3c0.6,0,1.2,0.5,1.2,1.2c0,0.6-0.5,1.2-1.2,1.2s-1.2-0.5-1.2-1.2
C14.6,12.8,15.1,12.3,15.8,12.3z"/>
<path d="M2.5,18.1c-0.8,0-1.5,0.7-1.5,1.5v3.1c0,0.8,0.7,1.5,1.5,1.5h10.1l0.7-3.2c0,0,0.3-1.6,1.2-2.9H2.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -80,13 +80,15 @@ define('pgadmin.node.server', [
pgBrowser.add_menus([{
name: 'create_server_on_sg', node: 'server_group', module: this,
applies: ['object', 'context'], callback: 'show_obj_properties',
category: 'create', priority: 1, label: gettext('Server...'),
data: {action: 'create'}, icon: 'wcTabIcon icon-server', enable: 'canCreate',
category: 'register', priority: 1, label: gettext('Server...'),
data: {action: 'create'}, icon: 'wcTabIcon icon-server',
enable: 'canCreate',
},{
name: 'create_server', node: 'server', module: this,
applies: ['object', 'context'], callback: 'show_obj_properties',
category: 'create', priority: 3, label: gettext('Server...'),
data: {action: 'create'}, icon: 'wcTabIcon icon-server', enable: 'canCreate',
category: 'register', priority: 3, label: gettext('Server...'),
data: {action: 'create'}, icon: 'wcTabIcon icon-server',
enable: 'canCreate',
},{
name: 'connect_server', node: 'server', module: this,
applies: ['object', 'context'], callback: 'connect_server',
@@ -808,8 +810,8 @@ define('pgadmin.node.server', [
// Fetch the updated data
$.get(server_url)
.done(function(res) {
if (res.shared && _.isNull(res.username) && data.user_id != current_user.id){
if (!res.service){
if (res.shared && _.isNull(res.username) && data.user_id != current_user.id) {
if (!res.service) {
pgAdmin.Browser.Node.callbacks.show_obj_properties.call(
pgAdmin.Browser.Nodes[tree.itemData(item)._type], {action: 'edit'}
);
@@ -818,13 +820,30 @@ define('pgadmin.node.server', [
tree.setInode(item);
tree.addIcon(item, {icon: 'icon-shared-server-not-connected'});
Notify.info('Please enter the server details to connect to the server. This server is a shared server.');
}else{
} else {
data.is_connecting = false;
tree.unload(item);
tree.setInode(item);
tree.addIcon(item, {icon: 'icon-shared-server-not-connected'});
}
}
else if (res.cloud_status == -1) {
$.ajax({
type: 'GET',
timeout: 30000,
url: url_for('cloud.update_cloud_process', {'sid': res.id}),
cache: false,
async: true,
contentType: 'application/json',
})
.done(function() {
pgAdmin.Browser.BackgroundProcessObsorver.update_process_list();
})
.fail(function() {
console.warn(arguments);
});
}
return;
}).always(function(){
data.is_connecting = false;
});
@@ -1033,7 +1052,7 @@ define('pgadmin.node.server', [
};
/* Wait till the existing request completes */
if(data.is_connecting) {
if(data.is_connecting || data.cloud_status == -1) {
return;
}
data.is_connecting = true;

View File

@@ -33,3 +33,13 @@
vertical-align: middle;
height: 1.3em;
}
.icon-server-cloud-deploy {
background-image: url('{{ url_for('NODE-server.static', filename='img/serverbeingdeployed.svg') }}') !important;
background-repeat: no-repeat;
background-size: 20px !important;
align-content: center;
vertical-align: middle;
height: 1.3em;
}

View File

@@ -326,9 +326,18 @@ define('pgadmin.browser', [
},
menu_categories: {
/* name, label (pair) */
'register': {
label: gettext('Register'),
priority: 1,
/* separator above this menu */
above: false,
below: true,
/* icon: 'fa fa-magic', */
single: true,
},
'create': {
label: gettext('Create'),
priority: 1,
priority: 2,
/* separator above this menu */
above: false,
below: true,

View File

@@ -46,7 +46,7 @@ define([
pgAdmin.Browser.add_menus([{
name: 'refresh', node: this.type, module: this,
applies: ['object', 'context'], callback: 'refresh',
priority: 1, label: gettext('Refresh'),
priority: 2, label: gettext('Refresh'),
icon: 'fa fa-sync-alt',
}]);

View File

@@ -118,8 +118,8 @@ define('pgadmin.browser.node', [
module: self,
applies: ['object', 'context'],
callback: 'refresh',
priority: 1,
label: gettext('Refresh'),
priority: 2,
label: gettext('Refresh...'),
icon: 'fa fa-sync-alt',
}]);
@@ -792,6 +792,9 @@ define('pgadmin.browser.node', [
}
l = gettext('Create - %s', this.label);
if (this.type == 'server') {
l = gettext('Register - %s', this.label);
}
p = addPanel();
setTimeout(function() {