Skip to content

Conversation

@skrobul
Copy link
Collaborator

@skrobul skrobul commented Sep 3, 2025

Quick script that cleans up tenant-specific data in Nautobot - removes Tenant, VRFs, UCVNIs, Virtual Machines and so on.

Dry-run

❯ python cleanup_storage_stuff_in_nautobot.py a8225d24-152a-4e45-85c2-634e7028b6f8
=== DRY RUN MODE ===
Use --really-delete to actually perform deletions

Target tenant: default:mareks-svm-test9 (a8225d24-152a-4e45-85c2-634e7028b6f8)

Objects to be deleted for tenant a8225d24-152a-4e45-85c2-634e7028b6f8:
  VRFs: 2
  Prefixes: 2
  IP Addresses: 12
  Virtual Machines: 1
  UCVNIs: 2

VRFs:
  - a_a8225d24152a4e4585c2634e70 (b7784998-76b0-44d6-a97b-bcc164ed673a)
  - b_a8225d24152a4e4585c2634e70 (70e39cac-a2d2-4874-94bd-08c460ff1e16)
Prefixes:
  - 100.127.0.48/29 (ec57ce40-5807-4a53-b094-a4bb39ee2c25)
  - 100.127.128.48/29 (9c64d661-8916-42cd-b0f9-e89dfe6572fc)
IP Addresses:
  - 100.127.0.49/29 (92b7908c-1179-455f-ab4a-cf3f7ee8dc78)
  - 100.127.0.50/29 (3f90b524-6bde-45d0-9d46-12bb455bf9af)
  - 100.127.0.51/29 (dcceeaa4-3331-49e8-8301-577be5e72d23)
  - 100.127.0.52/29 (3201737e-02dc-4408-8d10-5f3c850136ea)
  - 100.127.0.53/29 (8a1da14c-a1ee-4054-b8d0-21d658ce034d)
  - 100.127.0.54/29 (266c7ceb-6b50-427c-90b1-03a46dba7ccc)
  - 100.127.128.49/29 (d108ceb3-ff5e-438c-bcec-bf5b2461381f)
  - 100.127.128.50/29 (0c863530-9059-4a18-a514-24f67c76fcad)
  - 100.127.128.51/29 (9dfc0fc2-3fc3-43ee-b177-4e6c3cf812f3)
  - 100.127.128.52/29 (cef1ff4c-19e2-47ce-ab68-aa63c48907c0)
  - 100.127.128.53/29 (9693e877-d416-4d87-977f-4294cb56bffc)
  - 100.127.128.54/29 (4556a4a2-4f88-4808-bb06-9c09846cecac)
Virtual Machines:
  - os-a8225d24152a4e4585c2634e7028b6f8 (9cedaa19-e63c-4683-b720-a0c3954a8820)
UCVNIs:
  - tenant_san_a (1250024) -> UCVNI Group(spine402-storage-path-A) (606d0ea3-ff87-4dc0-b373-5a32c276f2ce)
  - tenant_san_b (1275021) -> UCVNI Group(spine402-storage-path-B) (446b32a3-aff3-4be9-9f13-908806376e1a)

[DRY RUN] Deleting Virtual Machines...
  Would delete: os-a8225d24152a4e4585c2634e7028b6f8 (9cedaa19-e63c-4683-b720-a0c3954a8820)
[DRY RUN] Deleting IP Addresses...
  Would delete: 100.127.0.49/29 (92b7908c-1179-455f-ab4a-cf3f7ee8dc78)
  Would delete: 100.127.0.50/29 (3f90b524-6bde-45d0-9d46-12bb455bf9af)
  Would delete: 100.127.0.51/29 (dcceeaa4-3331-49e8-8301-577be5e72d23)
  Would delete: 100.127.0.52/29 (3201737e-02dc-4408-8d10-5f3c850136ea)
  Would delete: 100.127.0.53/29 (8a1da14c-a1ee-4054-b8d0-21d658ce034d)
  Would delete: 100.127.0.54/29 (266c7ceb-6b50-427c-90b1-03a46dba7ccc)
  Would delete: 100.127.128.49/29 (d108ceb3-ff5e-438c-bcec-bf5b2461381f)
  Would delete: 100.127.128.50/29 (0c863530-9059-4a18-a514-24f67c76fcad)
  Would delete: 100.127.128.51/29 (9dfc0fc2-3fc3-43ee-b177-4e6c3cf812f3)
  Would delete: 100.127.128.52/29 (cef1ff4c-19e2-47ce-ab68-aa63c48907c0)
  Would delete: 100.127.128.53/29 (9693e877-d416-4d87-977f-4294cb56bffc)
  Would delete: 100.127.128.54/29 (4556a4a2-4f88-4808-bb06-9c09846cecac)
[DRY RUN] Deleting Prefixes...
  Would delete: 100.127.0.48/29 (ec57ce40-5807-4a53-b094-a4bb39ee2c25)
  Would delete: 100.127.128.48/29 (9c64d661-8916-42cd-b0f9-e89dfe6572fc)
[DRY RUN] Deleting VRFs...
  Would delete: a_a8225d24152a4e4585c2634e70 (b7784998-76b0-44d6-a97b-bcc164ed673a)
  Would delete: b_a8225d24152a4e4585c2634e70 (70e39cac-a2d2-4874-94bd-08c460ff1e16)
[DRY RUN] Deleting UCVNIs...
  Would delete: tenant_san_a (606d0ea3-ff87-4dc0-b373-5a32c276f2ce)
  Would delete: tenant_san_b (446b32a3-aff3-4be9-9f13-908806376e1a)

Object deletion completed successfully
[DRY RUN] Would delete tenant: default:mareks-svm-test9 (a8225d24-152a-4e45-85c2-634e7028b6f8)
Tenant deletion completed successfully

=== DRY RUN COMPLETED ===
No actual changes were made. Use --really-delete to perform deletions.

Full write

❯ python cleanup_storage_stuff_in_nautobot.py a8225d24-152a-4e45-85c2-634e7028b6f8 --really-delete
=== DELETION MODE ===
This will permanently delete objects!

Target tenant: default:mareks-svm-test9 (a8225d24-152a-4e45-85c2-634e7028b6f8)

Objects to be deleted for tenant a8225d24-152a-4e45-85c2-634e7028b6f8:
  VRFs: 2
  Prefixes: 2
  IP Addresses: 12
  Virtual Machines: 1
  UCVNIs: 2

VRFs:
  - a_a8225d24152a4e4585c2634e70 (b7784998-76b0-44d6-a97b-bcc164ed673a)
  - b_a8225d24152a4e4585c2634e70 (70e39cac-a2d2-4874-94bd-08c460ff1e16)
Prefixes:
  - 100.127.0.48/29 (ec57ce40-5807-4a53-b094-a4bb39ee2c25)
  - 100.127.128.48/29 (9c64d661-8916-42cd-b0f9-e89dfe6572fc)
IP Addresses:
  - 100.127.0.49/29 (92b7908c-1179-455f-ab4a-cf3f7ee8dc78)
  - 100.127.0.50/29 (3f90b524-6bde-45d0-9d46-12bb455bf9af)
  - 100.127.0.51/29 (dcceeaa4-3331-49e8-8301-577be5e72d23)
  - 100.127.0.52/29 (3201737e-02dc-4408-8d10-5f3c850136ea)
  - 100.127.0.53/29 (8a1da14c-a1ee-4054-b8d0-21d658ce034d)
  - 100.127.0.54/29 (266c7ceb-6b50-427c-90b1-03a46dba7ccc)
  - 100.127.128.49/29 (d108ceb3-ff5e-438c-bcec-bf5b2461381f)
  - 100.127.128.50/29 (0c863530-9059-4a18-a514-24f67c76fcad)
  - 100.127.128.51/29 (9dfc0fc2-3fc3-43ee-b177-4e6c3cf812f3)
  - 100.127.128.52/29 (cef1ff4c-19e2-47ce-ab68-aa63c48907c0)
  - 100.127.128.53/29 (9693e877-d416-4d87-977f-4294cb56bffc)
  - 100.127.128.54/29 (4556a4a2-4f88-4808-bb06-9c09846cecac)
Virtual Machines:
  - os-a8225d24152a4e4585c2634e7028b6f8 (9cedaa19-e63c-4683-b720-a0c3954a8820)
UCVNIs:
  - tenant_san_a (1250024) -> UCVNI Group(spine402-storage-path-A) (606d0ea3-ff87-4dc0-b373-5a32c276f2ce)
  - tenant_san_b (1275021) -> UCVNI Group(spine402-storage-path-B) (446b32a3-aff3-4be9-9f13-908806376e1a)

Are you sure you want to delete 19 objects and the tenant? (yes/no): yes
Deleting Virtual Machines...
  Skipped: 9cedaa19-e63c-4683-b720-a0c3954a8820 (already deleted)
Deleting IP Addresses...
  Skipped: 92b7908c-1179-455f-ab4a-cf3f7ee8dc78 (already deleted)
  Skipped: 3f90b524-6bde-45d0-9d46-12bb455bf9af (already deleted)
  Skipped: dcceeaa4-3331-49e8-8301-577be5e72d23 (already deleted)
  Skipped: 3201737e-02dc-4408-8d10-5f3c850136ea (already deleted)
  Skipped: 8a1da14c-a1ee-4054-b8d0-21d658ce034d (already deleted)
  Skipped: 266c7ceb-6b50-427c-90b1-03a46dba7ccc (already deleted)
  Skipped: d108ceb3-ff5e-438c-bcec-bf5b2461381f (already deleted)
  Skipped: 0c863530-9059-4a18-a514-24f67c76fcad (already deleted)
  Skipped: 9dfc0fc2-3fc3-43ee-b177-4e6c3cf812f3 (already deleted)
  Skipped: cef1ff4c-19e2-47ce-ab68-aa63c48907c0 (already deleted)
  Skipped: 9693e877-d416-4d87-977f-4294cb56bffc (already deleted)
  Skipped: 4556a4a2-4f88-4808-bb06-9c09846cecac (already deleted)
Deleting Prefixes...
  Skipped: ec57ce40-5807-4a53-b094-a4bb39ee2c25 (already deleted)
  Skipped: 9c64d661-8916-42cd-b0f9-e89dfe6572fc (already deleted)
Deleting VRFs...
  Skipped: b7784998-76b0-44d6-a97b-bcc164ed673a (already deleted)
  Skipped: 70e39cac-a2d2-4874-94bd-08c460ff1e16 (already deleted)
Deleting UCVNIs...
  Skipped: 606d0ea3-ff87-4dc0-b373-5a32c276f2ce (already deleted)
  Skipped: 446b32a3-aff3-4be9-9f13-908806376e1a (already deleted)

Deletion summary: 19 deleted, 19 already gone

Object deletion completed successfully
Deleted tenant: default:mareks-svm-test9 (a8225d24-152a-4e45-85c2-634e7028b6f8)
Tenant deletion completed successfully

@skrobul skrobul requested a review from a team September 3, 2025 11:48
@cardoe
Copy link
Contributor

cardoe commented Sep 3, 2025

@skrobul want to actually discuss this. Almost seems like we need a SSoT plugin for Nautobot to clean itself up relative to the OpenStack environments.

@cardoe cardoe enabled auto-merge September 3, 2025 14:36
@cardoe cardoe added this pull request to the merge queue Sep 3, 2025
Merged via the queue into main with commit 307eb50 Sep 3, 2025
17 checks passed
@cardoe cardoe deleted the storage-cleanup-script branch September 3, 2025 14:36
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.

3 participants