Compare commits

...
94 Commits
Author SHA1 Message Date
Aditya Toshniwal a7fd7d67b3 1. Intermittently failing test cases.
2. Dialog vertical position should be more on the upper side.
3. File not supported error is not showing.

refs #7313
2022-07-25 11:48:27 +05:30
Akshay Joshi 96c360e728 Update version for release. 2022-07-25 09:33:11 +05:30
Akshay Joshi 3e3f06c55d Fixed an issue where Autocomplete did not work after pressing CTRL/CMD + Space
for the second time and autocomplete on keypress is off. Fixes #7563
2022-07-22 18:49:46 +05:30
Akshay Joshi 1745aaaa0a Update Dependencies 2022-07-22 16:11:01 +05:30
Akshay Joshi c67ed7d7d2 Update message catalogs. 2022-07-22 16:09:43 +05:30
Yogesh Mahajan f6d8f9f5c5 Fixed feature tests. 2022-07-22 16:07:25 +05:30
Akshay Joshi a4c12555cb Fixed docker build. 2022-07-22 13:04:24 +05:30
Aditya Toshniwal 8d1868305d Fixed Jasmine test cases.
refs #7313
2022-07-21 15:45:51 +05:30
Akshay Joshi 2cdee919c1 Fixed audit issues. 2022-07-21 13:44:19 +05:30
Yogesh Mahajan 3f8c36789f Fixed copy command error on Windows in Import/Export data.
refs #7428
2022-07-21 13:07:42 +05:30
Akshay Joshi 631a08189a 1) Improved autocomplete loading indicator.
2) Avoid too many ajax requests per key press.

refs #4488
2022-07-20 18:02:45 +05:30
Aditya Toshniwal 4808df5e95 1) Port the file/storage manager to React. Fixes #7313
2) Allow users to delete files/folders from the storage manager. Fixes #4607
3) Allow users to search within the file/storage manager. Fixes #7389
4) Fixed an issue where new folders cannot be created in the save dialog. Fixes #7524
2022-07-19 15:27:47 +05:30
Akshay Joshi 4585597388 Added option to trigger autocomplete on key press in the query tool. Fixes #4488 2022-07-19 11:55:37 +05:30
Yogesh Mahajan 8f73956d1e Fixed API test cases.
refs #7428
2022-07-18 18:15:46 +05:30
Yogesh Mahajan 8f2bda2309 1) Preserve the settings set by the user in the import/export data dialog. Fixes #7428
2) Fixed the JSON editor issue of hiding the first record. Fixes #7520
2022-07-18 10:54:03 +05:30
Aditya Toshniwal 9dde195af4 Ensure that notices should not disappear from the messages tab. Fixes #7512 2022-07-14 18:05:36 +05:30
Aditya Toshniwal 9468c80a78 Fixed an issue where comments on indexes are not displayed. Fixes #7508 2022-07-14 18:01:31 +05:30
Aditya Toshniwal 1fecf70123 Ensure that geometry should be shown for all the selected cells. Fixes #7519 2022-07-14 17:38:42 +05:30
Akshay Joshi a11f42b3e0 Fixed audit issues. 2022-07-14 11:24:17 +05:30
Yogesh Mahajan 683528b81c Fixed feature tests. 2022-07-12 11:10:23 +05:30
Akshay Joshi 02b0f35442 1) Port change password dialog to React. Fixes #7341
2) Port named restore point dialog to React. Fixes #7546
2022-07-11 13:39:09 +05:30
Yogesh Mahajan 1a5e60c44f Fixed feature tests. 2022-07-08 18:25:00 +05:30
Akshay Joshi a16e3523bd Ensure that the splash screen can be moved. Fixes # 7471 2022-07-07 14:11:36 +05:30
Akshay Joshi 50c930f5fa Make the controls on the Graph Visualiser collapsible and reorganize the controls. 2022-07-07 14:10:10 +05:30
Akshay Joshi 9cdcad7a88 1) Keep the selected columns for the X and Y-axis.
2) Lighten the color of the stacked line chart.
2022-07-06 18:58:15 +05:30
Yogesh Mahajan 59f5c0d955 Added support for Azure PostgreSQL deployment in server mode. Fixes #7522 2022-07-06 11:43:49 +05:30
Nikhil Mohite 64e6700228 Changed the default position of the dialog. 2022-07-05 18:46:49 +05:30
Akshay Joshi 7414394ceb Fixed the following issues in the Graph Visualiser:
1) Change all theme's color codes.
 2) Bar graph for the first and last labels on the X-axis does not display all the bars.
 3) Make the graphs always start from zero on the Y-axis.
2022-07-05 18:44:20 +05:30
Akshay Joshi 8b62cd1f04 Added support for visualise the graph using a Pie chart in the query tool. Fixes #7487 2022-07-05 10:47:17 +05:30
Aditya Toshniwal 239e3bb6f1 Some more theme related fixes. 2022-07-04 14:26:33 +05:30
Nikhil Mohite b283c0ba18 Port Master Password dialog to React. Fixes #7342 2022-07-04 12:16:23 +05:30
Pradip Parkale e59471d87d Ensure that dashboard graph API is not called after the panel has been closed. Fixes #7518 2022-07-04 12:03:18 +05:30
Akshay Joshi 6bebce7015 Fixed PEP8 2022-07-04 11:15:38 +05:30
Akshay Joshi eb65ab6b4b Fixed no module named 'setup' error. 2022-07-04 10:33:12 +05:30
Akshay Joshi 3a69d50458 Change the logic to call setup_db if the database doesn't exist. 2022-07-01 18:12:00 +05:30
Aditya Toshniwal 9c45a62b53 Fixed jasmine test cases introduced by the theme patch. 2022-07-01 15:01:51 +05:30
Fahar Abbas ed59584fe4 Fixed typo error for Statistics on the table header. Fixes #7523 2022-07-01 14:58:45 +05:30
Akshay Joshi bf7de8e7a5 Fixed an issue where the create_app() function was called twice if an SQLite database file was not present.
Remove the exec call to run the 'setup.py' instead call the setup database function directly.
2022-07-01 14:50:12 +05:30
Nikhil Mohite 9c745db413 Enable the start debugging button once execution is completed. Fixes #7517 2022-07-01 12:41:06 +05:30
Aditya Toshniwal 7d0ed90796 Fixed API test cases.
refs #7492
2022-07-01 12:07:43 +05:30
Fred Escallier b0681f55e9 Update French translation. 2022-07-01 12:06:34 +05:30
Aditya Toshniwal 86b30b3c83 Theme component usage has been fixed, a component should never be wrapped in multiple Theme components. 2022-06-30 15:18:20 +05:30
Akshay Joshi b92e2fcfc9 Added support for visualizing the graphs using Stacked Line, Bar, and Stacked Bar charts in the query tool. Fixes #7486 2022-06-30 12:38:48 +05:30
Akshay Joshi b1f6664292 Added some logging for start-up time and changed the ping time from every second to 250 milliseconds. 2022-06-30 11:11:30 +05:30
Aditya Toshniwal cb635f6706 Removing dynamic module loading and replacing it with static loading. Fixes #7492
Gets rid of all occurrences and usage of get_own_javascripts since it is no longer used.
2022-06-30 11:06:50 +05:30
Akshay Joshi e46468321d Hide the tenant id from the scresnshot. 2022-06-29 15:20:29 +05:30
Yogesh Mahajan 4ad2fbf7bb Screenshot size updated.
refs #7506
2022-06-28 18:59:25 +05:30
Yogesh Mahajan 64e1e004ae Disables Azure PostgreSQL cloud deployment in Server mode.
refs #7506
2022-06-28 18:48:41 +05:30
Aditya Toshniwal 524626b895 Ensure that the file name should be reflected on the query tool for the new tab title. 2022-06-28 18:21:08 +05:30
Akshay Joshi b804f7db03 Reset the zoom before destroying the chart. 2022-06-28 14:31:08 +05:30
Yogesh Mahajan d4657dcd32 Fixed module import issue.
refs #7506
2022-06-28 11:28:55 +05:30
Akshay Joshi f905dc07cf Reset the zoom to original when chart object is created. Fixed an error on Windows. 2022-06-28 10:25:38 +05:30
Akshay Joshi 76dd163f0e Update version for release. 2022-06-27 19:38:36 +05:30
Yogesh Mahajan 659009c1de Fixed permission denied error when deploying PostgreSQL in Azure using Docker. Fixes #7506 2022-06-27 19:36:20 +05:30
Nikhil Mohite 35fb3bb38f Fixed the typo in the layout id for the Debugger.
refs #6132
2022-06-27 16:34:04 +05:30
Libor M 6da3a07bc0 Update Czech translation. 2022-06-27 16:32:59 +05:30
Identifier Anonymous 65da59c7f6 Update Japanese translation. 2022-06-27 16:30:59 +05:30
Domenico Sgarbossa c16837538e Update Italian translation. 2022-06-27 16:29:48 +05:30
Dave Page 3e0d8d1920 Fixes for el9 2022-06-27 10:53:11 +01:00
Akshay Joshi b743b21840 Update Dependencies. 2022-06-24 17:59:03 +05:30
Akshay Joshi 36eea6bdda Update message catalogs. 2022-06-24 17:57:07 +05:30
Nikhil Mohite 45adff6087 Set the position of the dialog to the center of the screen. 2022-06-24 15:14:10 +05:30
Nikhil Mohite 837e3e5e83 Fixed an issue where an error message is displayed when creating the new database. Fixes #7502 2022-06-24 15:09:48 +05:30
Yogesh Mahajan 23869cd61f Fixed an issue where users would not be able to authenticate in Azure on Linux platforms. Fixes #7495 2022-06-23 18:19:32 +05:30
Pradip Parkale e95eb14651 Fixed an issue where the connection wasn't being closed when the user switched
to a new connection and closed the query tool. Fixes #7461

Fixed the 'Show activity?' issue which was missed during Dashboard porting.
2022-06-23 18:15:16 +05:30
Akshay Joshi 2556771c32 The following issues were fixed in Graph Visualiser:
1) Allow the user to set the row limit and chart line width.
2) Zoom should only be applied to X-axis, not both.
3) On clicking the 'Generate' button, the chart should return to its original zoom level.
4) Negative values are not displayed.

refs #7485
2022-06-23 14:52:11 +05:30
Dave Page 1b9d219988 PEP-8 fix 2022-06-22 16:28:57 +01:00
Yogesh Mahajan ceb29547e2 Fixed an issue where cloud deployment failed for Azure on Windows. Fixes #7498 2022-06-22 19:47:48 +05:30
Yogesh Mahajan 95f63f6af8 Fixed feature tests. 2022-06-22 17:47:09 +05:30
Nikhil Mohite 74f7fee8b5 Fixed an issue where pgAdmin stuck while creating a new index. Fixes #7460 2022-06-22 17:38:07 +05:30
Nikhil Mohite d90b2621da Fixed an issue where passwords entered in the 'Connect To Server' dialog were truncated. Fixes #7440 2022-06-22 17:35:22 +05:30
Akshay Joshi 93bc1f3c57 Added support for visualise the graph using a Line chart in the query tool. Fixes #7485 2022-06-22 17:18:51 +05:30
Nikhil Mohite 41ceda01d0 Fixed an issue where Debugger is not getting started if arguments loaded from SQLite database. Fixes #6132 2022-06-22 11:16:50 +05:30
Akshay Joshi e8f0454b39 Downgrade NWjs to 0.62.2. The latest version does not work on Ubuntu 20.04.
refs #7442
2022-06-21 16:49:43 +05:30
Nikhil Mohite f97e294c80 Fixed jasmine test cases. 2022-06-21 10:47:08 +05:30
Nikhil Mohite 4e3783c544 Fixed the following issues in the debugger:
1. If debugger arguments are array debugger sets the null value to parameters.
 2. Popup screen is not being closed if debug Package procedure/Function and select Null option.
 3. Updated validation for debugger argument of the array type parameter.

