Content Environments
Environments in use
This recipe contains an R Markdown document that presents a table detailing the images used by content deployed to a Posit Connect server.
Use this recipe only when your Connect installation uses the “off-host” execution model, where content is executed in containers using Kubernetes.
The document uses the GET /v1/content
endpoint to obtain information about content. This API call returns every content item visible to your API key.
Tip
Use the GET /v1/environments
endpoint to determine the environments available on your server.
---
title: "Environments in use"
---
This document analyzes the image names assigned to run content on the
Posit Connect server. The table presents the number of unique content items`NA` value is either
currently using each image. Content reported with an
incomplete or static (needing no runtime).
```{r setup, echo = FALSE, include=FALSE}
::opts_chunk$set(echo = TRUE)
knitr```
```{r libraries, echo = FALSE, message = FALSE}
library(httr)
library(jsonlite)
library(magrittr)
library(dplyr)
library(knitr)
# Ignore summarise telling us about the grouping.
options(dplyr.summarise.inform = FALSE)
```
```{r verification, echo = FALSE}
# Confirm that environment variables are available.
<- Sys.getenv("CONNECT_SERVER")
connectServer if (nchar(connectServer) == 0) {
stop("Set the CONNECT_SERVER environment variable.")
}<- Sys.getenv("CONNECT_API_KEY")
connectAPIKey if (nchar(connectAPIKey) == 0) {
stop("Set the CONNECT_API_KEY environment variable.")
}<- paste0(connectServer, "/__api__/v1/content")
contentURL ```
```{r fetch, echo = FALSE}
# Fetch all content items from Posit Connect.
<- httr::GET(
res
contentURL,::add_headers(Authorization = paste("Key", connectAPIKey)),
httr::write_memory()
httr
)if (httr::http_error(res)) {
<- sprintf(
err "%s request failed with %s",
$request$url,
res::http_status(res)$message
httr
)message(capture.output(str(httr::content(res))))
stop(err)
}<- httr::content(res, as = "text")
payload <- jsonlite::fromJSON(payload, simplifyDataFrame = TRUE)
apps ```
```{r report, echo = FALSE}
# Report the number of content items with each image name.
<- apps %>%
RunAs.accounts select(image_name) %>%
group_by(image_name) %>%
summarise(N = n()) %>%
arrange(desc(image_name)) %>%
ungroup()
kable(RunAs.accounts)
```