Skip to content

chore(cloud): remove EDB BigAnimal cloud deployment feature#10018

Closed
asheshv wants to merge 1 commit into
pgadmin-org:masterfrom
asheshv:chore/remove-edb-biganimal
Closed

chore(cloud): remove EDB BigAnimal cloud deployment feature#10018
asheshv wants to merge 1 commit into
pgadmin-org:masterfrom
asheshv:chore/remove-edb-biganimal

Conversation

@asheshv

@asheshv asheshv commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Removes the EDB BigAnimal cloud-deployment integration from the Cloud Wizard. AWS RDS, Azure Database, and Google Cloud SQL remain as the supported deployment targets.

What's gone

Backend

  • web/pgadmin/misc/cloud/biganimal/ — Flask blueprint, nine endpoints (verification, projects, providers, regions, db_types, db_versions, instance_types, volume_types, volume_properties), and its unit tests.
  • web/pgacloud/providers/biganimal.py — the pgacloud CLI provider that backed the actual deployment step.
  • misc/cloud/__init__.py — BigAnimal blueprint registration, deploy_on_biganimal dispatch branch, clear_biganimal_session call.
  • misc/cloud/utils/__init__.py — the "EDB BigAnimal" branch from CloudProcessDesc.

Frontend

  • biganimal.js, biganimal_schema.ui.js, and biganimal.svg.
  • cloud_constants.jsBIGANIMAL removed from CLOUD_PROVIDERS and CLOUD_PROVIDERS_LABELS.
  • cloud_components.jsxgetBigAnimalSummary import and the corresponding branch in FinalSummary (the clusterTypeData propType too).
  • ExternalIcon.jsxBigAnimalIcon import and exported component.
  • CloudWizard.jsx — all BigAnimal step content (cluster-type / instance / database / review), the verification banner, the authenticateBigAnimal flow, and the now-unused PrimaryButton / isEmptyString imports.

Wizard restructuring — The BigAnimal-only "Cluster Type" wizard step is removed entirely. Remaining steps renumber from 0–5 to 0–4, and the AWS/Azure/Google credentials-step "skip the empty cluster step" logic in onBeforeNext / onBeforeBack is dropped along with it. Net effect for AWS/Azure/Google users: one less click-through-an-empty-step.

Docs

  • docs/en_US/cloud_edb_biganimal.rst and six PNG screenshots removed.
  • docs/en_US/cloud_deployment.rst — entry dropped from the toctree and provider description.

Comment cleanup

  • utils/session.py and utils/tests/test_session_file_format.py docstrings — BigAnimal dropped from the cloud-credentials enumeration.

What's intentionally untouched

  • Historical release notes (release_notes_*.rst) — these are an archive of what shipped at each version. Editing them rewrites history.
  • Translation .po / .pot files — translations regenerate from source on the next i18n pass; touching them by hand creates churn.
  • docs/proposals/2026-04-30-eliminate-rce-and-symlink-escape.md — a dated design proposal that lists BigAnimal as one of the cloud modules it analyzed. Same archival reasoning as release notes.

Side-effect worth flagging

The Azure cluster-name availability check in onBeforeNext at activeStep == 2 was dead code in the original wizard flow: AWS/Azure/Google's step-1 resolve(true) skipped past the BigAnimal-only "Cluster Type" step, so step 2's beforeNext handler never fired. After renumbering, step 2 is now the Azure Instance Specification step, which is precisely when you'd want to verify the cluster name before advancing to Database Details. The check is now actually exercised — intentional and an improvement, not a regression. Reviewers may want to double-check it works as expected against a real Azure backend.

Test plan

  • pycodestyle --config=.pycodestyle clean on changed Python.
  • yarn run eslint -c .eslintrc.js clean on changed JS/JSX.
  • python regression/runtests.py --pkg misc.cloud — 19/19 pass.
  • python regression/runtests.py --pkg utils.tests.test_session_file_format — 18/18 pass.
  • yarn run test:js-once — 824/824 pass.
  • Manual smoke in the Cloud Wizard:
    • Open Cloud Wizard — provider list shows AWS / Azure / Google (no BigAnimal).
    • AWS flow: Cloud Provider → Credentials → Instance Specification → Database Details → Review → Deploy.
    • Azure flow: same five-step path; verify cluster-name availability check fires when leaving Instance Specification (this is the side-effect noted above).
    • Google flow: same five-step path.
  • Confirm no stale localStorage / session state survives a 9.15 → this-branch upgrade (no BigAnimal-specific keys read anywhere).