refs #6132
2022-06-20 19:05:26 +05:30
Nikhil Mohite 2adca6bbc4 1) Added mouse over indication for breakpoint area in the Debugger. Fixes #2647
2) Added search text option to the Debugger panel. Fixes #2648
3) Port Debugger to React. Fixes #6132
2022-06-15 11:37:54 +05:30
Yogesh Mahajan 7e1e068370 Added capability to deploy PostgreSQL servers on Microsoft Azure. Fixes #7178 2022-06-15 11:22:42 +05:30
Nikhil Mohite 99c7a50fd6 Fixed an issue where the DB restriction check was not working for the collection node. Fixes #7453 2022-06-15 11:09:06 +05:30
Yogesh Mahajan 3297546e0a Added support for passing password using Docker Secret to Docker images. Fixes #7332 2022-06-15 11:07:56 +05:30
Khushboo Vashi 48336fd7f4 Fixed an issue when deploying instances on BigAnimal with the High Availability option not selected, it throws an error. 2022-06-15 11:00:40 +05:30
Pradip Parkale fbf7b4aec3 Fixed RESQL test cases introduced after Template patch. 2022-06-15 10:57:04 +05:30
Akshay Joshi db7d72cca8 Fixed linter error. 2022-06-13 18:37:37 +05:30
Akshay Joshi 3381516013 Upgrade Chartjs to the latest 3.8.0. Fixes #7469 2022-06-13 17:26:17 +05:30
Pradip Parkale 628e609e6a 1) Added the option 'Show template databases?' to display template databases regardless of the setting of 'Show system objects?'.
2) Ensure that the user should be able to create a template database using create dialog instead of updating it later.

Fixes #7351
2022-06-13 14:50:17 +05:30
Aditya Toshniwal 5c1493bd7e Fixed an issue where there is no setting to turn off notifications in the Query Tool. Fixes #7423 2022-06-13 14:32:07 +05:30
Aditya Toshniwal 725726f083 Ensure that the Query Editor should be focused when switching between query tool tabs. Fixes #7441 2022-06-13 14:26:01 +05:30
Aditya Toshniwal ea3203f466 Fixed and issue where 'Use spaces' not working in the query tool. Fixes #7443 2022-06-13 11:46:09 +05:30
Aditya Toshniwal f615ef30f9 Skip the history records if the JSON info can't be parsed instead of showing 'No history'. Fixes #7468 2022-06-13 11:43:26 +05:30
Nikhil Mohite fd1f71587f Fixed an issue where the Database restriction is not working. Fixes #7453 2022-06-09 17:03:21 +05:30
Khushboo Vashi e1c5a06bf0 Fixed some cloud deployment issues:
- Added High Availability option
 - Server group renamed to pgAdmin server group
 - Removed the Private option from Networking otherwise, it would not be possible to connect the server from pgAdmin.
2022-06-09 14:07:05 +05:30
Akshay Joshi 3bc373fff0 Upgraded and removed some unwanted packages. 2022-06-02 18:07:59 +05:30
Yogesh Mahajan 20bc17eb6f Updates documentation for the Traefik v2 container deployment. Fixes #7315 2022-06-02 17:37:57 +05:30
Akshay Joshi 4a17ad312f Update pgcli to latest release 3.4.1. Fixes #7411 2022-06-02 17:29:58 +05:30
367 changed files with 42002 additions and 33964 deletions

No files matched your search

+41 -31
View File
@@ -64,11 +64,15 @@ boto3 1.20.54
botocore 1.23.54 Apache License 2.0 https://github.com/boto/botocore
urllib3 1.26.9 MIT https://urllib3.readthedocs.io/
Werkzeug 2.0.3 BSD-3-Clause https://palletsprojects.com/p/werkzeug/
azure-mgmt-rdbms 10.1.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-mgmt-resource 21.0.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-mgmt-subscription 3.0.0 MIT License https://github.com/Azure/azure-sdk-for-python
azure-identity 1.9.0 MIT License https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/identity/azure-identity
NOTE: This report was generated using Python 3.10. Full information may not be
shown for Python modules that are not required with this version.
41 dependencies listed.
45 dependencies listed.
Javascript Dependencies
=======================
@@ -119,8 +123,8 @@ Name Version
@babel/plugin-transform-react-pure-annotations 7.16.7 MIT https://github.com/babel/babel.git
@babel/preset-react 7.13.13 MIT https://github.com/babel/babel.git
@babel/runtime 7.16.0 MIT https://github.com/babel/babel.git
@babel/runtime 7.17.8 MIT https://github.com/babel/babel.git
@babel/runtime 7.17.0 MIT https://github.com/babel/babel.git
@babel/runtime 7.17.8 MIT https://github.com/babel/babel.git
@babel/template 7.16.7 MIT https://github.com/babel/babel.git
@babel/template 7.14.5 MIT https://github.com/babel/babel.git
@babel/traverse 7.17.0 MIT https://github.com/babel/babel.git
@@ -129,17 +133,14 @@ Name Version
@babel/types 7.15.4 MIT https://github.com/babel/babel.git
@date-io/core 1.3.13 MIT https://github.com/dmtrKovalenko/date-io
@date-io/date-fns 1.3.13 MIT https://github.com/dmtrKovalenko/date-io
@emotion/cache 11.7.1 MIT https://github.com/emotion-js/emotion/tree/main/packages/cache
@emotion/cache 11.5.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/cache
@emotion/hash 0.8.0 MIT https://github.com/emotion-js/emotion/tree/master/packages/hash
@emotion/is-prop-valid 1.1.2 MIT https://github.com/emotion-js/emotion/tree/main/packages/is-prop-valid
@emotion/is-prop-valid 0.8.8 MIT https://github.com/emotion-js/emotion/tree/master/packages/is-prop-valid
@emotion/memoize 0.7.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/memoize
@emotion/memoize 0.7.4 MIT https://github.com/emotion-js/emotion/tree/master/packages/memoize
@emotion/react 11.5.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/react
@emotion/serialize 1.0.2 MIT https://github.com/emotion-js/emotion/tree/main/packages/serialize
@emotion/sheet 1.0.3 MIT https://github.com/emotion-js/emotion/tree/main/packages/sheet
@emotion/sheet 1.1.0 MIT https://github.com/emotion-js/emotion/tree/main/packages/sheet
@emotion/stylis 0.8.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/stylis
@emotion/unitless 0.7.5 MIT https://github.com/emotion-js/emotion/tree/master/packages/unitless
@emotion/utils 1.0.0 MIT https://github.com/emotion-js/emotion/tree/master/packages/utils
@@ -153,18 +154,9 @@ Name Version
@material-ui/system 4.12.1 MIT https://github.com/mui-org/material-ui.git
@material-ui/types 5.1.0 MIT https://github.com/mui-org/material-ui.git
@material-ui/utils 4.11.2 MIT https://github.com/mui-org/material-ui.git
@mui/base 5.0.0-alpha.74 MIT https://github.com/mui/material-ui.git
@mui/icons-material 5.5.1 MIT https://github.com/mui/material-ui.git
@mui/material 5.5.3 MIT https://github.com/mui/material-ui.git
@mui/private-theming 5.5.3 MIT https://github.com/mui/material-ui.git
@mui/styled-engine 5.5.2 MIT https://github.com/mui/material-ui.git
@mui/system 5.5.3 MIT https://github.com/mui/material-ui.git
@mui/types 7.1.3 MIT https://github.com/mui/material-ui.git
@mui/utils 5.5.3 MIT https://github.com/mui/material-ui.git
@nodelib/fs.scandir 2.1.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir
@nodelib/fs.stat 2.0.5 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat
@nodelib/fs.walk 1.2.8 MIT https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk
@popperjs/core 2.11.4 MIT https://github.com/popperjs/popper-core.git
@popperjs/core 2.10.2 MIT https://github.com/popperjs/popper-core.git
@projectstorm/geometry 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@projectstorm/react-canvas-core 6.6.1 MIT https://github.com/projectstorm/react-diagrams.git
@@ -187,9 +179,7 @@ Name Version
@types/react 16.14.10 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react 16.14.20 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react-dom 16.9.14 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react-is 17.0.3 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react-transition-group 4.4.1 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/react-transition-group 4.4.4 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/scheduler 0.16.2 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
@types/styled-jsx 2.2.9 MIT https://github.com/DefinitelyTyped/DefinitelyTyped.git
ajv 8.9.0 MIT https://github.com/ajv-validator/ajv.git
@@ -205,6 +195,7 @@ aspen-core 1.0.5
aspen-decorations 1.1.1 MIT git+https://github.com/neeksandhu/aspen-decorations.git
aspen-tree-model 1.0.5 MIT git+https://github.com/neeksandhu/aspen-tree-model.git
async 2.6.4 MIT https://github.com/caolan/async.git
attr-accept 2.2.2 MIT https://github.com/react-dropzone/attr-accept.git
axios 0.21.4 MIT https://github.com/axios/axios.git
babel-plugin-styled-components 1.13.3 MIT https://github.com/styled-components/babel-plugin-styled-components.git
babel-plugin-syntax-jsx 6.18.0 MIT https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-jsx
@@ -236,21 +227,20 @@ camelcase-keys 7.0.2
camelize 1.0.0 MIT git://github.com/substack/camelize.git
caniuse-api 3.0.0 MIT https://github.com/nyalab/caniuse-api.git
chalk 2.4.2 MIT https://github.com/chalk/chalk.git
chart.js 2.9.4 MIT https://github.com/chartjs/Chart.js.git
chartjs-color 2.4.1 MIT https://github.com/chartjs/chartjs-color.git
chartjs-color-string 0.6.0 MIT https://github.com/chartjs/chartjs-color-string.git
chart.js 3.8.0 MIT https://github.com/chartjs/Chart.js.git
chartjs-plugin-zoom 1.2.1 MIT https://github.com/chartjs/chartjs-plugin-zoom.git
classnames 2.3.1 MIT https://github.com/JedWatson/classnames.git
closest 0.0.1 MIT https://github.com/ForbesLindesay/closest.git
clsx 1.1.1 MIT https://github.com/lukeed/clsx.git
codemirror 5.63.3 MIT https://github.com/codemirror/CodeMirror.git
color-convert 1.9.3 MIT https://github.com/Qix-/color-convert.git
color-name 1.1.3 MIT git@github.com:dfcreative/color-name.git
color-name 1.1.4 MIT git@github.com:colorjs/color-name.git
colord 2.9.1 MIT https://github.com/omgovich/colord.git
commander 7.2.0 MIT https://github.com/tj/commander.js.git
concat-map 0.0.1 MIT git://github.com/substack/node-concat-map.git
context-menu 2.0.0 MIT https://github.com/chipto/context-menu.git
convert-source-map 1.8.0 MIT git://github.com/thlorenz/convert-source-map.git
convert-units 2.3.4 MIT git://github.com/ben-ng/convert-units.git
core-js 3.19.1 MIT https://github.com/zloirock/core-js.git
css-color-names 1.0.1 MIT git://github.com/bahamas10/css-color-names.git
css-line-break 2.0.1 MIT git+ssh://git@github.com/niklasvh/css-line-break.git
@@ -265,11 +255,9 @@ cssnano-utils 2.0.1
csso 4.2.0 MIT https://github.com/css/csso.git
csstype 2.6.18 MIT https://github.com/frenic/csstype
csstype 3.0.9 MIT https://github.com/frenic/csstype
csstype 3.0.11 MIT https://github.com/frenic/csstype
dagre 0.8.5 MIT https://github.com/dagrejs/dagre.git
date-fns 2.25.0 MIT https://github.com/date-fns/date-fns
debug 4.3.2 MIT git://github.com/visionmedia/debug.git
debug 4.3.3 MIT git://github.com/debug-js/debug.git
debug 4.3.4 MIT git://github.com/debug-js/debug.git
decamelize 5.0.1 MIT https://github.com/sindresorhus/decamelize.git
decamelize 1.2.0 MIT https://github.com/sindresorhus/decamelize.git
decamelize-keys 1.1.0 MIT https://github.com/dsblv/decamelize-keys.git
@@ -279,7 +267,6 @@ dir-glob 3.0.1
dom-align 1.12.2 MIT git@github.com:yiminghe/dom-align.git
dom-helpers 5.2.1 MIT git+https://github.com/react-bootstrap/dom-helpers.git
dom-serializer 1.3.2 MIT git://github.com/cheeriojs/dom-renderer.git
dropzone 5.9.3 MIT https://github.com/dropzone/dropzone.git
emojis-list 3.0.0 MIT git+https://github.com/kikobeats/emojis-list.git
engine.io-client 6.0.2 MIT https://github.com/socketio/engine.io-client.git
engine.io-parser 5.0.3 MIT git@github.com:socketio/engine.io-parser.git
@@ -290,6 +277,7 @@ fast-deep-equal 3.1.3
fast-glob 3.2.11 MIT https://github.com/mrmlnc/fast-glob.git
fast-json-stable-stringify 2.1.0 MIT git://github.com/epoberezkin/fast-json-stable-stringify.git
fast-memoize 2.5.2 MIT git+https://github.com/caiogondim/fast-memoize.git
file-selector 0.6.0 MIT https://github.com/react-dropzone/file-selector.git
filename-reserved-regex 2.0.0 MIT https://github.com/sindresorhus/filename-reserved-regex.git
fill-range 7.0.1 MIT https://github.com/jonschlinkert/fill-range.git
find-up 5.0.0 MIT https://github.com/sindresorhus/find-up.git
@@ -299,6 +287,7 @@ gensync 1.0.0-beta.2
globals 11.12.0 MIT https://github.com/sindresorhus/globals.git
globby 12.2.0 MIT https://github.com/sindresorhus/globby.git
graphlib 2.1.8 MIT https://github.com/dagrejs/graphlib.git
hammerjs 2.0.8 MIT git://github.com/hammerjs/hammer.js.git
hard-rejection 2.1.0 MIT https://github.com/sindresorhus/hard-rejection.git
has 1.0.3 MIT git://github.com/tarruda/has.git
has-cors 1.1.0 MIT git://github.com/component/has-cors.git
@@ -327,7 +316,7 @@ is-unc-path 1.0.0
javascript-natural-sort 0.7.1 MIT https://github.com/Bill4Time/javascript-natural-sort.git
jquery 3.6.0 MIT https://github.com/jquery/jquery.git
jquery-contextmenu 2.9.2 MIT git://github.com/swisnl/jQuery-contextMenu.git
jquery-ui 1.13.0 MIT git://github.com/jquery/jquery-ui.git
jquery-ui 1.13.2 MIT git://github.com/jquery/jquery-ui.git
js-tokens 4.0.0 MIT https://github.com/lydell/js-tokens.git
jsbn 1.1.0 MIT https://github.com/andyperlitch/jsbn.git
jsesc 2.5.2 MIT https://github.com/mathiasbynens/jsesc.git
@@ -355,7 +344,26 @@ loader-utils 2.0.2
loader-utils 1.4.0 MIT https://github.com/webpack/loader-utils.git
locate-path 6.0.0 MIT https://github.com/sindresorhus/locate-path.git
lodash 4.17.21 MIT https://github.com/lodash/lodash.git
lodash._basebind 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._basecreate 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._basecreatecallback 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._basecreatewrapper 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._createwrapper 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._objecttypes 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._renative 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._setbinddata 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._shimkeys 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash._slice 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.bind 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.foreach 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.forown 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.identity 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.isfunction 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.isobject 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.keys 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.memoize 4.1.2 MIT https://github.com/lodash/lodash.git
lodash.noop 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.support 2.3.0 MIT https://github.com/lodash/lodash-cli.git
lodash.uniq 4.5.0 MIT https://github.com/lodash/lodash.git
loose-envify 1.4.0 MIT git://github.com/zertosh/loose-envify.git
lunr 0.7.2 MIT https://github.com/olivernn/lunr.js.git
@@ -376,9 +384,8 @@ ml-array-min 1.2.2
ml-array-rescale 1.3.6 MIT git+https://github.com/mljs/array.git
ml-matrix 6.8.0 MIT https://github.com/mljs/matrix.git
mobius1-selectr 2.4.13 MIT git+https://github.com/Mobius1/Selectr.git
moment 2.29.3 MIT https://github.com/moment/moment.git
moment 2.29.4 MIT https://github.com/moment/moment.git
moment-timezone 0.5.34 MIT https://github.com/moment/moment-timezone.git
moment-timezone 0.5.33 MIT https://github.com/moment/moment-timezone.git
ms 2.1.2 MIT https://github.com/zeit/ms.git
nanoid 3.3.2 MIT https://github.com/ai/nanoid.git
nanoid 3.2.0 MIT https://github.com/ai/nanoid.git
@@ -386,7 +393,7 @@ nanopop 2.1.0
node-releases 2.0.1 MIT https://github.com/chicoxyzzy/node-releases.git
normalize-url 6.1.0 MIT https://github.com/sindresorhus/normalize-url.git
notificar 1.0.1 MIT git+https://github.com/neeksandhu/notificar.git
notistack 2.0.5 MIT git+https://github.com/iamhosseindhv/notistack.git
notistack 1.0.10 MIT git+https://github.com/iamhosseindhv/notistack.git
object-assign 4.1.1 MIT https://github.com/sindresorhus/object-assign.git
p-limit 3.1.0 MIT https://github.com/sindresorhus/p-limit.git
p-locate 5.0.0 MIT https://github.com/sindresorhus/p-locate.git
@@ -437,6 +444,7 @@ postcss-svgo 5.0.3
postcss-unique-selectors 5.0.1 MIT https://github.com/cssnano/cssnano.git
postcss-value-parser 4.1.0 MIT https://github.com/TrySound/postcss-value-parser.git
prop-types 15.7.2 MIT https://github.com/facebook/prop-types.git
prop-types 15.8.1 MIT https://github.com/facebook/prop-types.git
punycode 2.1.1 MIT https://github.com/bestiejs/punycode.js.git
queue-microtask 1.2.3 MIT git://github.com/feross/queue-microtask.git
quick-lru 5.1.1 MIT https://github.com/sindresorhus/quick-lru.git
@@ -453,6 +461,7 @@ rc-util 5.17.0
re-resizable 6.9.1 MIT https://github.com/bokuweb/react-resizable-box.git
react 16.14.0 MIT git+https://github.com/facebook/react.git
react 17.0.2 MIT https://github.com/facebook/react.git
react-aspen 1.2.0 MIT https://github.com/neeksandhu/react-aspen.git
react-aspen 1.1.1 MIT https://github.com/neeksandhu/react-aspen.git
react-checkbox-tree 1.7.2 MIT https://github.com/jakezatecky/react-checkbox-tree
react-data-grid 7.0.0-beta.12 MIT https://github.com/adazzle/react-data-grid.git
@@ -460,6 +469,7 @@ react-dom 16.14.0
react-dom 17.0.2 MIT https://github.com/facebook/react.git
react-draggable 4.4.4 MIT https://github.com/react-grid-layout/react-draggable.git
react-draggable 4.4.3 MIT https://github.com/mzabriskie/react-draggable.git
react-dropzone 14.2.1 MIT https://github.com/react-dropzone/react-dropzone.git
react-input-autosize 3.0.0 MIT https://github.com/JedWatson/react-input-autosize.git
react-is 16.13.1 MIT https://github.com/facebook/react.git
react-is 17.0.2 MIT https://github.com/facebook/react.git
@@ -501,7 +511,6 @@ strip-comments 2.0.1
strip-indent 4.0.0 MIT https://github.com/sindresorhus/strip-indent.git
styled-components 5.3.3 MIT git+https://github.com/styled-components/styled-components.git
stylehacks 5.0.1 MIT https://github.com/cssnano/cssnano.git
stylis 4.0.13 MIT https://github.com/thysultan/stylis.js
stylis 4.0.10 MIT https://github.com/thysultan/stylis.js
supports-color 5.5.0 MIT https://github.com/chalk/supports-color.git
supports-color 7.2.0 MIT https://github.com/chalk/supports-color.git
@@ -557,6 +566,7 @@ postcss-modules-scope 3.0.0
postcss-modules-values 4.0.0 ISC git+https://github.com/css-modules/postcss-modules-values.git
react-timer-hook 3.0.5 ISC git+https://github.com/amrlabib/react-timer-hook.git
semver 7.3.5 ISC https://github.com/npm/node-semver
semver 7.3.7 ISC https://github.com/npm/node-semver.git
semver 6.3.0 ISC https://github.com/npm/node-semver
vanilla-picker 2.12.1 ISC https://github.com/Sphinxxxx/vanilla-picker.git
yallist 4.0.0 ISC git+https://github.com/isaacs/yallist.git
@@ -606,9 +616,9 @@ pako 1.0.11
precond 0.2.3 MIT* https://github.com/MathieuTurcotte/node-precond.git
webcabin-docker 2.2.5 MIT* Unknown
spdx-exceptions 2.3.0 CC-BY-3.0 https://github.com/kemitchell/spdx-exceptions.json.git
tablesorter 2.31.3 (MIT OR GPL-2.0) git://github.com/Mottie/tablesorter.git
tslib 2.4.0 0BSD https://github.com/Microsoft/tslib.git
tslib 2.3.0 0BSD https://github.com/Microsoft/tslib.git
type-fest 1.4.0 (MIT OR CC0-1.0) https://github.com/sindresorhus/type-fest.git
534 dependencies listed.
540 dependencies listed.
+10 -4
View File
@@ -273,10 +273,16 @@ REM Main build sequence Ends
REM YARN END
REM WGET
FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i"
:GET_NW
wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
REM Comment out the below for loop as the latest version having
REM some problem https://github.com/nwjs/nw.js/issues/7902, so for
REM the time being hardcoded the version to 0.62.2
REM FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i"
REM :GET_NW
REM wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
REM IF %ERRORLEVEL% NEQ 0 GOTO GET_NW
SET "NW_VERSION=0.62.2"
wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip"
tar -C "%TMPDIR%" -xvf "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" || EXIT /B 1
REM WGET END
+2 -2
View File
@@ -19,7 +19,7 @@ the restore point to add* to provide a descriptive name for the restore point.
For more information about using a restore point as a recovery target, please
see the
`PostgreSQL documentation <https://www.postgresql.org/docs/current/recovery-target-settings.html#RECOVERY-TARGET-NAME>`_.
`PostgreSQL documentation <https://www.postgresql.org/docs/current/runtime-config-wal.html#RUNTIME-CONFIG-WAL-RECOVERY-TARGET>`_.
* Click the *OK* button to save the restore point.
* Click the *Cancel* button to exit without saving work.
* Click the *Cancel* button to exit without saving work.
+5 -2
View File
@@ -36,5 +36,8 @@ Use the *Change Password* dialog to change your password:
* Enter the desired password for in the *New Password* field.
* Re-enter the new password in the *Confirm Password* field.
Click the *OK* button to change your password; click *Cancel* to exit the dialog
without changing your password.
Click the *Save* button to change your password.
Click the *Close* button to exit without changing your password.
Click the *Reset* button to reset the values.
+120
View File
@@ -0,0 +1,120 @@
.. _cloud_azure_postgresql:
******************************************
`Azure PostgreSQL Cloud Deployment`:index:
******************************************
To deploy a PostgreSQL server on the Azure cloud, follow the below steps.
.. image:: images/cloud_azure_provider.png
:alt: Cloud Deployment
:align: center
Once you launch the tool, select the Azure PostgreSQL option.
Click on the *Next* button to proceed further.
.. image:: images/cloud_azure_credentials.png
:alt: Cloud Deployment
:align: center
In the Credentials dialog, select authentication method either interactive
browser or Azure CLI. Azure CLI will use the currently logged in identity
through the Azure CLI on the local machine. Interactive Browser will
open a browser window to authenticate a user interactively.
Use the *Azure tenant* id to specify Azure tenant ID against which user
is authenticated.
Clicking the *Click here to authenticate yourself to Microsoft Azure*
button, user will be redirected to the Microsoft Azure authentication page in a
new browser tab if the Interactive Browser option is selected.
Azure CLI authentication can be used only in Desktop mode.
Once authentication is completed, click on the next button to proceed.
.. image:: images/cloud_azure_instance.png
:alt: Cloud Deployment
:align: center
Use the fields from the Instance Specification tab to specify the Instance
details.
* Use the *Cluster name* field to add a name for the PostgreSQL
server; the name specified will be displayed in the *Browser* tree control too.
* Select a subscription from the *Subscription* options which are populated based
on user access levels in Azure portal.
* Select the resource group from *Resource Group* dropdown under which the
PostgreSQL instance will be created.
* Select the location to deploy PostgreSQL instance from *Location*
options.
* Select the availability zone in specified region to deploy PostgreSQL
instance from *Availability zone* options.
* Use *Database version* options to specify PostgreSQL database version.
* Use the *Instance class* field to allocate the computational, network, and
memory capacity required by planned workload of this DB instance.
* Use the *Instance type* field to select the instance type.
* Use the *Storage size* option to specify the storage capacity.
.. image:: images/cloud_azure_network.png
:alt: Cloud Deployment
:align: center
* Use the *Public IP* field to specify the List of IP Addresses or range of
IP Addresses (start IP Address - end IP address) from which inbound traffic
should be accepted. Add multiple IP addresses/ranges separated with commas,
for example: "192.168.0.50, 192.168.0.100 - 192.168.0.200"
* User *Zone redundant high availability* option to specify High Availability
option. Zone redundant high availability deploys a standby replica in a
different zone.
The Burstable instance type does not support high availability.
.. image:: images/cloud_azure_database.png
:alt: Cloud Deployment
:align: center
Use the fields from the Database Details tab to specify the PostgreSQL database details.
* Use the drop-down list in the *pgAdmin server group* field to select the parent
node for the server; the server will be displayed in the *Browser* tree
control within the specified group.
* Use the *Admin username* field to add the database name for the PostgreSQL
server.
* Use the *Password* field to provide a password that will be supplied when
authenticating with the server.
* Use the *Confirm password* field to repeat the password.
Click on the next button to proceed.
.. image:: images/cloud_azure_review.png
:alt: Cloud Deployment
:align: center
At the end, review the instance details that you provided. Click on Finish
button to deploy the instance on Azure PostgreSQL.
Once you click on the finish, one background process will start which will
deploy the instance in the cloud and monitor the progress of the deployment.
.. image:: images/cloud_azure_bg_process_watcher.png
:alt: Cloud Deployment
:align: center
The Server will be added to the tree with the cloud deployment icon. Once the
deployment is done, the server details will be updated.
.. image:: images/cloud_deployment_tree.png
:alt: Cloud Deployment Provider
:align: center
+2 -1
View File
@@ -15,4 +15,5 @@ To launch the *Cloud Deployment...* tool, right click on the *Server Group* or
:maxdepth: 2
cloud_aws_rds
cloud_edb_biganimal
cloud_edb_biganimal
cloud_azure_postgresql
+22 -1
View File
@@ -52,6 +52,14 @@ to login to pgAdmin. This variable is required and must be set at launch time.
This is the password used when setting up the initial administrator account to
login to pgAdmin. This variable is required and must be set at launch time.
**PGADMIN_DEFAULT_PASSWORD_FILE**
This is the password used when setting up the initial administrator account to
login to pgAdmin. This value should be set to *docker secret* in order to set
the password. This variable is supported in docker swarm environment or while creating
container with docker compose. PGADMIN_DEFAULT_PASSWORD or PGADMIN_DEFAULT_PASSWORD_FILE
variable is required and must be set at launch time.
**PGADMIN_DISABLE_POSTFIX**
*Default: <null>*
@@ -414,7 +422,7 @@ If you wish to host pgAdmin under a subdirectory using Traefik, the
configuration changes are typically made to the way the container is launched
and not to Traefik itself. For example, to host pgAdmin under */pgadmin4/*
instead of at the root directory, the Traefik configuration above may be used if
the container is launched like this:
the container is launched like this while using the version v1 of Traefik:
.. code-block:: bash
@@ -430,3 +438,16 @@ The *SCRIPT_NAME* environment variable has been set to tell the container it is
being hosted under a subdirectory (in the same way as the *X-Script-Name* header
is used with Nginx), and a label has been added to tell Traefik to route
requests under the subdirectory to this container.
While using the Traefik configuration for version v2 for hosting pgAdmin under subdirectory
the container is typically launched per the example below:
.. code-block:: bash
docker pull dpage/pgadmin4
docker run --name "pgadmin4" \
-e "PGADMIN_DEFAULT_EMAIL=user@domain.com" \
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-e "SCRIPT_NAME=/pgadmin4" \
-l "traefik.frontend.pgadmin4.rule=Host(`host.example.com`) && PathPrefix(`/pgadmin4`)" \
-d dpage/pgadmin4
+1
View File
@@ -46,6 +46,7 @@ Use the *Definition* tab to set properties for the database:
* Specify a connection limit in the *Connection Limit* field to configure the
maximum number of connection requests. The default value (*-1*) allows
unlimited connections to the database.
* If the *templates?* is set to true, then database will be a template database.
Click the *Security* tab to continue.
+2
View File
@@ -117,6 +117,8 @@ The toolbar options are:
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Stop* | Click the *Stop* icon to halt the execution of a program. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
| *Help* | Click the *Help* icon to open debugger documentation. |
+-------------------------+-----------------------------------------------------------------------------------------------------------+
The top panel of the debugger window displays the program body; click in the
grey margin next to a line number to add a breakpoint. The highlighted line in
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

+29 -31
View File
@@ -8,39 +8,36 @@ Use the *Import/Export data* dialog to copy data from a table to a file, or copy
data from a file into a table.
The *Import/Export data* dialog organizes the import/export of data through the
*Options* and *Columns* tabs.
*General*, *Options* and *Columns* tabs.
.. image:: images/import_export_general.png
:alt: Import Export data dialog general tab
:align: center
Use the fields in the *General* tab to specify import and export preferences:
* Move the *Import/Export* switch to the *Import* position to specify that the
server should import data to a table from a file. The default is *Import*.
* Enter the name of the source or target file in the *Filename* field.
Optionally, select the *Browser* icon (ellipsis) to the right to navigate
into a directory and select a file.
* Use the drop-down listbox in the *Format* field to specify the file type.
Select:
* *binary* for a .bin file.
* *csv* for a .csv file.
* *text* for a .txt file.
* Use the drop-down listbox in the *Encoding* field to specify the type of
character encoding.
.. image:: images/import_export_options.png
:alt: Import Export data dialog options tab
:align: center
Use the fields in the *Options* tab to specify import and export preferences:
* Move the *Import/Export* switch to the *Import* position to specify that the
server should import data to a table from a file. The default is *Export*.
* Use the fields in the *File Info* field box to specify information about the
source or target file:
* Enter the name of the source or target file in the *Filename* field.
Optionally, select the *Browser* icon (ellipsis) to the right to navigate
into a directory and select a file.
* Use the drop-down listbox in the *Format* field to specify the file type.
Select:
* *binary* for a .bin file.
* *csv* for a .csv file.
* *text* for a .txt file.
* Use the drop-down listbox in the *Encoding* field to specify the type of
character encoding.
.. image:: images/import_export_miscellaneous.png
:alt: Import Export data dialog miscellaneous tab
:align: center
* Use the fields in the *Miscellaneous* field box to specify additional
information:
* Use the fields in the *Options* tab to specify additional information:
* Move the *OID* switch to the *Yes* position to include the *OID* column.
The *OID* is a system-assigned value that may not be modified. The default
@@ -57,6 +54,8 @@ Use the fields in the *Options* tab to specify import and export preferences:
be a single quote or a double quote.
* Specify a character that should appear before a data character that matches
the *QUOTE* value in the *Escape* field.
* Use the *NULL Strings* field to specify a string that will represent a null
value within the source or target file.
Click the *Columns* tab to continue.
@@ -71,9 +70,8 @@ or exported:
columns from the drop-down listbox. To delete a selection, click the *x* to
the left of the column name. Click an empty spot inside the field to access
the drop-down list.
* Use the *NULL Strings* field to specify a string that will represent a null
value within the source or target file.
* If enabled, click inside the *Not null columns* field to select one or more
* If enabled, click inside the *NOT NULL columns* field to select one or more
columns that will not be checked for a NULL value. To delete a column, click
the *x* to the left of the column name.
+54 -22
View File
@@ -1,3 +1,4 @@
.. _preferences:
***************************
@@ -68,6 +69,8 @@ Use the fields on the *Display* panel to specify general display preferences:
* When the *Show system objects?* switch is set to *True*, the client will
display system objects such as system schemas (for example, *pg_temp*) or
system columns (for example, *xmin* or *ctid*) in the tree control.
* When the *Show template databases?* switch is set to *True*, the client will
display template databases.
Use the fields on the *Keyboard shortcuts* panel to configure shortcuts for the
main window navigation:
@@ -128,12 +131,25 @@ The Dashboards Node
Expand the *Dashboards* node to specify your dashboard display preferences.
.. image:: images/preferences_dashboard_graphs.png
:alt: Preferences dialog dashboard graph options
.. image:: images/preferences_dashboard_display.png
:alt: Preferences dialog dashboard display options
:align: center
Use the fields on the *Graphs* panel to specify your display preferences for
the graphs on the *Dashboard* tab:
* Set the warning and alert threshold value to highlight the long-running
queries on the dashboard.
* When the *Show activity?* switch is set to *True*, activity tables will be
displayed on dashboards.
* When the *Show graphs?* switch is set to *True*, graphs will be displayed on
dashboards.
.. image:: images/preferences_dashboard_refresh.png
:alt: Preferences dialog dashboard refresh options
:align: center
Use the fields on the *Refresh rates* panel to specify your refersh rates
preferences for the graphs on the *Dashboard* tab:
* Use the *Block I/O statistics refresh rate* field to specify the number of
seconds between block I/O statistic samples displayed in graphs.
@@ -150,24 +166,6 @@ the graphs on the *Dashboard* tab:
* Use the *Tuples out refresh rate* field to specify the number of seconds
between tuples-out samples displayed in graphs.
.. image:: images/preferences_dashboard_display.png
:alt: Preferences dialog dashboard display options
:align: center
* Set the warning and alert threshold value to highlight the long-running
queries on the dashboard.
* When the *Show activity?* switch is set to *True*, activity tables will be
displayed on dashboards.
* When the *Show graph data points?* switch is set to *True*, data points will
be visible on graph lines.
* When the *Show graphs?* switch is set to *True*, graphs will be displayed on
dashboards.
* When the *Show mouse hover tooltip?* switch is set to *True*, a tooltip will
appear on mouse hover on the graph lines giving the data point details.
The Debugger Node
@@ -194,6 +192,27 @@ ERD Tool window navigation:
:alt: Preferences dialog erd keyboard shortcuts section
:align: center
The Graphs Node
***************
Expand the *Graphs* node to specify your Graphs display preferences.
.. image:: images/preferences_dashboard_graphs.png
:alt: Preferences dialog dashboard graph options
:align: center
* Use the *Chart line width* field to specify the width of the lines on the
line chart.
* When the *Show graph data points?* switch is set to *True*, data points will
be visible on graph lines.
* When the *Show mouse hover tooltip?* switch is set to *True*, a tooltip will
appear on mouse hover on the graph lines giving the data point details.
* When the *Use different data point styles?* switch is set to *True*,
data points will be visible in a different style on each graph lines.
The Miscellaneous Node
**********************
@@ -271,6 +290,9 @@ preferences for the Query Editor tool.
Use the fields on the *Auto Completion* panel to set the auto completion options.
* When the *Autocomplete on key press* switch is set to *True* then autocomplete
will be available on key press along with CTRL/CMD + Space. If it is set to
*False* then autocomplete is only activated when CTRL/CMD + Space is pressed.
* When the *Keywords in uppercase* switch is set to *True* then keywords are
shown in upper case.
@@ -353,6 +375,16 @@ a graphical EXPLAIN.
* When the *Verbose output?* switch is set to *True*, graphical explain details
will include extended information about the query execution plan.
.. image:: images/preferences_graph_visualiser.png
:alt: Preferences dialog sqleditor graph visualiser section
:align: center
Use the fields on the *Graph Visualiser* panel to specify the settings
related to graphs.
* Use the *Row Limit* field to specify the maximum number of rows that will
be plotted on a chart.
.. image:: images/preferences_sql_options.png
:alt: Preferences dialog sqleditor options section
:align: center
+142 -30
View File
@@ -106,6 +106,45 @@ fully qualified with schema. Double quotes will be added if required.
For functions and procedures, the function name along with parameter names will
be pasted in the Query Tool.
Query History Panel
*******************
Use the *Query History* tab to review activity for the current session:
.. image:: images/query_output_history.png
:alt: Query tool history panel
:align: center
The Query History tab displays information about recent commands:
* The date and time that a query was invoked.
* The text of the query.
* The number of rows returned by the query.
* The amount of time it took the server to process the query and return a
result set.
* Messages returned by the server (not noted on the *Messages* tab).
* The source of the query (indicated by icons corresponding to the toolbar).
You can show or hide the queries generated internally by pgAdmin (during
'View/Edit Data' or 'Save Data' operations).
You can remove a single query by selecting it and clicking on the *Remove*
button. If you would like to remove all of the histories from the
*Query History* tab, then click on the *Remove All* button.
By using the *Copy* button, you can copy a particular query to the clipboard,
and with the *Copy to Query Editor* button, you can copy a specific query to
the Query Editor tab. During this operation, all existing content in the
Query Editor is erased.
Query History is maintained across sessions for each database on a per-user
basis when running in Query Tool mode. In View/Edit Data mode, history is not
retained. By default, the last 20 queries are stored for each database. This
can be adjusted in ``config_local.py`` or ``config_system.py`` (see the
:ref:`config.py <config_py>` documentation) by overriding the
`MAX_QUERY_HIST_STORED` value. See the :ref:`Deployment <deployment>` section
for more information.
The Data Output Panel
*********************
@@ -288,44 +327,117 @@ particular channel.
:alt: Query tool notifications panel
:align: center
Query History Panel
*******************
Graph Visualiser Panel
**********************
Use the *Query History* tab to review activity for the current session:
Click the Graph Visualiser button in the toolbar to generate the *Graphs* of
the query results. The graph visualiser supports Line Charts, Stacked Line Charts,
Bar Charts, Stacked Bar Charts, and Pie Charts.
.. image:: images/query_output_history.png
:alt: Query tool history panel
.. image:: images/query_graph_visualiser_panel.png
:alt: Query tool graph visualiser panel
:align: center
The Query History tab displays information about recent commands:
* Graph Type
* The date and time that a query was invoked.
* The text of the query.
* The number of rows returned by the query.
* The amount of time it took the server to process the query and return a
result set.
* Messages returned by the server (not noted on the *Messages* tab).
* The source of the query (indicated by icons corresponding to the toolbar).
Choose the type of the graph that you would like to generate.
You can show or hide the queries generated internally by pgAdmin (during
'View/Edit Data' or 'Save Data' operations).
.. image:: images/query_graph_type.png
:alt: Query tool graph visualiser graph type
:align: center
You can remove a single query by selecting it and clicking on the *Remove*
button. If you would like to remove all of the histories from the
*Query History* tab, then click on the *Remove All* button.
* X Axis
By using the *Copy* button, you can copy a particular query to the clipboard,
and with the *Copy to Query Editor* button, you can copy a specific query to
the Query Editor tab. During this operation, all existing content in the
Query Editor is erased.
Choose the column whose value you wish to display on X-axis from the *X Axis*
dropdown. Select the *<Row Number>* option to use the number of rows as labels
on the X-axis.
Query History is maintained across sessions for each database on a per-user
basis when running in Query Tool mode. In View/Edit Data mode, history is not
retained. By default, the last 20 queries are stored for each database. This
can be adjusted in ``config_local.py`` or ``config_system.py`` (see the
:ref:`config.py <config_py>` documentation) by overriding the
`MAX_QUERY_HIST_STORED` value. See the :ref:`Deployment <deployment>` section
for more information.
.. image:: images/query_graph_xaxis.png
:alt: Query tool graph visualiser xaxis
:align: center
* Y Axis
Choose the columns whose value you wish to display on Y-axis from the *Y Axis*
dropdown. Users can choose multiple columns. Choose the *<Select All>* option
from the drop-down menu to select all the columns.
.. image:: images/query_graph_yaxis.png
:alt: Query tool graph visualiser yaxis
:align: center
* Download and Zoom button
Zooming is performed by clicking and selecting an area over the chart with the
mouse. The *Zoom to original* button will bring you back to the original zoom
level.
Click the *Download* button on the button bar to download the chart.
.. image:: images/query_graph_toolbar.png
:alt: Query tool graph visualiser toolbar
:align: center
Line Chart
==========
The *Line Chart* can be generated by selecting the 'Line Chart'
from the Graph Type drop-down, selecting the X-axis and the Y-axis, and
clicking on the 'Generate' button. Below is an example of a chart of employee
names and their salaries.
.. image:: images/query_line_chart.png
:alt: Query tool graph visualiser line chart
:align: center
Set *Use different data point styles?* option to true in the :ref:`preferences`,
to show data points in a different style on each graph lines.
Stacked Line Chart
==================
The *Stacked Line Chart* can be generated by selecting the 'Stacked Line Chart'
from the Graph Type drop-down, selecting the X-axis and the Y-axis, and
clicking on the 'Generate' button.
.. image:: images/query_stacked_line_chart.png
:alt: Query tool graph visualiser stacked line chart
:align: center
Bar Chart
==========
The *Bar Chart* can be generated by selecting the 'Bar Chart'
from the Graph Type drop-down, selecting the X-axis and the Y-axis, and
clicking on the 'Generate' button.
.. image:: images/query_bar_chart.png
:alt: Query tool graph visualiser bar chart
:align: center
Stacked Bar Chart
=================
The *Stacked Bar Chart* can be generated by selecting the 'Stacked Bar Chart'
from the Graph Type drop-down, selecting the X-axis and the Y-axis, and
clicking on the 'Generate' button.
.. image:: images/query_stacked_bar_chart.png
:alt: Query tool graph visualiser stacked bar chart
:align: center
Pie Chart
=========
The *Pie Chart* can be generated by selecting the 'Pie Chart'
from the Graph Type drop-down, selecting the Label and Value, and
clicking on the 'Generate' button.
.. image:: images/query_pie_chart.png
:alt: Query tool graph visualiser pie chart
:align: center
Connection Status
*****************
@@ -382,6 +494,6 @@ The server will prompt you for confirmation to delete the macro.
To execute a macro, simply select the appropriate shortcut keys, or select it from the *Macros* menu.
.. image:: images/query_tool_macros_execution.png
.. image:: images/query_output_data.png
:alt: Query Tool Macros Execution
:align: center
+2
View File
@@ -191,6 +191,8 @@ Data Editing Options
| | a query has been executed and there are results in the data grid. You can specify the CSV/TXT | |
| | settings in the Preference Dialogue under SQL Editor -> CSV/TXT output. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
| Graph Visualiser | Use the Graph Visualiser button to generate graphs of the query results. | |
+----------------------+---------------------------------------------------------------------------------------------------+----------------+
Status Bar
**********
+2
View File
@@ -11,6 +11,8 @@ notes for it.
.. toctree::
:maxdepth: 1
release_notes_6_12
release_notes_6_11
release_notes_6_10
release_notes_6_9
release_notes_6_8
+39
View File
@@ -0,0 +1,39 @@
************
Version 6.11
************
Release date: 2022-06-30
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.10.
New features
************
| `Issue #2647 <https://redmine.postgresql.org/issues/2647>`_ - Added mouse over indication for breakpoint area in the Debugger.
| `Issue #2648 <https://redmine.postgresql.org/issues/2648>`_ - Added search text option to the Debugger panel.
| `Issue #7178 <https://redmine.postgresql.org/issues/7178>`_ - Added capability to deploy PostgreSQL servers on Microsoft Azure.
| `Issue #7332 <https://redmine.postgresql.org/issues/7332>`_ - Added support for passing password using Docker Secret to Docker images.
| `Issue #7351 <https://redmine.postgresql.org/issues/7351>`_ - Added the option 'Show template databases?' to display template databases regardless of the setting of 'Show system objects?'.
| `Issue #7485 <https://redmine.postgresql.org/issues/7485>`_ - Added support for visualise the graph using a Line chart in the query tool.
Housekeeping
************
| `Issue #6132 <https://redmine.postgresql.org/issues/6132>`_ - Port Debugger to React.
| `Issue #7315 <https://redmine.postgresql.org/issues/7315>`_ - Updates documentation for the Traefik v2 container deployment.
| `Issue #7411 <https://redmine.postgresql.org/issues/7411>`_ - Update pgcli to latest release 3.4.1.
| `Issue #7469 <https://redmine.postgresql.org/issues/7469>`_ - Upgrade Chartjs to the latest 3.8.0.
Bug fixes
*********
| `Issue #7423 <https://redmine.postgresql.org/issues/7423>`_ - Fixed an issue where there is no setting to turn off notifications in the Query Tool.
| `Issue #7440 <https://redmine.postgresql.org/issues/7440>`_ - Fixed an issue where passwords entered in the 'Connect To Server' dialog were truncated.
| `Issue #7441 <https://redmine.postgresql.org/issues/7441>`_ - Ensure that the Query Editor should be focused when switching between query tool tabs.
| `Issue #7443 <https://redmine.postgresql.org/issues/7443>`_ - Fixed and issue where 'Use spaces' not working in the query tool.
| `Issue #7453 <https://redmine.postgresql.org/issues/7453>`_ - Fixed an issue where the Database restriction is not working.
| `Issue #7460 <https://redmine.postgresql.org/issues/7460>`_ - Fixed an issue where pgAdmin stuck while creating a new index.
| `Issue #7461 <https://redmine.postgresql.org/issues/7461>`_ - Fixed an issue where the connection wasn't being closed when the user switched to a new connection and closed the query tool.
| `Issue #7468 <https://redmine.postgresql.org/issues/7468>`_ - Skip the history records if the JSON info can't be parsed instead of showing 'No history'.
| `Issue #7502 <https://redmine.postgresql.org/issues/7502>`_ - Fixed an issue where an error message is displayed when creating the new database.
| `Issue #7506 <https://redmine.postgresql.org/issues/7506>`_ - Fixed permission denied error when deploying PostgreSQL in Azure using Docker.
+40
View File
@@ -0,0 +1,40 @@
************
Version 6.12
************
Release date: 2022-07-28
This release contains a number of bug fixes and new features since the release of pgAdmin 4 v6.11.
New features
************
| `Issue #4488 <https://redmine.postgresql.org/issues/4488>`_ - Added option to trigger autocomplete on key press in the query tool.
| `Issue #4607 <https://redmine.postgresql.org/issues/4607>`_ - Allow users to delete files/folders from the storage manager.
| `Issue #7389 <https://redmine.postgresql.org/issues/7389>`_ - Allow users to search within the file/storage manager.
| `Issue #7486 <https://redmine.postgresql.org/issues/7486>`_ - Added support for visualizing the graphs using Stacked Line, Bar, and Stacked Bar charts in the query tool.
| `Issue #7487 <https://redmine.postgresql.org/issues/7487>`_ - Added support for visualise the graph using a Pie chart in the query tool.
Housekeeping
************
| `Issue #7313 <https://redmine.postgresql.org/issues/7313>`_ - Port the file/storage manager to React.
| `Issue #7341 <https://redmine.postgresql.org/issues/7341>`_ - Port change password dialog to React.
| `Issue #7342 <https://redmine.postgresql.org/issues/7342>`_ - Port Master Password dialog to React.
| `Issue #7492 <https://redmine.postgresql.org/issues/7492>`_ - Removing dynamic module loading and replacing it with static loading.
| `Issue #7546 <https://redmine.postgresql.org/issues/7546>`_ - Port named restore point dialog to React.
Bug fixes
*********
| `Issue #7428 <https://redmine.postgresql.org/issues/7428>`_ - Preserve the settings set by the user in the import/export data dialog.
| `Issue #7471 <https://redmine.postgresql.org/issues/7471>`_ - Ensure that the splash screen can be moved.
| `Issue #7508 <https://redmine.postgresql.org/issues/7508>`_ - Fixed an issue where comments on indexes are not displayed.
| `Issue #7512 <https://redmine.postgresql.org/issues/7512>`_ - Ensure that notices should not disappear from the messages tab.
| `Issue #7517 <https://redmine.postgresql.org/issues/7517>`_ - Enable the start debugging button once execution is completed.
| `Issue #7518 <https://redmine.postgresql.org/issues/7518>`_ - Ensure that dashboard graph API is not called after the panel has been closed.
| `Issue #7519 <https://redmine.postgresql.org/issues/7519>`_ - Ensure that geometry should be shown for all the selected cells.
| `Issue #7520 <https://redmine.postgresql.org/issues/7520>`_ - Fixed the JSON editor issue of hiding the first record.
| `Issue #7522 <https://redmine.postgresql.org/issues/7522>`_ - Added support for Azure PostgreSQL deployment in server mode.
| `Issue #7523 <https://redmine.postgresql.org/issues/7523>`_ - Fixed typo error for Statistics on the table header.
| `Issue #7524 <https://redmine.postgresql.org/issues/7524>`_ - Fixed an issue where new folders cannot be created in the save dialog.
+33 -27
View File
@@ -20,48 +20,54 @@ Use icons on the top of the *Storage Manager* window to manage storage:
Use the ``Home`` icon |home| to return to the home directory.
.. |home| image:: images/home.png
.. |home| image:: images/sm_home.png
Use the ``Up Arrow`` icon |uparrow| to return to the previous directory.
.. |uparrow| image:: images/uparrow.png
.. |uparrow| image:: images/sm_go_back.png
Use the ``Refresh`` icon |refresh| to display the most-recent files available.
.. |refresh| image:: images/refresh.png
.. |refresh| image:: images/sm_refresh.png
Select the ``Download`` icon |download| to download the selected file.
.. |download| image:: images/download.png
Select the ``Delete`` icon |delete| to delete the selected file or folder.
.. |delete| image:: images/delete.png
Select the ``Edit`` icon |edit| to rename a file or folder.
.. |edit| image:: images/edit.png
Use the ``Upload`` icon |upload| to upload a file.
.. |upload| image:: images/upload.png
.. |download| image:: images/sm_download.png
Use the ``New Folder`` icon |folder| to add a new folder.
.. |folder| image:: images/folder.png
Use the ``Grid View`` icon |gridview| to display all the files and folders in a grid view.
.. |gridview| image:: images/gridview.png
Use the ``Table View`` icon |tableview| to display all the files and folders in a list view.
.. |tableview| image:: images/tableview.png
Click on the check box next to *Show hidden files and folders* at the bottom of the window to view hidden files and folders.
.. |folder| image:: images/sm_new_folder.png
Use the *Format* drop down list to select the format of the files to be displayed; choose from *sql*, *csv*, or *All Files*.
Other Options
*********************
.. image:: images/sm_options.png
:alt: Other options
:align: center
.. table::
:class: longtable
:widths: 1 5
+----------------------+---------------------------------------------------------------------------------------------------+
| Menu | Behavior |
+======================+===================================================================================================+
| *Rename* | Click the *Rename* option to rename a file/folder. |
+----------------------+---------------------------------------------------------------------------------------------------+
| *Delete* | Click the *Delete* option to rename a file/folder. |
+----------------------+---------------------------------------------------------------------------------------------------+
| *Upload* | Click the *Upload* option to upload multiple files to the current folder. |
+----------------------+---------------------------------------------------------------------------------------------------+
| *List View* | Click the *List View* option to to display all the files and folders in a list view. |
+----------------------+---------------------------------------------------------------------------------------------------+
| *Grid View* | Click the *Grid View* option to to display all the files and folders in a grid view. |
+----------------------+---------------------------------------------------------------------------------------------------+
| *Show Hidden Files* | Click the *Show Hidden Files* option to view hidden files and folders. |
+----------------------+---------------------------------------------------------------------------------------------------+
You can also download backup files through *Storage Manager* at the successful completion of the backups taken through :ref:`Backup Dialog <backup_dialog>`, :ref:`Backup Global Dialog <backup_globals_dialog>`, or :ref:`Backup Server Dialog <backup_server_dialog>`.
At the successful completion of a backup, click on the icon to open the current backup file in *Storage Manager* on the *process watcher* window.
+7 -2
View File
@@ -36,8 +36,8 @@ EOF
fi
if [ ! -f /var/lib/pgadmin/pgadmin4.db ]; then
if [ -z "${PGADMIN_DEFAULT_EMAIL}" -o -z "${PGADMIN_DEFAULT_PASSWORD}" ]; then
echo 'You need to define the PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD environment variables.'
if ([ -z "${PGADMIN_DEFAULT_EMAIL}" ]) || ( [ -z "${PGADMIN_DEFAULT_PASSWORD}" ] && [ ! -n "${PGADMIN_DEFAULT_PASSWORD_FILE}" ] ); then
echo 'You need to define the PGADMIN_DEFAULT_EMAIL and PGADMIN_DEFAULT_PASSWORD or PGADMIN_DEFAULT_PASSWORD_FILE environment variables.'
exit 1
fi
@@ -47,6 +47,11 @@ if [ ! -f /var/lib/pgadmin/pgadmin4.db ]; then
exit 1
fi
# Read secret contents
if [ -n "${PGADMIN_DEFAULT_PASSWORD_FILE}" ]; then
export PGADMIN_DEFAULT_PASSWORD=$(cat ${PGADMIN_DEFAULT_PASSWORD_FILE})
fi
# Set the default username and password in a
# backwards compatible way
export PGADMIN_SETUP_EMAIL=${PGADMIN_DEFAULT_EMAIL}
+5 -1
View File
@@ -128,7 +128,11 @@ _build_runtime() {
# YARN END
# WGET:
NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
# Comment out the below line as the latest version having some
# problem https://github.com/nwjs/nw.js/issues/7902, so for the time being
# hardcoded the version to 0.62.2
# NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
NW_VERSION="0.62.2"
pushd "${BUILDROOT}" > /dev/null
while true;do
+5 -1
View File
@@ -33,7 +33,11 @@ _build_runtime() {
# YARN END
# WGET:
NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
# Comment out the below line as the latest version having some
# problem https://github.com/nwjs/nw.js/issues/7902, so for the time being
# hardcoded the version to 0.62.2
# NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}')
NW_VERSION="0.62.2"
pushd "${BUILD_ROOT}" > /dev/null
while true;do
+11 -5
View File
@@ -5,18 +5,21 @@ if [ "$EUID" -ne 0 ]
exit 1
fi
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g')
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | awk -F "=" '{ print $2 }' | sed 's/"//g' | awk -F "." '{ print $1 }')
# EPEL & other repos
yum -y install centos-release-scl
if [ ${OS_VERSION} != 9 ]; then
yum -y install centos-release-scl
fi
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-${OS_VERSION}.noarch.rpm
if [ ${OS_VERSION} == 8 ]; then
if [ ${OS_VERSION} == 8 ] || [ ${OS_VERSION} == 9 ]; then
yum config-manager --enable PowerTools AppStream BaseOS *epel
dnf -qy module disable postgresql
fi
# PostgreSQL repo
if [ ${OS_VERSION} == 7 ] || [ ${OS_VERSION} == 8 ]; then
if [ ${OS_VERSION} == 7 ] || [ ${OS_VERSION} == 8 ] || [ ${OS_VERSION} == 9 ]; then
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-${OS_VERSION}-x86_64/pgdg-redhat-repo-latest.noarch.rpm
else
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/F-${OS_VERSION}-x86_64/pgdg-fedora-repo-latest.noarch.rpm
@@ -24,7 +27,7 @@ fi
# Node repo
echo "Setting up the NodeJS repo..."
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
curl -sL https://rpm.nodesource.com/setup_16.x | bash -
# Yarn repo
echo "Setting up the Yarn repo..."
@@ -37,6 +40,9 @@ yum groupinstall -y "Development Tools"
if [ ${OS_VERSION} == 7 ]; then
yum install -y expect fakeroot httpd-devel postgresql14-devel python3-devel nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
pip3 install sphinx
elif [ ${OS_VERSION} == 9 ]; then
yum install -y expect postgresql14-devel python3-devel nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
pip3 install sphinx
else
yum install -y expect fakeroot postgresql14-devel python3-devel python3-sphinx nodejs yarn rpm-build rpm-sign yum-utils krb5-devel
fi
+4
View File
@@ -50,3 +50,7 @@ boto3==1.20.*
botocore==1.23.*
urllib3==1.26.*
Werkzeug==2.0.3
azure-mgmt-rdbms==10.1.0
azure-mgmt-resource==21.0.0
azure-mgmt-subscription==3.0.0
azure-identity==1.9.0
+2 -1
View File
@@ -7,6 +7,7 @@
"license": "PostgreSQL",
"chromium-args": "--disable-popup-blocking --disable-gpu",
"user-agent": "Nwjs:%nwver-%osinfo-%chromium_ver",
"nodejs": true,
"window": {
"width": 750,
"height": 600,
@@ -24,7 +25,7 @@
},
"devDependencies": {
"eslint": "^6.3.0",
"nw": "^0.64.0"
"nw": "0.62.2"
},
"scripts": {
"linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js ."
+1 -1
View File
@@ -296,7 +296,7 @@ const setZoomLevelForAllWindows = () => {
for (let arr_val of winArray) {
arr_val.zoomLevel = pgAdminWindowObject.zoomLevel;
}
})
});
};
// This function used to zoom in the pgAdmin window.
+54 -25
View File
@@ -18,6 +18,7 @@ let startPageUrl = null;
let serverCheckUrl = null;
let serverPort = 5050;
let appStartTime = (new Date()).getTime();
let docsURLSubStrings = ['www.enterprisedb.com', 'www.postgresql.org', 'www.pgadmin.org', 'help/help'];
@@ -84,12 +85,15 @@ function startDesktopMode() {
misc.writeServerLog('--------------------------------------------------------\n');
// Spawn the process to start pgAdmin4 server.
let spawnStartTime = (new Date).getTime();
pgadminServerProcess = spawn(path.resolve(pythonPath), ['-s', path.resolve(pgadminFile)]);
pgadminServerProcess.on('error', function(err) {
// Log the error into the log file if process failed to launch
misc.writeServerLog('Failed to launch pgAdmin4. Error:');
misc.writeServerLog(err);
});
let spawnEndTime = (new Date).getTime();
misc.writeServerLog('Total spawn time to start the pgAdmin4 server: ' + (spawnEndTime - spawnStartTime)/1000 + ' Sec');
pgadminServerProcess.stdout.setEncoding('utf8');
pgadminServerProcess.stdout.on('data', (chunk) => {
@@ -149,6 +153,7 @@ function startDesktopMode() {
let pingInProgress = false;
// ping pgAdmin server every 1 second.
let pingStartTime = (new Date).getTime();
let intervalID = setInterval(function() {
// If ping request is already send and response is not
// received no need to send another request.
@@ -162,6 +167,12 @@ function startDesktopMode() {
misc.setProcessObject(pgadminServerProcess);
clearInterval(intervalID);
let appEndTime = (new Date).getTime();
misc.writeServerLog('------------------------------------------');
misc.writeServerLog('Total time taken to ping pgAdmin4 server: ' + (appEndTime - pingStartTime)/1000 + ' Sec');
misc.writeServerLog('------------------------------------------');
misc.writeServerLog('Total launch time of pgAdmin4: ' + (appEndTime - appStartTime)/1000 + ' Sec');
misc.writeServerLog('------------------------------------------');
launchPgAdminWindow();
}).catch(() => {
pingInProgress = false;
@@ -195,7 +206,7 @@ function startDesktopMode() {
});
pingInProgress = true;
}, 1000);
}, 250);
}
// This function is used to hide the splash screen and create/launch
@@ -232,32 +243,32 @@ function launchPgAdminWindow() {
// set up handler for new-win-policy event.
// Set the width and height for the new window.
pgadminWindow.on('new-win-policy', function(frame, url, policy) {
if(!frame) {
let openDocsInBrowser = misc.ConfigureStore.get('openDocsInBrowser', true);
let isDocURL = false;
docsURLSubStrings.forEach(function(key) {
if(url.indexOf(key) >= 0) {
isDocURL = true;
}
});
if (openDocsInBrowser && isDocURL) {
// Do not open the window
policy.ignore();
// Open URL in the external browser.
nw.Shell.openExternal(url);
} else {
policy.setNewWindowManifest({
'icon': '../../assets/pgAdmin4.png',
'frame': true,
'position': 'center',
'min_width': 640,
'min_height': 480,
'width': pgadminWindow.width,
'height': pgadminWindow.height,
});
if(!frame) {
let openDocsInBrowser = misc.ConfigureStore.get('openDocsInBrowser', true);
let isDocURL = false;
docsURLSubStrings.forEach(function(key) {
if(url.indexOf(key) >= 0) {
isDocURL = true;
}
});
if (openDocsInBrowser && isDocURL) {
// Do not open the window
policy.ignore();
// Open URL in the external browser.
nw.Shell.openExternal(url);
} else {
policy.setNewWindowManifest({
'icon': '../../assets/pgAdmin4.png',
'frame': true,
'position': 'center',
'min_width': 640,
'min_height': 480,
'width': pgadminWindow.width,
'height': pgadminWindow.height,
});
}
}
});
pgadminWindow.on('loaded', function() {
@@ -289,6 +300,24 @@ function launchPgAdminWindow() {
let gui = require('nw.gui');
let splashWindow = gui.Window.get();
// Enable dragging on the splash screen.
let isDragging = false;
let dragOrigin = {x:0, y:0};
document.mouseleave = ()=> isDragging = false;
document.onmouseup = ()=> isDragging = false;
document.onmousedown = (e)=> {
isDragging = true;
dragOrigin.x = e.x;
dragOrigin.y = e.y;
};
document.onmousemove = (e)=> {
if (isDragging) {
splashWindow.moveTo(e.screenX - dragOrigin.x, e.screenY - dragOrigin.y);
}
};
// Always clear the cache before starting the application.
nw.App.clearCache();
+4 -4
View File
@@ -1008,10 +1008,10 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
nw@^0.64.0:
version "0.64.1"
resolved "https://registry.yarnpkg.com/nw/-/nw-0.64.1.tgz#eaf96dd22081a679316b86d31405a54b37ba7181"
integrity sha512-+h1qQlhBdW56Xbe5EVojb2zfjo/fccM7rzecHTiNBl++FHA3nAGxn2UrwmqpUa+v/mQ5+EUFXpBlmkbl4y4fEg==
nw@0.62.2:
version "0.62.2"
resolved "https://registry.yarnpkg.com/nw/-/nw-0.62.2.tgz#a00e3e3caac5dc80da6897cfc6ef2af942b5c0fa"
integrity sha512-g9RNUUmumsMC75M5I5DGdPvszCEIefCHHZYOrMzpR6oQ6MrQmT29ejsBXBU5XVE2kfPJ5Eu9izvJTbc7uIqwgg==
dependencies:
chalk "~1.1.3"
decompress "^4.2.0"
+8 -2
View File
@@ -43,7 +43,7 @@ APP_ICON = 'pg-icon'
# Application version number components
APP_RELEASE = 6
APP_REVISION = 10
APP_REVISION = 12
# Application version suffix, e.g. 'beta1', 'dev'. Usually an empty string
# for GA releases.
@@ -52,7 +52,7 @@ APP_SUFFIX = ''
# Numeric application version for upgrade checks. Should be in the format:
# [X]XYYZZ, where X is the release version, Y is the revision, with a leading
# zero if needed, and Z represents the suffix, with a leading zero if needed
APP_VERSION_INT = 61000
APP_VERSION_INT = 61200
# DO NOT CHANGE!
# The application version string, constructed from the components
@@ -690,6 +690,12 @@ KRB_AUTO_CREATE_USER = True
KERBEROS_CCACHE_DIR = os.path.join(DATA_DIR, 'krbccache')
#############################################################################
# Create local directory to store azure credential cache
#############################################################################
AZURE_CREDENTIAL_CACHE_DIR = os.path.join(DATA_DIR, 'azurecredentialcache')
##########################################################################
# OAuth2 Configuration
##########################################################################
+10 -15
View File
@@ -19,7 +19,7 @@
"@emotion/react": "^11.1.5",
"@emotion/styled": "^10.0.14",
"@emotion/utils": "^1.0.0",
"@svgr/webpack": "^5.5.0",
"@svgr/webpack": "^6.2.1",
"@wojtekmaj/enzyme-adapter-react-17": "^0.4.1",
"autoprefixer": "^10.2.4",
"axios-mock-adapter": "^1.17.0",
@@ -37,10 +37,6 @@
"exports-loader": "^2.0.0",
"html-react-parser": "^1.2.7",
"image-minimizer-webpack-plugin": "^2.2.0",
"imagemin-mozjpeg": "^9.0.0",
"imagemin-optipng": "^8.0.0",
"imagemin-pngquant": "^9.0.1",
"imagemin-svgo": "^8.0.0",
"is-docker": "^2.1.1",
"istanbul-instrumenter-loader": "^3.0.1",
"jasmine-core": "^3.6.0",
@@ -74,7 +70,7 @@
"webpack": "^5.21.2",
"webpack-bundle-analyzer": "^4.4.0",
"webpack-cli": "^4.5.0",
"yarn-audit-html": "^2.0.0"
"yarn-audit-html": "^4.0.0"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.10.4",
@@ -86,8 +82,6 @@
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "4.0.0-alpha.58",
"@material-ui/pickers": "^3.2.10",
"@mui/icons-material": "^5.4.2",
"@mui/material": "^5.4.3",
"@projectstorm/react-diagrams": "^6.6.1",
"@simonwep/pickr": "^1.5.1",
"@szhsin/react-menu": "^2.2.0",
@@ -111,17 +105,18 @@
"bootstrap4-toggle": "^3.6.1",
"brace": "^0.11.1",
"browserfs": "^1.4.3",
"chart.js": "^2.9.3",
"chart.js": "^3.0.0",
"chartjs-plugin-zoom": "^1.2.1",
"classnames": "^2.2.6",
"closest": "^0.0.1",
"codemirror": "^5.59.2",
"context-menu": "^2.0.0",
"convert-units": "^2.3.4",
"css-loader": "^5.0.1",
"cssnano": "^5.0.2",
"dagre": "^0.8.4",
"date-fns": "^2.24.0",
"diff-arrays-of-objects": "^1.1.8",
"dropzone": "^5.9.3",
"html2canvas": "^1.0.0-rc.7",
"immutability-helper": "^3.0.0",
"imports-loader": "^2.0.0",
@@ -129,7 +124,7 @@
"ip-address": "^7.1.0",
"jquery": "^3.6.0",
"jquery-contextmenu": "^2.9.2",
"jquery-ui": "^1.13.0",
"jquery-ui": "^1.13.2",
"json-bignumber": "^1.0.1",
"jsoneditor": "^9.5.4",
"jsoneditor-react": "^3.1.1",
@@ -137,15 +132,15 @@
"leaflet": "^1.5.1",
"lodash": "4.*",
"ml-matrix": "^6.5.0",
"moment": "^2.29.3",
"moment": "^2.29.4",
"moment-timezone": "^0.5.34",
"mousetrap": "^1.6.3",
"notificar": "^1.0.1",
"notistack": "^2.0.0",
"notistack": "^1.0.10",
"path-fx": "^2.0.0",
"pathfinding": "^0.4.18",
"paths-js": "^0.4.9",
"pgadmin4-tree": "git+https://github.com/EnterpriseDB/pgadmin4-treeview/#b0287d39b54de28cb2a83f0c19a95ce823f6feae",
"pgadmin4-tree": "git+https://github.com/EnterpriseDB/pgadmin4-treeview/#07cc449e1d89ecc8cce3679d8cff5a35f1db67ee",
"postcss": "^8.2.15",
"raf": "^3.4.1",
"rc-dock": "^3.2.9",
@@ -155,6 +150,7 @@
"react-data-grid": "git+https://github.com/adityatoshniwal/react-data-grid.git/#8d9bc16ddd7c419acfbbd1c1cc2b70eb9f5b453c",
"react-dom": "^17.0.1",
"react-draggable": "^4.4.4",
"react-dropzone": "^14.2.1",
"react-leaflet": "^3.2.2",
"react-rnd": "^10.3.5",
"react-router-dom": "^6.2.2",
@@ -170,7 +166,6 @@
"socket.io-client": "^4.0.0",
"split.js": "^1.5.10",
"styled-components": "^5.2.1",
"tablesorter": "^2.31.2",
"tempusdominus-bootstrap-4": "^5.1.2",
"tempusdominus-core": "^5.19.3",
"underscore": "^1.13.1",
+6 -8
View File
@@ -14,7 +14,6 @@ to start a web server."""
import sys
if sys.version_info < (3, 4):
raise RuntimeError('This application must be run under Python 3.4 '
'or later.')
@@ -37,8 +36,8 @@ else:
builtins.SERVER_MODE = None
import config
import setup
from pgadmin import create_app, socketio
from pgadmin.utils import u_encode, fs_encoding, file_quote
from pgadmin.utils.constants import INTERNAL
# Get the config database schema version. We store this in pgadmin.model
# as it turns out that putting it in the config files isn't a great idea
@@ -83,13 +82,9 @@ class ReverseProxied(object):
config.SETTINGS_SCHEMA_VERSION = SCHEMA_VERSION
# Check if the database exists. If it does not, create it.
setup_db_required = False
if not os.path.isfile(config.SQLITE_PATH):
setup_py = os.path.join(
os.path.dirname(os.path.realpath(u_encode(__file__, fs_encoding))),
'setup.py'
)
exec(open(file_quote(setup_py), 'r').read())
setup_db_required = True
##########################################################################
# Create the app and configure it. It is created outside main so that
@@ -99,6 +94,9 @@ app = create_app()
app.debug = False
app.config['sessions'] = dict()
if setup_db_required:
setup.setup_db(app)
if config.SERVER_MODE:
app.wsgi_app = ReverseProxied(app.wsgi_app)
+2 -1
View File
@@ -11,6 +11,7 @@
import argparse
import os
import sys
def load_providers():
@@ -19,7 +20,7 @@ def load_providers():
path = os.path.dirname(os.path.realpath(__file__))
modules = os.listdir(path + '/providers')
sys.path.append(path)
for filename in modules:
filename = path + '/providers/' + filename
+361
View File
@@ -0,0 +1,361 @@
##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2022, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
""" Azure PostgreSQL provider """
from azure.mgmt.rdbms.postgresql_flexibleservers import \
PostgreSQLManagementClient
from azure.mgmt.rdbms.postgresql_flexibleservers.models import Sku, SkuTier, \
CreateMode, Storage, Server, FirewallRule, HighAvailability
from azure.identity import AzureCliCredential, DeviceCodeCredential, \
AuthenticationRecord
from azure.mgmt.resource import ResourceManagementClient
from azure.core.exceptions import ResourceNotFoundError
from providers._abstract import AbsProvider
import os
from utils.io import debug, error, output
from utils.misc import get_my_ip, get_random_id
import sys
CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
root = os.path.dirname(os.path.dirname(CURRENT_PATH))
sys.path.insert(0, root)
from pgadmin.misc.cloud.azure.azure_cache import load_persistent_cache, \
TokenCachePersistenceOptions
class AzureProvider(AbsProvider):
def __init__(self):
self._clients = {}
self._tenant_id = None
self._client_id = None
self._client_secret = None
self._subscription_id = None
self._default_region = None
self._interactive_browser_credential = False
self._available_capabilities = None
self._credentials = None
self._authentication_record_json = None
self._cli_credentials = None
self._azure_cred_cache_name = None
self._azure_cred_cache_location = None
# Get the credentials
if 'AUTHENTICATION_RECORD_JSON' in os.environ:
self._authentication_record_json = os.environ[
'AUTHENTICATION_RECORD_JSON']
if 'AZURE_SUBSCRIPTION_ID' in os.environ:
self._subscription_id = os.environ['AZURE_SUBSCRIPTION_ID']
if 'AZURE_TENANT_ID' in os.environ:
self._tenant_id = os.environ['AZURE_TENANT_ID']
if 'AUTH_TYPE' in os.environ:
self._interactive_browser_credential = False \
if os.environ['AUTH_TYPE'] == 'azure_cli_credential' else True
if 'AZURE_DATABASE_PASSWORD' in os.environ:
self._database_pass = os.environ['AZURE_DATABASE_PASSWORD']
if 'AZURE_CRED_CACHE_NAME' in os.environ:
self._azure_cred_cache_name = os.environ['AZURE_CRED_CACHE_NAME']
if 'AZURE_CRED_CACHE_LOCATION' in os.environ:
self._azure_cred_cache_location = \
os.environ['AZURE_CRED_CACHE_LOCATION']
def init_args(self, parsers):
""" Create the command line parser for this provider """
self.parser = parsers. \
add_parser('azure',
help='Azure Database for PostgreSQL',
epilog='Credentials are read from '
'the environment, '
'specifically, the '
'AZURE_SUBSCRIPTION_ID, '
'AZURE_TENANT_ID, '
'AZURE_CLIENT_ID and '
'AZURE_CLIENT_SECRET '
'variables. '
'See https://docs.microsoft'
'.com/en-us/azure/developer'
'/python/configure-local'
'-development-environment?tabs=cmd '
'for more information.')
self.parser.add_argument('--region', default=self._default_region,
help='name of the Azure location (default: '
'{})'.format(self._default_region))
self.parser.add_argument('--resource-group', required=True,
help='name of the Azure resource group')
# Create the command sub-parser
parsers = self.parser.add_subparsers(help='Azure commands',
dest='command')
# Create the create instance command parser
parser_create_instance = parsers.add_parser('create-instance',
help='create a new '
'instance')
parser_create_instance.add_argument('--name', required=True,
help='name of the instance')
parser_create_instance.add_argument('--db-password', required=False,
help='password for the database')
parser_create_instance.add_argument('--db-username',
default='postgres',
help='user name for the database '
'(default: postgres)')
parser_create_instance.add_argument('--db-major-version',
default='11',
help='version of PostgreSQL '
'to deploy (default: 11)')
parser_create_instance.add_argument('--instance-type', required=True,
help='machine type for the '
'instance nodes, e.g. '
'GP_Gen5_8')
parser_create_instance.add_argument('--instance_tier_type',
required=True,
help='machine type for the '
'instance nodes, e.g. '
'GP_Gen5_8')
parser_create_instance.add_argument('--storage-size', type=int,
required=True,
help='storage size in GB')
parser_create_instance.add_argument('--availability-zone',
required=False,
help='Availability zone')
parser_create_instance.add_argument('--high-availability',
required=False,
help='High Availability')
parser_create_instance.add_argument('--public-ips',
default='127.0.0.1',
help='Public IPs '
'(default: 127.0.0.1)')
# Create the delete instance command parser
parser_delete_instance = parsers.add_parser('delete-instance',
help='delete an instance')
parser_delete_instance.add_argument('--name', required=True,
help='name of the instance')
##########################################################################
# Azure Helper functions
##########################################################################
def _get_azure_credentials(self):
try:
if self._interactive_browser_credential:
_credentials = self._azure_interactive_auth()
else:
_credentials = self._azure_cli_auth()
except Exception as e:
return False, str(e)
return True, _credentials
def _azure_cli_auth(self):
if self._cli_credentials is None:
self._cli_credentials = AzureCliCredential()
return self._cli_credentials
def _azure_interactive_auth(self):
if self._authentication_record_json is None:
_interactive_credential = DeviceCodeCredential(
tenant_id=self._tenant_id,
timeout=180,
prompt_callback=None,
_cache=load_persistent_cache(TokenCachePersistenceOptions(
name=self._azure_cred_cache_name,
allow_unencrypted_storage=True,
cache_location=self._azure_cred_cache_location)
)
)
_auth_record = _interactive_credential.authenticate()
self._authentication_record_json = _auth_record.serialize()
else:
deserialized_auth_record = AuthenticationRecord.deserialize(
self._authentication_record_json)
_interactive_credential = DeviceCodeCredential(
tenant_id=self._tenant_id,
timeout=180,
prompt_callback=None,
_cache=load_persistent_cache(TokenCachePersistenceOptions(
name=self._azure_cred_cache_name,
allow_unencrypted_storage=True,
cache_location=self._azure_cred_cache_location)
),
authentication_record=deserialized_auth_record
)
return _interactive_credential
def _get_azure_client(self, type):
""" Create/cache/return an Azure client object """
# Acquire a credential object using CLI-based authentication.
if self._credentials is None:
status, self._credentials = \
self._get_azure_credentials()
if type in self._clients:
return self._clients[type]
self._clients['postgresql'] = PostgreSQLManagementClient(
self._credentials, self._subscription_id)
self._clients['resource'] = ResourceManagementClient(
self._credentials, self._subscription_id)
return self._clients[type]
def _create_resource_group(self, args):
""" Create the Resource Group if it doesn't exist """
resource_client = self._get_azure_client('resource')
group_list = resource_client.resource_groups.list()
for group in list(group_list):
if group.name == args.resource_group:
debug('Resource group already exist with name: {}...'.format(
args.resource_group))
return group.__dict__
debug(
'Creating resource group with name: {}...'.format(
args.resource_group))
result = resource_client.resource_groups.create_or_update(
args.resource_group,
{"location": args.region})
return result.__dict__
def _create_azure_instance(self, args):
""" Create an Azure instance """
# Obtain the management client object
postgresql_client = self._get_azure_client('postgresql')
# Check if the server already exists
svr = None
try:
svr = postgresql_client.servers.get(args.resource_group, args.name)
except ResourceNotFoundError:
pass
except Exception as e:
error(args, e)
if svr is not None:
error(args, 'Azure Database for PostgreSQL instance {} already '
'exists.'.format(args.name))
db_password = self._database_pass if self._database_pass is not None \
else args.db_password
# Provision the server and wait for the result
debug('Creating Azure instance: {}...'.format(args.name))
try:
poller = postgresql_client.servers.begin_create(
resource_group_name=args.resource_group,
server_name=args.name,
parameters=Server(
sku=Sku(name=args.instance_type,
tier=SkuTier(args.instance_tier_type)
),
high_availability=HighAvailability(
mode=args.high_availability),
administrator_login=args.db_username,
administrator_login_password=db_password,
version=args.db_major_version,
storage=Storage(
storage_size_gb=args.storage_size
),
location=args.region,
create_mode=CreateMode("Default")
)
)
except Exception as e:
error(e)
server = poller.result()
return server.__dict__
def _create_firewall_rule(self, args):
""" Create a firewall rule on an instance """
firewall_rules = []
postgresql_client = self._get_azure_client('postgresql')
ip = args.public_ips if args.public_ips else get_my_ip()
ip_list = ip.split(',')
for ip in ip_list:
ip = ip.strip()
if '-' in ip:
start_ip = ip.split('-')[0]
end_ip = ip.split('-')[1]
else:
start_ip = ip
end_ip = ip
name = 'pgacloud_{}_{}_{}'.format(args.name,
ip.replace('.', '-'),
get_random_id())
# Provision the rule and wait for completion
debug('Adding ingress rule for: {0} - {1} ...'.format(start_ip,
end_ip))
poller = postgresql_client.firewall_rules.begin_create_or_update(
resource_group_name=args.resource_group,
server_name=args.name,
firewall_rule_name=name,
parameters=FirewallRule(start_ip_address=start_ip,
end_ip_address=end_ip)
)
firewall_rule = poller.result()
firewall_rules.append(firewall_rule.__dict__)
return firewall_rules
def _delete_azure_instance(self, args, name):
""" Delete an Azure instance """
# Obtain the management client object
postgresql_client = self._get_azure_client('postgresql')
# Delete the server and wait for the result
debug('Deleting Azure instance: {}...'.format(args.name))
try:
poller = postgresql_client.servers.begin_delete(
args.resource_group,
args.name
)
except Exception as e:
error(args, e)
poller.result()
##########################################################################
# User commands
##########################################################################
def cmd_create_instance(self, args):
""" Deploy an Azure instance and firewall rule """
rg = self._create_resource_group(args)
instance = self._create_azure_instance(args)
self._create_firewall_rule(args)
data = {'instance': {
'Id': instance['id'],
'ResourceGroupId': rg['name'],
'Location': instance['location'],
'Hostname': instance['fully_qualified_domain_name'],
'Port': 5432,
'Database': "postgres",
'Username': instance['administrator_login']
}}
output(data)
def cmd_delete_instance(self, args):
""" Delete an Azure instance """
self._delete_azure_instance(args, args.name)
def load():
""" Loads the current provider """
return AzureProvider()
Loaded 100 of 367 files, more files were not shown because too many files have changed in this diff. Show more