Skip to content

feat: migrate to acloud-cli v1.0.0 with auto-provisioning and docs site - #19

Merged
aru-amedeo merged 9 commits into
mainfrom
feat/acloud-cli-v1
Jul 30, 2026
Merged

feat: migrate to acloud-cli v1.0.0 with auto-provisioning and docs site#19
aru-amedeo merged 9 commits into
mainfrom
feat/acloud-cli-v1

Conversation

@aru-amedeo

@aru-amedeo aru-amedeo commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

  • acloud-cli v1.0.0 migration: renamed --*-uri flags to --*-id; secret now passed via ACLOUD_CLIENT_SECRET env var; install step uses gh release download for authenticated tarball download (no 401/403 rate-limit errors)
  • Auto-provisioning: omit vpc_id, subnet_id, or security_group_id and the action creates them automatically (VPC → subnet → security group with egress allow-all rule), polls each to Active status, and deletes via auto_* outputs in the stop step
  • Reliable polling: switched from --verbose + jq to text-based Status: line polling (_wait_for_status / _wait_for_removal helpers); boot disk and server wait defaults raised to 60 × 10 s = 10 minutes each
  • Optional keypair: keypair_id is now optional (was required before)
  • Docs site: Docusaurus 3 at docs/website/ — 8 pages EN + 8 pages IT (intro, getting-started, usage-auto, usage-existing, reference, flavors, contributing, changelog); same brand, logo, and footer as terraform-arubacloud-examples; GitHub Pages deploy via docs.yml
  • CONTRIBUTING.md and updated README.md

Test plan

  • Auto-provisioning workflow (test-runner.yml) — runs 30459928893 and 30460846729: server created, smoke test ran on ephemeral runner, VPC/subnet/SG auto-created and deleted on stop
  • Pre-existing resources workflow (test-runner-existing-resources.yml) — run 30522737647: server created inside existing VPC/subnet/SG, network resources untouched on stop
  • Docs site: merge triggers docs.yml → builds and deploys to https://arubacloud.github.io/acloud-github-runner/

Breaking changes

  • Inputs renamed: vpc_uri → vpc_id, subnet_uri → subnet_id, security_group_uri → security_group_id, keypair_uri → keypair_id
  • Requires acloud-cli >= 1.0.0 (auto-installed by the action)
  • Update GitHub secrets accordingly — see CHANGELOG.md

🤖 Generated with Claude Code

aru-amedeo and others added 9 commits July 29, 2026 15:12
- Replace --client-secret flag with ACLOUD_CLIENT_SECRET env var
- Rename *_uri inputs to *_id (vpc, subnet, security_group, keypair)
- Replace --boot-disk-uri with --boot-disk-id; remove URI polling step
- Replace --vpc-uri/--subnet-uri/--security-group-uri/--keypair-uri
  with --vpc-id/--subnet-id/--security-group-id/--keypair-id
- Make keypair_id optional (keypair-id is optional in acloud-cli v1)
- Switch status polling from grep/awk to --verbose + jq
- Update integration test secrets ACLOUD_*_URI -> ACLOUD_*_ID
- Replace --output json with --verbose in verify step
- Update CHANGELOG, README, CLAUDE.md, examples
When vpc_id, subnet_id or security_group_id are omitted the action now
creates the missing resources automatically:
- VPC: acloud network vpc create
- Subnet: acloud network subnet create (attached to the VPC)
- Security group: acloud network securitygroup create + egress allow-all rule

New outputs auto_vpc_id, auto_subnet_id, auto_security_group_id are set
only when the action created the resource. Pass them back to the delete
step to have them cleaned up together with the server.

The failure-path cleanup trap is extended to delete auto-created network
resources in reverse order (server -> disk -> sg -> subnet -> vpc).
v1.0.0 changed the release asset format from a single binary
(acloud-linux-amd64) to a versioned tarball
(acloud_1.0.0_linux_amd64.tar.gz).

Resolve the correct download URL via the GitHub releases API so the
install step stays correct across future version bumps.
Based on acloud-cli e2e test patterns:
- Add _wait_for_status helper (polls Status: line, exits on Failed/Error/Deleted)
- Add _wait_for_removal helper (polls until resource no longer exists)

VPC: poll Active|Ready (180s) before creating child resources
Subnet: add --region, --cidr 10.0.0.0/24, --dhcp-enabled; poll Active|Ready (90s)
Security group: vpc_id is now a positional arg; add --region; poll Active|Ready (120s)
Security rule: poll security group Active|Ready (60s) after rule add (SG is InCreation during update)
Delete mode: wait for subnet removal before deleting parent VPC

Fix ID parsing for all auto-created network resources using grep for 24-char hex IDs.
Replace curl+jq GitHub API call with gh release download.
gh is pre-installed on all GitHub-hosted runners, handles auth via
GH_TOKEN automatically, and avoids the 401/403 rate-limit issues
that occur when calling the GitHub API with a cross-repo GITHUB_TOKEN.
Boot disk creation can take longer than 5 minutes (300 s). Bump both
boot_disk_wait and server_wait defaults from 30 to 60 polling attempts
(10 minutes each) to reduce timeout failures on slower API days.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Full documentation site matching the terraform-arubacloud-examples style:
- Docusaurus 3 with Aruba Cloud brand colors, Mermaid, local search, version dropdown
- 8 pages EN + 8 pages IT: intro, getting-started, usage-auto,
  usage-existing, reference, flavors, contributing, changelog
- GitHub Actions workflow (docs.yml) for build and GitHub Pages deploy
- CONTRIBUTING.md root shortcut and updated README.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant