context("Templates")
tenant <- Sys.getenv("AZ_TEST_TENANT_ID")
app <- Sys.getenv("AZ_TEST_APP_ID")
password <- Sys.getenv("AZ_TEST_PASSWORD")
subscription <- Sys.getenv("AZ_TEST_SUBSCRIPTION")
if(tenant == "" || app == "" || password == "" || subscription == "")
skip("Resource group method tests skipped: ARM credentials not set")
rgname <- paste(sample(letters, 20, replace=TRUE), collapse="")
rg <- az_rm$
new(tenant=tenant, app=app, password=password)$
get_subscription(subscription)$
create_resource_group(rgname, location="australiaeast")
test_that("Template methods work",
{
# precondition
expect_true(is_empty(rg$list_resources()))
# simple storage account template
tplname <- paste(sample(letters, 10, replace=TRUE), collapse="")
template <- "../resources/template.json"
parameters <- jsonlite::toJSON(list(
location=list(value="australiaeast"),
name=list(value=tplname),
tagvalue=list(value="mytagvalue")
), auto_unbox=TRUE)
tpl <- rg$deploy_template(tplname, template=template, parameters=parameters, wait=TRUE)
tpl$check()
expect_is(tpl, "az_template")
expect_false(is_empty(rg$list_resources()))
tpl$delete(confirm=FALSE, free_resources=TRUE)
expect_true(is_empty(rg$list_resources()))
tplname2 <- paste(sample(letters, 10, replace=TRUE), collapse="")
tpl_parsed <- jsonlite::fromJSON(template, simplifyVector=FALSE)
parm_parsed <- list(
location="australiaeast",
name=tplname2,
tagvalue="mytagvalue"
)
tpl2 <- rg$deploy_template(tplname2, template=tpl_parsed, parameters=parm_parsed, wait=TRUE)
tpl2$check()
expect_is(tpl2, "az_template")
expect_false(is_empty(rg$list_resources()))
tpl2$delete(confirm=FALSE, free_resources=TRUE)
Sys.sleep(2)
expect_true(is_empty(rg$list_resources()))
# leave out parameters arg, modify template to incorporate parameters
tplname3 <- paste(sample(letters, 10, replace=TRUE), collapse="")
tpl_parsed$parameters$location$defaultValue <- "australiaeast"
tpl_parsed$parameters$name$defaultValue <- tplname3
tpl_parsed$parameters$tagvalue$defaultValue <- "mytagvalue"
tpl3 <- rg$deploy_template(tplname3, template=tpl_parsed, wait=TRUE)
tpl3$check()
expect_is(tpl3, "az_template")
expect_false(is_empty(rg$list_resources()))
# from template and parameter builder
tplname4 <- paste(sample(letters, 10, replace=TRUE), collapse="")
tpl_def <- build_template_definition(
parameters=file("../resources/parameters.json"),
functions=file("../resources/functions.json"),
resources=file("../resources/resources.json")
)
par_def <- build_template_parameters(location="australiaeast", name=tplname4, tagvalue="mytagvalue")
tpl4 <- rg$deploy_template(tplname4, template=tpl_def, parameters=par_def, wait=TRUE)
tpl4$check()
expect_is(tpl4, "az_template")
# tagging
expect_identical(tpl4$get_tags(), list(createdBy="AzureR/AzureRMR"))
# listing
tpllst0 <- rg$list_templates()
expect_true(is.list(tpllst0) && all(sapply(tpllst0, is_template)))
tpllst <- rg$list_templates(top=1)
expect_true(is.list(tpllst) && length(tpllst) == 1)
tpllst <- rg$list_templates(filter="provisioningState eq 'Succeeded'")
expect_true(is.list(tpllst) && length(tpllst) > 0)
})
test_that("Bad templates fail gracefully",
{
tplname <- paste(sample(letters, 10, replace=TRUE), collapse="")
template <- "../resources/template_bad.json"
expect_error(rg$deploy_template(tplname, template=template, wait=TRUE), "Unable to deploy template")
})
rg$delete(confirm=FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.