Edge Devices
The Edge Device Registry provides discovery, registration, and management of distributed edge devices. It supports automatic capability detection (system info, Docker, running services) for devices on your network.
Configuration
export EDGE_API_URL=http://localhost:8082
Python
from ona_platform import OnaClient
client = OnaClient(
edge_api_url='http://localhost:8082' # or set EDGE_API_URL
)
# ── Check service health ──
health = client.edge_devices.health()
print(f"Service: {health['service']}, Status: {health['status']}")
# ── Discover a new device ──
device = client.edge_devices.discover_device(
ip='192.168.1.100',
username='admin'
)
print(f"Device ID: {device['id']}")
print(f"Type: {device['type']}")
print(f"Status: {device['status']}")
# ── List all devices ──
devices = client.edge_devices.list_devices()
print(f"Total devices: {len(devices)}")
for dev in devices:
print(f" - {dev['name']} ({dev['ip']}): {dev['status']}")
# ── Get device details ──
details = client.edge_devices.get_device(device['id'])
print(f"Last seen: {details['lastSeen']}")
# ── Get device capabilities ──
capabilities = client.edge_devices.get_device_capabilities(device['id'])
print(f"System: {capabilities.get('system', {})}")
print(f"Docker: {capabilities.get('docker', {})}")
# ── Get running services ──
services = client.edge_devices.get_device_services(device['id'])
for svc in services:
print(f" - {svc['name']} (port {svc['port']}): {svc['status']}")
# ── Update device ──
updated = client.edge_devices.update_device(
device['id'],
{"name": "Updated Edge Device", "status": "online"}
)
# ── Delete device (use with caution) ──
# result = client.edge_devices.delete_device(device['id'])
JavaScript
const { OnaSDK } = require('../src/index');
const sdk = new OnaSDK({
endpoints: {
edgeRegistry: process.env.ONA_EDGE_REGISTRY_ENDPOINT || 'http://edge-registry:8082'
}
});
// ── Service health ──
const health = await sdk.edgeRegistry.getHealth();
console.log(`Service: ${health.service}, Status: ${health.status}`);
// ── List registered devices ──
const devices = await sdk.edgeRegistry.getDevices();
console.log(`Total devices: ${devices.length}`);
devices.forEach(device => {
console.log(` ${device.name} (${device.ip}): ${device.status}`);
});
// ── Discover a new device ──
const newDevice = await sdk.edgeRegistry.discoverDevice({
ip: '192.168.1.100',
username: 'admin'
});
console.log(`Discovered: ${newDevice.id} (${newDevice.type})`);
// ── Device capabilities ──
const capabilities = await sdk.edgeRegistry.getDeviceCapabilities(newDevice.id);
console.log('System:', JSON.stringify(capabilities.system, null, 2));
if (capabilities.docker) {
console.log(`Docker: ${capabilities.docker.installed} (${capabilities.docker.version})`);
}
// ── Running services ──
const services = await sdk.edgeRegistry.getDeviceServices(newDevice.id);
services.forEach(svc => {
console.log(` ✓ ${svc.name} on port ${svc.port} (${svc.status})`);
});
// ── Update device ──
const updated = await sdk.edgeRegistry.updateDevice(newDevice.id, {
name: 'Updated Edge Device Name'
});
// ── Delete device ──
// await sdk.edgeRegistry.deleteDevice(deviceId);
Available Methods
| Method (Python) | Method (JS) | Description |
|---|---|---|
health() |
getHealth() |
Service health check |
list_devices() |
getDevices() |
List all registered devices |
get_device(id) |
getDevice(id) |
Get details for a specific device |
discover_device(ip, username) |
discoverDevice({ ip, username }) |
Discover and register a device |
update_device(id, updates) |
updateDevice(id, updates) |
Update device metadata |
delete_device(id) |
deleteDevice(id) |
Remove a device |
get_device_capabilities(id) |
getDeviceCapabilities(id) |
System, Docker, and platform info |
get_device_services(id) |
getDeviceServices(id) |
Running services and ports |
Full Example
See Also
- Authentication — API key configuration
- Error Handling — Error classes and retry logic