зеркало из https://github.com/Azure/AzureRMR.git
allow wait for template deployment
This commit is contained in:
Родитель
1e2ad8a961
Коммит
68ed245f21
|
@ -90,6 +90,7 @@ public=list(
|
||||||
status <- 200
|
status <- 200
|
||||||
while(wait && status < 300)
|
while(wait && status < 300)
|
||||||
{
|
{
|
||||||
|
Sys.sleep(5)
|
||||||
res <- private$res_op(http_status_handler="pass")
|
res <- private$res_op(http_status_handler="pass")
|
||||||
status <- httr::status_code(res)
|
status <- httr::status_code(res)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,14 +11,14 @@ public=list(
|
||||||
|
|
||||||
# constructor overloads: 1) get an existing template from host; 2) from passed-in data; 3) deploy new template
|
# constructor overloads: 1) get an existing template from host; 2) from passed-in data; 3) deploy new template
|
||||||
initialize=function(token, subscription, resource_group, name=NULL, template, parameters, ...,
|
initialize=function(token, subscription, resource_group, name=NULL, template, parameters, ...,
|
||||||
deployed_properties=list())
|
deployed_properties=list(), wait=FALSE)
|
||||||
{
|
{
|
||||||
self$token <- token
|
self$token <- token
|
||||||
self$subscription <- subscription
|
self$subscription <- subscription
|
||||||
self$resource_group <- resource_group
|
self$resource_group <- resource_group
|
||||||
|
|
||||||
parms <- if(!is_empty(name) && !missing(template) && !missing(parameters))
|
parms <- if(!is_empty(name) && !missing(template) && !missing(parameters))
|
||||||
private$init_and_deploy(name, template, parameters, ...)
|
private$init_and_deploy(name, template, parameters, ..., wait=wait)
|
||||||
else if(!is_empty(name))
|
else if(!is_empty(name))
|
||||||
private$init_from_host(name)
|
private$init_from_host(name)
|
||||||
else if(!is_empty(deployed_properties))
|
else if(!is_empty(deployed_properties))
|
||||||
|
@ -49,18 +49,21 @@ public=list(
|
||||||
message("Deleting template '", self$name, "'")
|
message("Deleting template '", self$name, "'")
|
||||||
if(free_resources)
|
if(free_resources)
|
||||||
private$free_resources()
|
private$free_resources()
|
||||||
else message("Associated resources have not been freed.")
|
else message("Associated resources will not be freed")
|
||||||
|
|
||||||
private$tpl_op(http_verb="DELETE")
|
private$tpl_op(http_verb="DELETE")
|
||||||
private$is_valid <- FALSE
|
private$is_valid <- FALSE
|
||||||
invisible(NULL)
|
invisible(NULL)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
# update state of template: deployment accepted/deployment failed/updating/running/failed
|
||||||
check=function()
|
check=function()
|
||||||
{
|
{
|
||||||
res <- private$tpl_op(http_verb="HEAD", http_status_handler="pass")
|
self$initialize(self$token, self$subscription, self$resource_group, self$name)
|
||||||
private$is_valid <- httr::status_code(res) < 300
|
status <- self$properties$provisioningState
|
||||||
private$is_valid
|
if(status %in% c("Error", "Failed"))
|
||||||
|
private$is_valid <- FALSE
|
||||||
|
status
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
|
||||||
|
@ -82,8 +85,10 @@ private=list(
|
||||||
|
|
||||||
# deployment workhorse function
|
# deployment workhorse function
|
||||||
# TODO: allow wait until complete
|
# TODO: allow wait until complete
|
||||||
init_and_deploy=function(name, template, parameters, ...)
|
init_and_deploy=function(name, template, parameters, ..., wait=FALSE)
|
||||||
{
|
{
|
||||||
|
message("Deploying template '", name, "'")
|
||||||
|
|
||||||
default_properties <- list(
|
default_properties <- list(
|
||||||
debugSetting=list(detailLevel="requestContent, responseContent"),
|
debugSetting=list(detailLevel="requestContent, responseContent"),
|
||||||
mode="Incremental"
|
mode="Incremental"
|
||||||
|
@ -107,6 +112,24 @@ private=list(
|
||||||
|
|
||||||
self$name <- name
|
self$name <- name
|
||||||
private$tpl_op(body=list(properties=properties), encode="json", http_verb="PUT")
|
private$tpl_op(body=list(properties=properties), encode="json", http_verb="PUT")
|
||||||
|
|
||||||
|
# do we wait until template has finished provisioning?
|
||||||
|
if(wait)
|
||||||
|
{
|
||||||
|
message("Waiting for provisioning to complete")
|
||||||
|
for(i in 1:1000) # some resources can take a long time to provision (HDInsight)
|
||||||
|
{
|
||||||
|
Sys.sleep(5)
|
||||||
|
message(".", appendLF=FALSE)
|
||||||
|
|
||||||
|
status <- self$check()
|
||||||
|
if(status == "Succeeded")
|
||||||
|
break
|
||||||
|
else if(status %in% c("Error", "Failed"))
|
||||||
|
stop("Unable to deploy template", call.=FALSE)
|
||||||
|
}
|
||||||
|
message("\nDeployment successful")
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
validate_parms=function(properties)
|
validate_parms=function(properties)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче