R/describe_tags.R

Defines functions create_tags delete_tags describe_tags

Documented in create_tags delete_tags describe_tags

#' @rdname tags
#' @title Tags
#' @description Tag an EC2 Resource
#' @param resource A character vector specifying one or more resource IDs, typically EC2 instance IDs.
#' @param tag A named character string of key-value pairs of tag names and their corresponding values. For `delete_tags`, the value can be an empty string (in which case, the tag is delete regardless of value) or a specific value (in which case the tag is only deleted if it matches the value).
#' @template filter
#' @param n \dots
#' @param page \dots
#' @template dots
#' @return For `create_tags` and `delete_tags`, a logical. Otherwise, a list of tags.
#' @references
#' <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html>
#' <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTags.html>
#' <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html>
#' <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeTags.html>
#' @examples
#' \dontrun{
#' create_tags("i-b79cfd34", list(foo = "bar"))
#' describe_tags()
#' delete_tags("i-b79cfd34", list("foo" = "notbar"))
#' delete_tags("i-b79cfd34", list("foo" = "bar"))
#' }
#' @seealso [describe_instances()], [get_instance_attr()], [associate_ip()]
#' @keywords instances
#' @export
create_tags <- function(resource, tag, ...) {
    query <- list(Action = "CreateTags")
    resource <- as.list(resource)
    names(resource) <- paste0("ResourceId.", 1:length(resource))
    query <- c(query, resource)
    query <- c(query, .makelist(tag, type = "Tag"))
    r <- ec2HTTP(query = query, ...)
    if (r$return[[1]] == "true") {
        return(TRUE)
    } else { 
        return(FALSE)
    }
}

#' @rdname tags
#' @export
delete_tags <- function(resource, tag = NULL, ...) {
    query <- list(Action = "DeleteTags")
    resource <- as.list(resource)
    names(resource) <- paste0("ResourceId.", 1:length(resource))
    query <- c(query, resource)
    if (!is.null(tag)) {
        query <- c(query, .makelist(tag, type = "Tag"))
    }
    r <- ec2HTTP(query = query, ...)
    if (r$return[[1]] == "true") {
        return(TRUE)
    } else { 
        return(FALSE)
    }
}

#' @rdname tags
#' @export
describe_tags <- function(filter = NULL, n = NULL, page = NULL, ...) {
    query <- list(Action = "DescribeTags")
    if (!is.null(filter)) {
        filter <- as.list(filter)
        query <- c(query, .makelist(filter, type = "Filter"))
    }
    if (!is.null(n)) {
        if(n > 1000) {
            warning("'n' coerced to 1000 (the maximum)")
            n <- 1000
        }
        query$MaxResults <- n
    }
    if (!is.null(page)) {
        query$NextToken <- page
    }
    r <- ec2HTTP(query = query, ...)
    return(unname(lapply(r$tagSet, function(z) {
        structure(flatten_list(z), class = "ec2_tag")
    })))
}
HanjoStudy/awsR documentation built on May 6, 2019, 9:06 a.m.