Repository navigation
cloudexit 2.0: platform uploads via API v2, out-of-repo configuration, a versioned catalogue, and a restructured, hardened codebase - #114
Merged
Merged
Conversation
Add AGENTS.md with contributor and agent working rules
Foundation for CLI 2.0: exit codes, config.py hygiene, dependency refresh
Add configuration precedence, key files and the config command
Update the catalogue through its manifest and add catalogue commands
Build the sync document from the API v2 definition
Always compute and write the local report, and only record upload links
Replace the PDF with the Basic Executive Summary
Add the API v2 client and remove the v1 client
Ship the report assets inside the installed package
Count Azure resources without a location as global
Identify release/2.0 builds as 2.0.0.dev0
Make Azure imports lazy and fix upgrades from 1.x environments
Remove the shared icon images and draw a placeholder instead
Remove unused assets and legacy report code
Name every logger after its module
Split the argument parser out of cloudexit.cli.app
Split the catalogue download code out of the store
…tials Stop writing credential identifiers into the egress PDF and run.log
Add legal notices to the reports and mark the edition
Rebuild the egress PDF as the Egress & Data Landscape companion document
Add a sample report matrix for developers
Replace the two HTML reports with one offline report page
Fine-tune the Community reports
Harden error output, spool delivery, report files and catalogue loading
…entials in -vv logs
…lish Remove the legacy settings sources, the promotional text and the credentials in -vv logs
Trim the README to a pointer, and add the changelog and migration guide
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
cloudexit 2.0 is the first release that can push assessments to a platform (EscapeCloud or ExitCloud) over the new API v2, while staying offline-first: every run still collects with the user's own credentials and produces a local report, and nothing leaves the machine unless a platform is configured. It also moves configuration out of the repository, gives the catalogue a real version and integrity story, reorganises the code into a single
cloudexitpackage, and closes a batch of security and robustness issues. Install is from a release tag; there is no PyPI.Changes
Platform integration (API v2)
POST /api/v2/syncsusing assessment or account keys; the key decides the target, and a provider/scope guard rejects a sync that doesn't fit the assessment.--upload auto|required|off,--strict,--dry-run,--output json(one JSON object on stdout, logs on stderr) andcloudexit status.cloudexit spool list|flush|purgeandcloudexit uploadfor air-gapped delivery. Spooled syncs are bound to the key that created them and never delivered with another key./metabefore anything is sent, and never appears in output or logs.Configuration
CLOUDEXIT_*environment variables,~/.config/cloudexit/config.toml(with profiles) and key files, withcloudexit config path|show.config.pyand theHOST/KEYenvironment variables are no longer read; a clear message points toCLOUDEXIT_HOST/CLOUDEXIT_API_KEY_FILE.Catalogue
cloudexit catalogue status|update|importand a--catalogue <file>run flag; air-gapped use is supported. A catalogue containing triggers or views is refused.Reports
index.html,report.pdf(Basic Executive Summary) andegress.pdf, with provenance and legal notices and no remote resources. Scores and full reports are produced on the platform after an upload.Codebase and tooling
cloudexitpackage (the generic top-levelcore/utils/mainmodules are gone);python3 main.pystill works from a checkout.Hardening
0700; credential identifiers never reach reports or logs; catalogue-supplied asset paths are constrained to the report folder;-vvno longer logs cloud credentials.Breaking changes
config.py,HOSTandKEYare no longer read (move toCLOUDEXIT_*).core/utils→cloudexit); thecloudexitcommand and its arguments are unchanged. Seedocs/migration-2.0.md.