Summary by CodeRabbit

  • Documentation

    • Removed EDB BigAnimal cloud deployment documentation.
  • Chores

    • Removed EDB BigAnimal as a supported cloud provider. Cloud deployment wizard now supports AWS RDS, Azure Database, and Google Cloud SQL only.

BigAnimal was one of four cloud-deployment targets in the Cloud
Wizard alongside AWS RDS, Azure Database, and Google Cloud SQL.
Drop the integration entirely:

Backend
  - Delete web/pgadmin/misc/cloud/biganimal/ (Flask blueprint,
    nine endpoints: verification, projects, providers, regions,
    db_types, db_versions, instance_types, volume_types,
    volume_properties) and its unit tests.
  - Delete web/pgacloud/providers/biganimal.py (CLI provider
    backing the deploy_on_biganimal step).
  - misc/cloud/__init__.py: drop the BigAnimal blueprint
    registration, the deploy_on_biganimal dispatch branch, and
    the clear_biganimal_session call from clear_cloud_session.
  - misc/cloud/utils/__init__.py: drop the "EDB BigAnimal"
    branch from CloudProcessDesc.

Frontend
  - Delete biganimal.js / biganimal_schema.ui.js and the
    biganimal.svg provider logo.
  - cloud_constants.js: drop BIGANIMAL from CLOUD_PROVIDERS
    and CLOUD_PROVIDERS_LABELS.
  - cloud_components.jsx: drop getBigAnimalSummary import and
    the corresponding branch in FinalSummary.
  - ExternalIcon.jsx: drop the BigAnimal icon import and
    exported component.
  - CloudWizard.jsx: drop the BigAnimal step content
    (cluster-type / instance / database / review branches),
    the verification banner and authenticateBigAnimal flow, and
    the unused PrimaryButton / isEmptyString imports. The
    BigAnimal-only "Cluster Type" wizard step is removed
    entirely; remaining steps renumber from 0-5 to 0-4, and the
    AWS/Azure/Google credentials-step "skip the empty cluster
    step" logic in onBeforeNext/onBeforeBack is dropped along
    with it.

Docs
  - Remove docs/en_US/cloud_edb_biganimal.rst and its six PNG
    screenshots; drop the entry from cloud_deployment.rst's
    toctree and provider list.

Comments
  - utils/session.py and utils/tests/test_session_file_format.py
    docstrings: drop BigAnimal from the cloud-credentials list.

Side-effect worth noting
  - The Azure cluster-name availability check in onBeforeNext at
    activeStep == 2 was dead code in the original wizard flow:
    AWS/Azure/Google's step-1 resolve(true) skipped past the
    BigAnimal-only "Cluster Type" step, so step 2's beforeNext
    handler never fired. After renumbering, step 2 is now the
    Azure Instance Specification step, which is precisely when
    you'd want to verify the cluster name before advancing to
    Database Details. The check is now actually exercised —
    intentional and an improvement, not a regression.

Historical release notes and translation .po/.pot files are
intentionally left untouched — release notes are an archive of
what shipped at each version, and translations regenerate from
source on the next i18n pass.

Verified:
  - pycodestyle --config=.pycodestyle clean on changed Python.
  - yarn run eslint clean on changed JS/JSX.
  - python regression/runtests.py --pkg misc.cloud: 19/19 pass.
  - python regression/runtests.py --pkg utils.tests
    .test_session_file_format: 18/18 pass.
  - yarn run test:js-once: 824/824 pass.
@coderabbitai

coderabbitai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

This pull request removes EDB BigAnimal cloud provider support from pgAdmin4, eliminating documentation pages, backend Flask blueprint and provider implementations, frontend wizard flow and UI components, and related utility references across documentation, Python backend, and JavaScript frontend code.

Changes

BigAnimal Cloud Provider Removal

