Add universal cloud cred ref ID and orphaned instance cleanup #26
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.
Add universal cloud cred ref ID and orphaned instance cleanup
Summary
This PR implements a system for cleaning up orphaned cloud instances from validation testing. The changes include:
UniversalCloudCredRefID = "brev-validation-test"in the validation package that all validation tests now useCleanupOrphanedInstances()that identifies and terminates instances older than 1 hour with the universal credential reference IDcmd/cleanup/main.gowith dry-run support for manual/automated cleanup operationsThe implementation targets Lambda Labs initially but is designed to be extensible to other cloud providers.
Review & Testing Checklist for Human
go run cmd/cleanup/main.go -provider=lambdalabs -dry-run=trueto verify it correctly identifies orphaned instances without deleting themCloudCredRefIDmatching only targets instances created with the universal validation credential, not production instancesDiagram
%%{ init : { "theme" : "default" }}%% flowchart TD ValidationSuite["internal/validation/suite.go<br/>UniversalCloudCredRefID constant<br/>CleanupOrphanedInstances function"]:::major-edit ValidationTest["internal/lambdalabs/v1/validation_test.go<br/>Updated to use universal constant"]:::minor-edit GitHubAction[".github/workflows/cleanup-orphaned-instances.yml<br/>Disabled by default workflow"]:::major-edit CLITool["cmd/cleanup/main.go<br/>Command-line cleanup tool"]:::major-edit LambdaLabsClient["internal/lambdalabs/v1/instance.go<br/>ListInstances & TerminateInstance"]:::context ValidationSuite --> ValidationTest GitHubAction --> CLITool CLITool --> ValidationSuite ValidationSuite --> LambdaLabsClient subgraph Legend L1[Major Edit]:::major-edit L2[Minor Edit]:::minor-edit L3[Context/No Edit]:::context end classDef major-edit fill:#90EE90 classDef minor-edit fill:#87CEEB classDef context fill:#FFFFFFNotes
Link to Devin run: https://app.devin.ai/sessions/ed3c049e29244357b8ea2587a22d7cd8
Requested by: @theFong