Migration Toolkit Docs

Section 01

Layered Architecture

A thin GUI sits over a reusable, testable engine. Each layer talks only to the one beneath it, so the core can be driven by the desktop app, a CLI, or tests without change.

GUI layer (CustomTkinter)Core engine (GUI-agnostic)External systemsSafety gate
Presentationgui/CustomTkinter + ttk.Treeview

app.py

App shell, sidebar nav, after() bus-drain loop

inventory_view

Connect, load AP DB, sortable/multi-select table, filter

convert_view

Review curated convert list, grouped counts

runner_view

Strategy/method, start/cancel, live per-AP states + progress

logs_view / settings_view

Streaming log console; connection & image-map config

runs blocking work on worker threads, marshals results via WorkerBus
Concurrency & Stategui/workers.py · gui/state.py

WorkerBus / run_in_thread

Thread-safe queue; daemon threads post log/event/error/finished messages back to the UI tick

AppContext

Single shared state: settings, profiles, inventory, convert list, live connection

theme.py

Win11 appearance, Treeview styling, state colors

calls pure-Python engine (no GUI imports)
Core Enginecore/reusable by GUI, CLI, or tests

connection.py

Netmiko SSH + Simulated backend (interchangeable)

ap_inventory.py

Parse 'show ap database' → AccessPoint records

models.py

Model → family → AOS-10 image catalog + capability gate

convert.py

'ap convert' command builder + precheck gates

upgrade.py

Engine: 2 strategies + per-AP state machine

central_api.py

Central REST: firmware + AOS-10 presence verify

settings.py

Path resolution, image-map load, CSV export

data/

image_map.json · sim_ap_database.txt

SSH (CLI) & HTTPS (REST)
External Systems

AOS-8 Mobility Master / Controller

Source of truth (show ap database long); receives ap convert add-ap commands over SSH

Aruba Central (AOS-10)

Delivers AOS-10 image to allow-listed APs; REST API confirms post-convert AOS-10 presence