зеркало из https://github.com/Azure/AzureRMR.git
better deletion of resources, templates
This commit is contained in:
Родитель
8517488205
Коммит
1e2ad8a961
|
@ -38,7 +38,7 @@ public=list(
|
||||||
{
|
{
|
||||||
# TODO: allow wait until complete
|
# TODO: allow wait until complete
|
||||||
private$rg_op(http_verb="DELETE")
|
private$rg_op(http_verb="DELETE")
|
||||||
message("Resource group '", self$name, "' will be deleted. This operation may take some time to complete.")
|
message("Deleting resource group '", self$name, "'. This operation may take some time to complete.")
|
||||||
private$is_valid <- FALSE
|
private$is_valid <- FALSE
|
||||||
invisible(NULL)
|
invisible(NULL)
|
||||||
},
|
},
|
||||||
|
|
|
@ -82,11 +82,18 @@ public=list(
|
||||||
invisible(NULL)
|
invisible(NULL)
|
||||||
},
|
},
|
||||||
|
|
||||||
delete=function()
|
delete=function(wait=FALSE)
|
||||||
{
|
{
|
||||||
# TODO: allow wait until complete
|
|
||||||
private$res_op(http_verb="DELETE")
|
private$res_op(http_verb="DELETE")
|
||||||
message("Resource '", self$name, "' will be deleted. This operation may take some time to complete.")
|
message("Deleting resource '", file.path(self$type, self$name), "'")
|
||||||
|
|
||||||
|
status <- 200
|
||||||
|
while(wait && status < 300)
|
||||||
|
{
|
||||||
|
res <- private$res_op(http_status_handler="pass")
|
||||||
|
status <- httr::status_code(res)
|
||||||
|
}
|
||||||
|
|
||||||
private$is_valid <- FALSE
|
private$is_valid <- FALSE
|
||||||
invisible(NULL)
|
invisible(NULL)
|
||||||
},
|
},
|
||||||
|
|
|
@ -32,16 +32,26 @@ public=list(
|
||||||
NULL
|
NULL
|
||||||
},
|
},
|
||||||
|
|
||||||
|
cancel=function(free_resources=FALSE)
|
||||||
|
{
|
||||||
|
message("Cancelling deployment of template '", self$name, "'")
|
||||||
|
if(free_resources)
|
||||||
|
private$free_resources()
|
||||||
|
else message("Associated resources have not been freed.")
|
||||||
|
|
||||||
|
private$tpl_op("cancel", http_verb="POST")
|
||||||
|
private$is_valid <- FALSE
|
||||||
|
invisible(NULL)
|
||||||
|
},
|
||||||
|
|
||||||
delete=function(free_resources=FALSE)
|
delete=function(free_resources=FALSE)
|
||||||
{
|
{
|
||||||
|
message("Deleting template '", self$name, "'")
|
||||||
if(free_resources)
|
if(free_resources)
|
||||||
{
|
private$free_resources()
|
||||||
message("Deleting resources for template '", self$name, "'...'")
|
else message("Associated resources have not been freed.")
|
||||||
# TODO: recursively delete all resources for this template
|
|
||||||
}
|
|
||||||
|
|
||||||
private$tpl_op(http_verb="DELETE")
|
private$tpl_op(http_verb="DELETE")
|
||||||
message("Template '", self$name, "' deleted")
|
|
||||||
private$is_valid <- FALSE
|
private$is_valid <- FALSE
|
||||||
invisible(NULL)
|
invisible(NULL)
|
||||||
},
|
},
|
||||||
|
@ -113,6 +123,28 @@ private=list(
|
||||||
validate_object_names(names(properties), required_names, optional_names)
|
validate_object_names(names(properties), required_names, optional_names)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
free_resources=function()
|
||||||
|
{
|
||||||
|
free_dependency <- function(id)
|
||||||
|
{
|
||||||
|
res <- try(az_resource$new(self$token, self$subscription, id=id), silent=TRUE)
|
||||||
|
if(!inherits(res, "try-error"))
|
||||||
|
res$delete(wait=TRUE)
|
||||||
|
}
|
||||||
|
|
||||||
|
# assumptions:
|
||||||
|
# - this is a flattened 2-level list of dependencies, not an actual tree
|
||||||
|
# - earlier dependencies depend on later ones
|
||||||
|
# - later entries in list will have been deleted in earlier entries
|
||||||
|
deps <- self$properties$dependencies
|
||||||
|
for(d in deps)
|
||||||
|
{
|
||||||
|
free_dependency(d$id)
|
||||||
|
for(d2 in d$dependsOn)
|
||||||
|
free_dependency(d2$id)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
tpl_op=function(op="", ...)
|
tpl_op=function(op="", ...)
|
||||||
{
|
{
|
||||||
op <- file.path("resourcegroups", self$resource_group, "providers/Microsoft.Resources/deployments", self$name, op)
|
op <- file.path("resourcegroups", self$resource_group, "providers/Microsoft.Resources/deployments", self$name, op)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче