mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-11-02 20:30:17 -06:00
* Add a pgEdge Starfleet API client for cloud deployment. * Add a pgacloud provider for pgEdge Starfleet. * Add the pgEdge Starfleet cloud deployment blueprint. * Return the generated pgEdge Starfleet password once on deployment and allow saving it. * Add pgEdge Starfleet to the Deploy Cloud Instance wizard. * Test the Starfleet password is fetched once and validate the save request body. * Show the generated pgEdge Starfleet password once after deployment. * Document pgEdge Starfleet cloud deployment. * Show the Starfleet password dialog at most once per job and handle copy failures. * Wait for the Starfleet instance schema before rendering its form. The schema is built after an asynchronous client IP lookup, but SchemaView takes its initial data from the first schema it receives, so mounting it early left the deployment type unset and hid the managed-only fields. * Keep the Starfleet token for each deployment job until it completes. The wizard clears its cloud session as soon as the deployment starts, so the token was gone by the time the job finished and the generated password could never be fetched. Copy the token for the job when it is started, read the password with that copy, and discard it on completion. * Show the reason a cloud deployment failed. pgacloud prints the provider's error as JSON before it exits, but the failure path ignored it, so the user saw only a generic process failure whilst the server quietly vanished from the tree. Pass the message through update_server and show it once per job as a plain-text error. * Keep the cloud deployment failure message until it is dismissed. * Explain an empty Starfleet BYOC cluster list. * Wait for Starfleet connection details before finishing a deployment. * Handle malformed Starfleet responses without a server error. * Clear the Starfleet PostgreSQL version when the deployment type changes. * Show the Starfleet size label in the deployment summary. * Stop logging the values of a background process's environment. * Use the official pgEdge logo for the Starfleet provider. * Only mount the selected provider's credentials form in the cloud wizard. * Require HTTPS and handle malformed pgEdge Starfleet responses. Addresses CodeRabbit review on #10499: the API client refuses a non-HTTPS URL before sending credentials, a 2xx body that is not JSON or lacks an access token raises StarfleetError, and the provider and credential check report an unexpected response shape instead of failing with a traceback. * Reject an empty or non-string pgEdge Starfleet access token. * Note that the pgEdge Starfleet API URL must use HTTPS. * Add screenshots to the pgEdge Starfleet deployment documentation. * Update the cloud provider screenshot to include pgEdge Starfleet. * Remove pgEdge Starfleet BYOC support from the cloud deployment wizard. Only Managed databases are now offered, so the Deployment type selector, the cluster list, the BYOC PostgreSQL version list and the BYOC capability probe are gone, along with the --kind and --cluster-id options of pgacloud's starfleet create-instance command. * Regenerate the Starfleet instance and review screenshots without the deployment type. * Retry transient pgEdge Starfleet polling errors and write job tokens through. A network error, rate limit or server error whilst waiting for a new database no longer ends the deployment, leaving the database running in Starfleet but removed from pgAdmin; polling now retries until its deadline, failing at once only on other client errors. The job's copy of the access token is now written to the session store immediately, so a status poll handled by another worker can still fetch the generated password. * Write the pgEdge Starfleet wizard token through, and warn that a failed deployment may leave the database behind.
103 lines
4.1 KiB
ReStructuredText
103 lines
4.1 KiB
ReStructuredText
.. _cloud_pgedge_starfleet:
|
|
|
|
************************************************
|
|
`pgEdge Starfleet Deployment`:index:
|
|
************************************************
|
|
|
|
To deploy a PostgreSQL database on pgEdge Starfleet, follow the steps below.
|
|
pgAdmin creates a *Managed* database, which Starfleet hosts for you.
|
|
|
|
.. image:: images/cloud_provider_for_postgresql.png
|
|
:alt: Cloud Deployment Provider
|
|
:align: center
|
|
|
|
Once you launch the tool, select the pgEdge Starfleet option and click on the
|
|
*Next* button to proceed.
|
|
|
|
.. image:: images/cloud_starfleet_credentials.png
|
|
:alt: pgEdge Starfleet credentials
|
|
:align: center
|
|
|
|
In the Credentials step, enter the *Auth ID* and *Auth secret* of a Starfleet
|
|
API client. pgAdmin checks them with Starfleet when you click *Next*.
|
|
|
|
.. note:: Create the API client in the pgEdge Starfleet console, under
|
|
*Settings > API Clients*. The Auth secret is shown only when the client is
|
|
created, so keep a copy of it. See the
|
|
`pgEdge Starfleet documentation <https://docs.pgedge.com/pgedge-starfleet/>`_
|
|
for details.
|
|
|
|
.. image:: images/cloud_starfleet_instance.png
|
|
:alt: pgEdge Starfleet instance specification
|
|
:align: center
|
|
|
|
Use the fields from the Instance Specification step to specify the database
|
|
details.
|
|
|
|
* Use the *Database name* field to name the database. The name may contain
|
|
lowercase letters and digits only, must start with a letter, and can be up
|
|
to 50 characters long.
|
|
|
|
* Use the *Display name* field to optionally set a friendlier name, up to 25
|
|
characters long.
|
|
|
|
* Select the location to deploy the database to from the *Region* field.
|
|
|
|
* Use the *Size* field to select the size of the database.
|
|
|
|
* Use the *PostgreSQL version* field to select the PostgreSQL version.
|
|
|
|
* Use the *Allowed IP addresses* field to list the IPv4 addresses or CIDR
|
|
ranges that may connect to the database, separated by commas. The field is
|
|
prefilled with your public IP address. At least one and at most 50 entries
|
|
are required; IPv6 addresses are not accepted. Without a matching entry the
|
|
database will not accept connections from pgAdmin.
|
|
|
|
* Use the *Connect as* field to choose whether pgAdmin connects as *admin*
|
|
(the database administrator, which is not a superuser) or *app* (an
|
|
application user).
|
|
|
|
.. image:: images/cloud_starfleet_database.png
|
|
:alt: pgEdge Starfleet database details
|
|
:align: center
|
|
|
|
In the Database Details step, use the *pgAdmin server group* field to select
|
|
the server group the new server will be registered in.
|
|
|
|
.. image:: images/cloud_starfleet_review.png
|
|
:alt: pgEdge Starfleet review
|
|
:align: center
|
|
|
|
Finally, review the summary in the Review step and click *Finish* to start the
|
|
deployment. The progress of the deployment is shown in the same way as for the
|
|
other cloud providers, and the new server is added to the *Object Explorer*
|
|
when the database is available. pgAdmin connects with *sslmode* set to
|
|
*require* and *gssencmode* set to *disable*.
|
|
|
|
If the deployment fails after the database has been created, for example
|
|
because pgEdge Starfleet reports it as failed or it does not become available
|
|
within 30 minutes, pgAdmin removes the server from the *Object Explorer* but
|
|
does not delete the database. Check the pgEdge Starfleet console, and delete
|
|
the database there if it is not needed.
|
|
|
|
.. image:: images/cloud_starfleet_password.png
|
|
:alt: pgEdge Starfleet database password
|
|
:align: center
|
|
|
|
pgEdge Starfleet generates the database password. When the deployment
|
|
finishes, pgAdmin shows it once in the *pgEdge Starfleet database password*
|
|
dialog, together with the host and user name.
|
|
|
|
* Use the *Copy* button to copy the password to the clipboard.
|
|
|
|
* Use the *Save password* button to save the password with the server. This
|
|
button is only shown if saving passwords is permitted by the
|
|
:ref:`ALLOW_SAVE_PASSWORD <config_py>` setting.
|
|
|
|
The password is not shown again in pgAdmin after the dialog is closed. If you
|
|
lose it, reset it from the pgEdge Starfleet console.
|
|
|
|
.. note:: pgAdmin contacts the Starfleet API at the address given by the
|
|
*STARFLEET_API_URL* configuration setting, which defaults to
|
|
*https://api.pgedge.com*. The address must use HTTPS.
|