cloudyr / googleCloudStorageR

Google Cloud Storage API to R

Home Page:https://code.markedmondson.me/googleCloudStorageR

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Make it easier to delete buckets with versioned objects

MarkEdmondson1234 opened this issue · comments

It won't let you delete the bucket if a versioned object still in there. a few hoops to go through to delete them too

gcp_gcs_delete_bucket <- function(bucket){
  # have to delete all objects in a bucket first
  os <- googleCloudStorageR::gcs_list_objects(bucket, 
                                              versions = TRUE, 
                                              detail = "full")
  safe_delete <- function(x, bucket, version = NULL){
    tryCatch({
      googleCloudStorageR::gcs_delete_object(x, 
                                             bucket = bucket,
                                             generation = version)
    }, error = function(ex) {
      NULL
    })
  }
  
  lapply(os$name, safe_delete, bucket = bucket)
  mapply(safe_delete, 
         x = os$name, version = os$generation, 
         MoreArgs = list(bucket = bucket))
  bb <- googleCloudStorageR::gcs_get_bucket(bucket)
  googleCloudStorageR::gcs_delete_bucket(bb$name)
}

Above now in gcs_delete_bucket_objects() and gcs_delete_bucket(force_delete=TRUE)