Layer / File(s) Summary
Documentation cleanup
docs/en_US/cloud_deployment.rst, docs/en_US/cloud_edb_biganimal.rst
BigAnimal is removed from the cloud deployment introduction and navigation, and the full BigAnimal documentation page is deleted.
Cloud module backend refactoring
web/pgadmin/misc/cloud/__init__.py
Module no longer imports BigAnimal deployment/session helpers, registers the BigAnimal blueprint, dispatches to BigAnimal deployment, or clears BigAnimal session state.
CloudWizard component refactoring
web/pgadmin/misc/cloud/static/js/CloudWizard.jsx
Removes BigAnimal provider option, authentication state/handlers, and cluster-type step; adjusts step indices and validation gates for AWS/Azure/Google; refactors credential verification and instance/database/review UI rendering.
Frontend component and constant cleanup
web/pgadmin/misc/cloud/static/js/cloud_components.jsx, web/pgadmin/misc/cloud/static/js/cloud_constants.js, web/pgadmin/static/js/components/ExternalIcon.jsx
FinalSummary removes BigAnimal branch logic and clusterTypeData prop; CLOUD_PROVIDERS and CLOUD_PROVIDERS_LABELS remove BigAnimal entry; BigAnimalIcon component export is removed.
Utility and test documentation cleanup
web/pgadmin/misc/cloud/utils/__init__.py, web/pgadmin/utils/session.py, web/pgadmin/utils/tests/test_session_file_format.py
Removes BigAnimal fallback in provider mapping and updates docstring examples to remove BigAnimal references.

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: removing the EDB BigAnimal cloud deployment feature from the system.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/pgadmin/misc/cloud/static/js/CloudWizard.jsx`:
- Around line 229-243: The code is inspecting res.data.success but
checkClusternameAvailbility already resolves res.data, so change the check to
use res.success (e.g., if (res && res.success == 0)). Also avoid passing the
whole Error object into gettext/setErrMsg; use the error's readable text
(error.message or error.toString()) and pass that to setErrMsg and to the reject
(e.g., setErrMsg([MESSAGE_TYPE.ERROR, gettext(error.message)]) and reject(new
Error(error.message))). Update references in the CLOUD_PROVIDERS.AZURE /
activeStep branch where setErrMsg, checkClusternameAvailbility, and reject are
used.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: c959869f-ffac-479b-b17e-e84166e94bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 291a55e and 279babc.

⛔ Files ignored due to path filters (7)
  • docs/en_US/cloud_biganimal_cluster.png is excluded by !**/*.png
  • docs/en_US/images/cloud_biganimal_cluster.png is excluded by !**/*.png
  • docs/en_US/images/cloud_biganimal_credentials.png is excluded by !**/*.png
  • docs/en_US/images/cloud_biganimal_database.png is excluded by !**/*.png
  • docs/en_US/images/cloud_biganimal_instance.png is excluded by !**/*.png
  • docs/en_US/images/cloud_biganimal_review.png is excluded by !**/*.png
  • web/pgadmin/static/img/biganimal.svg is excluded by !**/*.svg
📒 Files selected for processing (16)
  • docs/en_US/cloud_deployment.rst
  • docs/en_US/cloud_edb_biganimal.rst
  • web/pgacloud/providers/biganimal.py
  • web/pgadmin/misc/cloud/__init__.py
  • web/pgadmin/misc/cloud/biganimal/__init__.py
  • web/pgadmin/misc/cloud/biganimal/tests/__init__.py
  • web/pgadmin/misc/cloud/biganimal/tests/test_biganimal_session_state.py
  • web/pgadmin/misc/cloud/static/js/CloudWizard.jsx
  • web/pgadmin/misc/cloud/static/js/biganimal.js
  • web/pgadmin/misc/cloud/static/js/biganimal_schema.ui.js
  • web/pgadmin/misc/cloud/static/js/cloud_components.jsx
  • web/pgadmin/misc/cloud/static/js/cloud_constants.js
  • web/pgadmin/misc/cloud/utils/__init__.py
  • web/pgadmin/static/js/components/ExternalIcon.jsx
  • web/pgadmin/utils/session.py
  • web/pgadmin/utils/tests/test_session_file_format.py
💤 Files with no reviewable changes (11)
  • docs/en_US/cloud_edb_biganimal.rst
  • web/pgacloud/providers/biganimal.py
  • web/pgadmin/misc/cloud/biganimal/tests/init.py
  • web/pgadmin/misc/cloud/biganimal/tests/test_biganimal_session_state.py
  • web/pgadmin/misc/cloud/static/js/cloud_constants.js
  • web/pgadmin/misc/cloud/utils/init.py
  • web/pgadmin/misc/cloud/static/js/biganimal_schema.ui.js
  • web/pgadmin/misc/cloud/static/js/biganimal.js
  • web/pgadmin/misc/cloud/biganimal/init.py
  • web/pgadmin/misc/cloud/init.py
  • web/pgadmin/static/js/components/ExternalIcon.jsx

Comment on lines +229 to 243
} else if (cloudProvider == CLOUD_PROVIDERS.AZURE
&& activeStep == 2) {
setErrMsg([MESSAGE_TYPE.INFO, gettext('Checking cluster name availability...')]);
checkClusternameAvailbility(azureInstanceData.name)
.then((res)=>{
if (res.data && res.data.success == 0 ) {
setErrMsg([MESSAGE_TYPE.ERROR, gettext('Specified cluster name is already used.')]);
}else{
setErrMsg(['', '']);
}
resolve();
})
.catch((error) => {
}).catch((error)=>{
setErrMsg([MESSAGE_TYPE.ERROR, gettext(error)]);
reject(new Error(gettext(error)));
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use the resolved Azure payload shape and preserve readable error text

Line 234 checks res.data.success, but this helper resolves res.data already, so this check is misaligned. Also, Line 241/242 wraps an Error object with gettext(error), which can surface as [object Object] instead of the actual message.

Suggested fix
       } else if (cloudProvider == CLOUD_PROVIDERS.AZURE
                  && activeStep == 2) {
         setErrMsg([MESSAGE_TYPE.INFO, gettext('Checking cluster name availability...')]);
         checkClusternameAvailbility(azureInstanceData.name)
           .then((res)=>{
-            if (res.data && res.data.success == 0 ) {
-              setErrMsg([MESSAGE_TYPE.ERROR, gettext('Specified cluster name is already used.')]);
-            }else{
-              setErrMsg(['', '']);
-            }
-            resolve();
+            if (!res?.success) {
+              const msg = gettext('Specified cluster name is already used.');
+              setErrMsg([MESSAGE_TYPE.ERROR, msg]);
+              reject(new Error(msg));
+              return;
+            }
+            setErrMsg(['', '']);
+            resolve();
           }).catch((error)=>{
-            setErrMsg([MESSAGE_TYPE.ERROR, gettext(error)]);
-            reject(new Error(gettext(error)));
+            const msg = error?.message || gettext('Error while checking server name availability with Microsoft Azure.');
+            setErrMsg([MESSAGE_TYPE.ERROR, msg]);
+            reject(new Error(msg));
           });
       }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/pgadmin/misc/cloud/static/js/CloudWizard.jsx` around lines 229 - 243, The
