Skip to content

Commit b212eef

Browse files
authored
Merge pull request #237 from linode/feature/bucket-recursive-delete
Allow recursively deleting not-empty buckets
2 parents 527fcf9 + 0484464 commit b212eef

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

linodecli/plugins/obj.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,25 @@ def delete_bucket(get_client, args):
154154

155155
parser.add_argument('name', metavar='NAME', type=str,
156156
help="The name of the bucket to remove.")
157+
parser.add_argument('--recursive', action="store_true",
158+
help="If given, force removal of non-empty buckets by deleting "
159+
"all objects in the bucket before deleting the bucket. For "
160+
"large buckets, this may take a while.")
157161

158162
parsed = parser.parse_args(args)
159163
client = get_client()
160164

165+
if parsed.recursive:
166+
try:
167+
bucket = client.get_bucket(parsed.name)
168+
except S3ResponseError:
169+
print('No bucket named '+parsed.name)
170+
sys.exit(2)
171+
172+
for c in bucket.list():
173+
print("delete: {} {}".format(parsed.name, c.key))
174+
bucket.delete_key(c)
175+
161176
client.delete_bucket(parsed.name)
162177

163178
print("Bucket {} removed".format(parsed.name))

0 commit comments

Comments
 (0)