diff --git a/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery b/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery index c3d7f4b1c..efb90c0da 100755 --- a/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery +++ b/feeds/tip/cloud_discovery/files/usr/bin/cloud_discovery @@ -15,9 +15,14 @@ const ONLINE = 2; const OFFLINE = 3; const ORPHAN = 4; +const DISCOVER_DHCP = "DHCP"; +const DISCOVER_FLASH = "FLASH"; +const DISCOVER_LOOKUP = "OpenLAN"; + let ubus = libubus.connect(); let uci = libuci.cursor(); let state = DISCOVER; +let discovery_method = ""; let validate_time; let offline_time; let orphan_time; @@ -78,6 +83,14 @@ function gateway_load() { return readjsonfile('/etc/ucentral/gateway.json'); } +function discovery_state_write() { + let discovery_state = { + "type": discovery_method, + "updated": time() + }; + fs.writefile('/etc/ucentral/discovery.state.json', discovery_state); +} + function gateway_write(data) { let gateway = gateway_load(); gateway ??= {}; @@ -130,6 +143,7 @@ function set_state(set) { if (prev == VALIDATING) { ulog(LOG_INFO, 'Setting cloud controller to validated\n'); gateway_write({ valid: true }); + discovery_state_write(); } break; @@ -227,15 +241,18 @@ function interval_handler() { if (!time_is_valid()) return; + discovery_method = DISCOVER_DHCP; if (discover_dhcp()) return; if (system('/usr/bin/est_client enroll')) return; + discovery_method = DISCOVER_FLASH; if (!discover_flash()) return; + discovery_method = DISCOVER_LOOKUP; redirector_lookup(); break;