code is inspecting res.data.success but checkClusternameAvailbility already
resolves res.data, so change the check to use res.success (e.g., if (res &&
res.success == 0)). Also avoid passing the whole Error object into
gettext/setErrMsg; use the error's readable text (error.message or
error.toString()) and pass that to setErrMsg and to the reject (e.g.,
setErrMsg([MESSAGE_TYPE.ERROR, gettext(error.message)]) and reject(new
Error(error.message))). Update references in the CLOUD_PROVIDERS.AZURE /
activeStep branch where setErrMsg, checkClusternameAvailbility, and reject are
used.

dpage pushed a commit that referenced this pull request Jun 9, 2026
Removes the EDB BigAnimal cloud-deployment integration from the Cloud
Wizard. AWS RDS, Azure Database, and Google Cloud SQL remain as the
supported deployment targets. Covers the backend blueprint and pgacloud
provider, the frontend wizard steps/components/constants/icons, the
documentation page and screenshots, and stray BigAnimal references in
docstrings.

The BigAnimal-only "Cluster Type" wizard step is removed and the
remaining steps renumber from 0-5 to 0-4. As a side effect, the Azure
cluster-name availability check (previously dead code at activeStep == 2,
skipped past by the now-removed step) is now exercised. Two latent bugs
in that check are fixed at the same time: it inspected res.data.success
although checkClusternameAvailbility already resolves res.data, so a name
collision was never reported; and it passed an Error object to gettext(),
which cannot render it. It now uses res.success and surfaces
error.message with a readable fallback.

A 9.16 Housekeeping release-note entry is added documenting the removal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dpage

dpage commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Merged to master as 94a7687 (squashed, with you as author).

Two review fixes were folded into the merge commit:

  • Added a 9.16 Housekeeping release-note entry for the removal.
  • Fixed the now-live Azure cluster-name availability check in CloudWizard.jsx. Removing the BigAnimal "Cluster Type" step renumbers the wizard so this check (previously dead code at activeStep == 2) is now exercised — it inspected res.data.success although checkClusternameAvailbility already resolves res.data (so a collision was never reported), and it passed an Error object to gettext(). It now uses res.success and surfaces error.message with a readable fallback.

Thanks @asheshv!

@dpage dpage closed this Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants