원클릭으로
ovstorage-user-delete-safely
Use when removing objects safely, especially recursive directories or targets that need a dry-run first.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when removing objects safely, especially recursive directories or targets that need a dry-run first.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | ovstorage-user-delete-safely |
| description | Use when removing objects safely, especially recursive directories or targets that need a dry-run first. |
| license | CC-BY-4.0 |
| version | 0.1.0 |
| author | NVIDIA Omniverse |
| tags | ["ovstorage","delete","safety"] |
| tools | ["Read"] |
| compatibility | Requires ovstorage MCP tools or equivalent library calls and an already-configured backend route. |
Goal: Remove objects without losing data you didn't mean to lose.
When to use this: Cleaning up after a job, removing stale state, or implementing user-initiated delete. Especially when the target is a directory or you're not 100% sure what's underneath it.
Removes one object. Low risk — there's exactly one thing to delete.
{
"tool": "ovstorage_delete",
"arguments": {
"address": "s3://my-bucket/temp/scratch.bin"
}
}
Successful response:
{"v": "0.1", "ok": true, "operation": "ovstorage_delete", "result": {"ok": true}}
Recursive directory deletes are dangerous. The tool requires an
explicit dry_run parameter. Always run with dry_run: true first
and review the plan.
{
"tool": "ovstorage_delete_directory",
"arguments": {
"address": "s3://my-bucket/old-results/",
"recursive": true,
"dry_run": true
}
}
Response shows what would be deleted:
{
"v": "0.1",
"ok": true,
"operation": "ovstorage_delete_directory",
"result": {
"dry_run": true,
"would_delete_count": 47,
"would_delete_paths": [
"s3://my-bucket/old-results/run-001/output.json",
"s3://my-bucket/old-results/run-001/log.txt",
"..."
]
}
}
Read the count. Read enough of would_delete_paths to confirm the
shape matches your intent. If anything surprises you, stop.
If the plan is right, repeat the call with dry_run: false:
{
"tool": "ovstorage_delete_directory",
"arguments": {
"address": "s3://my-bucket/old-results/",
"recursive": true,
"dry_run": false
}
}
Response:
{
"v": "0.1",
"ok": true,
"operation": "ovstorage_delete_directory",
"result": {"dry_run": false, "deleted": true}
}
If you just want to remove an empty directory marker:
{
"tool": "ovstorage_delete_directory",
"arguments": {
"address": "s3://my-bucket/empty/",
"recursive": false,
"dry_run": false
}
}
This fails with DirectoryNotEmpty if anything's underneath.
dry_run: false to "skip the confirmation." That's exactly what it does, and that's exactly the bug.error.code | Likely cause | What to do |
|---|---|---|
NotFound | Address doesn't exist | Already gone — your work here is done |
DirectoryNotEmpty | Non-recursive delete on a non-empty directory | Either drop the contents first, or use recursive: true (with dry-run!) |
PermissionDenied | Credentials can't delete | Check ovstorage_doctor |
Unsupported | Backend doesn't support delete | Rare — check ovstorage_capabilities for that prefix |
ResourceExhausted | Dry-run found >100k entries | Target a narrower prefix and delete in batches |
Deploy and develop against NVIDIA Omniverse Storage APIs on any Kubernetes cluster (MicroK8s, EKS, AKS, GKE, bare metal). Two storage adapters: (1) Example Storage Adapter — Python filesystem reference implementation + Discovery for learning and custom adapter development; (2) S3/Azure Production Storage Adapter — NVIDIA pre-built S3/Azure adapter + Discovery as minimum, expandable with Event Aggregation, Event Consumer, RabbitMQ, Envoy Auth Extension, Storage Navigator, and Contour ingress. Can deploy on the developer's behalf (generating scripts + .env) or guide manual deployment. Custom adapter development covers three APIs: Storage, Notifications, and Permissions. Use when a developer asks about deploying, configuring, validating, troubleshooting, or building any component of the Omniverse Storage APIs stack.
Use when adding or reviewing an authz plugin for ovstorage-broker or ovstorage-rest - covers the AuthzPlugin trait, the 21 operations, the policy-epoch model, and the cdylib cancellation contract.
Use when adding or reviewing a storage backend plugin for ovstorage.
Use when Rust changes affect ovstorage C or C++ headers and checked-in generated headers must be refreshed.
Use when starting an ovstorage-broker locally for development or integration testing - covers a minimal TOML, the cdylib plugin path, and how to hit the listener with broker-client or curl.
Use when checking the Storage API wire contract that ovstorage-plugin-services-client depends on.