google / google/stellar-engine
[Feature Request] gem4gov: add a license-retraction command (retractLicenseConfig) + range-reclaim helper
- Dominant language
- HCL
- Stars
- 49
- Forks
- 20
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 28
Description
The licensing API documents `retractLicenseConfig` (project → billing account), but the CLI has no retract command — the `license` group has `list` and `distribute` only (`grep -n retractLicenseConfig gem4gov.py` → no matches). Add `gem4gov license retract`, optionally with a batch/range helper.
## Use Case
Post-engagement license reclamation across a range of orgs/projects is entirely manual today. Operators reclaiming distributed licenses back to a central billing account have no scripted path.
## Proposed Solution
Add `gem4gov license retract` wrapping `retractLicenseConfig`, mirroring `distribute`'s structure; optionally a batch/range helper for operators reclaiming across many projects/orgs.
## Compliance & Deployment Context
* **Target Deployment Type(s):**
* [ ] US Region Restricted (e.g., Access Policy constraint)
* [ ] FedRAMP Medium
* [x] FedRAMP High
* [ ] DoD IL4
* [ ] DoD IL5
* [ ] All / General
* **Relevant NIST 800-53r5 Controls:** AC-2 (account management / deprovisioning).
## Reusability Check
Stellar Engine prioritizes reusability.
* [x] I have checked if this functionality can be achieved by extending an existing module or blueprint. (Extends the existing `license` group.)
* [x] I have verified that this does not duplicate existing functionality.
## Alternatives Considered
Manual reclamation via REST per project (current state); leaving licenses distributed (cost and audit hygiene both suffer).
## Additional Context
Verified at `main` @ `3728fc98`. Related: #100 (CLI→Terraform conversion).
Contributor guide
Research direction
Start in gem4gov.py by examining the existing license group and its distribute command, then compare the documented retractLicenseConfig API referenced in the issue. Implement the retract command for project-to-billing-account reclamation; treat the batch/range helper as optional and confirm the command is available under the license group.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, cloud
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100