Architecture Overview

AOS-8 → AOS-10 Campus AP Migration Toolkit

A Python desktop app (CustomTkinter GUI over a GUI-agnostic engine) that migrates ArubaOS-8 controller-managed campus APs to ArubaOS-10 on Aruba Central. It loads an AP inventory, keeps the in-scope 500 / 600 (Wi-Fi 6 / 6E) APs, and converts each one on the controller it terminates to — downloading the AOS-10 image from an HTTPS image server. A live MM Console mirrors every command and lets you type your own. Simulation mode is on by default.

GUI layer (CustomTkinter) Core engine (GUI-agnostic) External systems Safety gate
01

Layered Architecture

Thin GUI over a reusable engine

GUI — gui/

app.py

Window shell, sidebar nav, the after() bus-drain loop, and the controller-acknowledgement modal.

inventory / convert / runner

Load & scope the AP list, curate the convert list, pick strategy/method, watch live per-AP progress.

console_view

MM Console: live transcript of every command & response, plus an input field to send your own commands.
 blocking work runs on worker threads; results marshalled back via WorkerBus  
Core Engine — core/  no GUI imports

ap_inventory.py

Parse show ap database + show switches; tag each AP with family, AOS-10 scope, and its primary controller.

connection.py

Simulated + Netmiko SSH backends; console echo and select_controller() navigation (exit/cd/mdc).

convert.py

Build the validated AOS-8 ap convert sequence and the HTTPS image-url; enforce scope/precheck gates.

upgrade.py

UpgradeEngine: batch-by-model or dynamic per-AP, the per-AP state machine, and per-controller routing + ack.

central_api.py

Optional Aruba Central REST check that an AP checked in on a 10.x build after conversion.

settings.py

Path resolution, image-map load, image-server URL, and CSV report export.
 SSH (CLI) & HTTPS (image download + REST verify)  
External Systems

Mobility Master + Controllers

Source of truth for inventory; each AP's ap convert commands run on the controller it terminates to, over SSH.

HTTPS Image Server

Hosts the AOS-10 AP image; the controller pulls it over HTTPS during activation (image-url).

Aruba Central (AOS-10)

Manages converted APs; REST API confirms post-convert AOS-10 presence.
02

Operator Flow

From connect to report

STEP 1
Connect to MM & List APs
show switchesshow ap database

SSH to the MM (or simulation); resolve controllers and parse the AP inventory on a worker thread.

STEP 2
Scope & Curate
add_to_convert_list()

Keep in-scope 500/600 APs (others hidden & blocked); multi-select them into the convert list.

STEP 3
Choose Options
UpgradeOptions

Batch-by-model or dynamic per-AP; HTTPS image server or controller-staged image; dry-run & ack toggles.

STEP 4
Run & Watch
UpgradeEngine.run()

Per-AP state machine streams live states + controller + progress; every command echoes to the MM Console.

STEP 5
Export Report
export_report_csv()

DONE / FAILED / SKIPPED plus the primary controller per AP, saved for the change record.

03

Per-AP State Machine

Same path for both strategies

PRECHECKscope + capability + idempotency
TARGET CTRLack & navigate: exit/cd/mdc
CONVERTINGadd → pre-validate → activate
UPGRADINGpull AOS-10 image (HTTPS)
REBOOTINGboots into AOS-10
VERIFYINGCentral / convert-status-list
DONEAOS10 image installed
FAILEDsafe to retry
Safety logic baked in:
  • Scope gate — only 500/600 (Wi-Fi 6 / 6E) APs are eligible; others are hidden, blocked, and SKIPPED.
  • Pre-flight gate — non-capable or down APs are SKIPPED, never sent a convert command.
  • Central pre-validation — APs that fail ap convert pre-validate are reported and skipped. (In simulation, the first AP in the list always fails to exercise this path.)
  • Per-controller acknowledgement — before any command runs on a controller, the operator confirms the target; declining cancels the run.
  • Isolation — one AP failing never aborts the run; it is logged and the loop continues.
  • Verification gate — an AP is only DONE once a 10.x build is confirmed; otherwise FAILED (retryable).
04

Per-Controller Routing

Each AP converts on the controller it terminates to

RESOLVE
show switches
build_switch_map()

The MM reports every managed controller; build an {ip: hostname} map.

TAG
Annotate APs
annotate_controllers()

Each AP's Switch IP resolves to its primary controller name.

ACK
Operator gate
ack_callback()

On each controller change a modal names the target; Continue proceeds, Abort cancels.

NAVIGATE
Target it
exit → cd → mdc

Leave the previous controller's mdc, cd to the new one, enter mdc — convert commands run there.

Navigation and the ack prompt fire only when the target controller changes; consecutive APs on the same controller are not re-prompted. The exit is emitted only when switching out of a previous managed-device-context — never on the first controller. ap convert commands are valid only in mdc mode.
CommandRole
show ap database longInventory load — also yields each AP's Switch IP (primary controller).
show switchesResolve controller hostname ↔ IP across the MM-managed cluster.
exit  (when switching)Leave the previous controller's managed-device-context before navigating.
cd <controller>mdcNavigate to the controller node, then enter managed-device-context (required for ap convert).
ap convert add ap-name <name>Add the AP to the convert list on its controller.
ap convert pre-validate specific-apsPre-flight check (Central reachability / subscription) before activation.
ap convert active specific-aps activate image-url <https>Start conversion, pulling the AOS-10 image from the HTTPS server (local-flash for a controller-staged image).
show ap convert-status-listPer-AP verification fallback when Central REST is not configured.
05

Interactive Demo

The actual app, running in your browser

A full-screen, faithful replica of the desktop toolkit running in simulation mode — the same five views (Inventory, Convert List, Upgrade Runner, Logs, Settings), the same persistent MM Console, and the same controller responses: show ap database / show switches output, exit → cd → mdc per-controller routing, the ap convert sequence, and the first-AP Aruba Central pre-validation failure. Nothing leaves your browser.

AOS-8 → AOS-10 Migration Toolkit ● SIMULATION
AOS-8 → AOS-10 Migration Toolkit
● simulation
← Back
Inventory

AP Inventory

Pull the AP database from the Mobility Master, then push in-scope APs into the convert list. 200/300-series & RAPs are excluded at parse time.

● disconnected
AP Name Model Family IP Address Status Group Primary Controller Scope Target Image
No inventory loaded — click Connect to MM and List APs.
No inventory loaded.

Convert List

APs queued for AOS-10 conversion. Review the model mix before running the upgrade.

list empty
AP Name Model Family IP Address Target AOS-10 Image State
Convert list is empty — add APs from the Inventory view.

Upgrade Runner

Pick a processing strategy and image source, then run the migration and watch each AP move through the state machine live.

0 / 0
AP Name Model Primary Controller State Detail
Add APs to the convert list, then press Start Migration.

Activity Log

Full audit trail of SSH / REST / engine activity for the session.

[--:--:--] session started — simulation mode

Settings

Connection, Aruba Central, and migration-behavior settings. Defaults reflect the built-in simulated controller.

Mobility Master / Controller (SSH)

Simulation modeon
Host / IPsim-mm
Usernameadmin
SSH port22
device_typearuba_os

Aruba Central (REST API)

Central simulationon
AOS-10 target version10.7.1.0
Image server (HTTPS)images.example.com/aos10

Migration Behavior

Target APs byname
Verify via Centralon
Default strategybatch_by_model
Upgrade wait (s)180
Reboot wait (s)90

Appearance

Themedark
Version

MM / Controller Console

● SIMULATION
(sim) mm#