Skip to content

Manage Clouds

A Cloud is a provider account plus its region defaults. There is no plexctl cloud subcommand yet, so the /v1/clouds surface is driven with curl.

Prerequisites

  • An authenticated session — see Log in with plexctl.
  • ${PLEXSPHERE_URL} and a bearer ${TOKEN}.
  • Provider data: aws needs region_defaults.default_region; azure needs subscription_id and tenant_id.

Steps

Create a Cloud

shell
curl --silent --show-error --fail-with-body -X POST \
  -H "Authorization: Bearer ${TOKEN}" -H 'content-type: application/json' \
  "${PLEXSPHERE_URL}/v1/clouds" -d '{
  "slug": "acme-aws-prod",
  "provider": "aws",
  "region_defaults": {"default_region": "eu-central-1"}
}'

The slug is immutable; an unknown provider returns 400 invalid_cloud_region_defaults.

List, inspect, update, delete

shell
curl -s -H "Authorization: Bearer ${TOKEN}" "${PLEXSPHERE_URL}/v1/clouds"
curl -s -H "Authorization: Bearer ${TOKEN}" "${PLEXSPHERE_URL}/v1/clouds/<cloud-uuid>"
curl -s -X PATCH -H "Authorization: Bearer ${TOKEN}" -H 'content-type: application/json' \
  "${PLEXSPHERE_URL}/v1/clouds/<cloud-uuid>" -d '{"display_name":"Acme AWS (prod)"}'
curl -s -X DELETE -H "Authorization: Bearer ${TOKEN}" "${PLEXSPHERE_URL}/v1/clouds/<cloud-uuid>"

Verification

shell
curl -s -H "Authorization: Bearer ${TOKEN}" \
  "${PLEXSPHERE_URL}/v1/clouds/<cloud-uuid>" | jq '{slug, provider}'

See also