$device['device_id']]); foreach ($sla_table as $sla_nr => $sla_config) { $query_data = [ 'device_id' => $device['device_id'], 'sla_nr' => $sla_nr, ]; $sla_id = dbFetchCell('SELECT `sla_id` FROM `slas` WHERE `device_id` = :device_id AND `sla_nr` = :sla_nr', $query_data); $data = [ 'device_id' => $device['device_id'], 'sla_nr' => $sla_nr, 'owner' => $sla_config['rttMonCtrlAdminOwner'], 'tag' => $sla_config['rttMonCtrlAdminTag'], 'rtt_type' => $sla_config['rttMonCtrlAdminRttType'], 'status' => ($sla_config['rttMonCtrlAdminStatus'] == 'active') ? 1 : 0, 'opstatus' => ($sla_config['rttMonLatestRttOperSense'] == 'ok') ? 0 : 2, 'deleted' => 0, ]; // Some fallbacks for when the tag is empty if (! $data['tag']) { switch ($data['rtt_type']) { case 'http': $data['tag'] = $sla_config['rttMonEchoAdminURL']; break; case 'dns': $data['tag'] = $sla_config['rttMonEchoAdminTargetAddressString']; break; case 'echo': $data['tag'] = IP::fromHexString($sla_config['rttMonEchoAdminTargetAddress'], true); break; case 'jitter': if ($sla_config['rttMonEchoAdminCodecType'] != 'notApplicable') { $codec_info = ' (' . $sla_config['rttMonEchoAdminCodecType'] . ' @ ' . preg_replace('/milliseconds/', 'ms', $sla_config['rttMonEchoAdminCodecInterval']) . ')'; } else { $codec_info = ''; } $data['tag'] = IP::fromHexString($sla_config['rttMonEchoAdminTargetAddress'], true) . ':' . $sla_config['rttMonEchoAdminTargetPort'] . $codec_info; break; }//end switch }//end if if (! $sla_id) { $sla_id = dbInsert($data, 'slas'); echo '+'; } else { // Remove from the list $existing_slas = array_diff($existing_slas, [$sla_id]); dbUpdate($data, 'slas', 'sla_id = ?', [$sla_id]); echo '.'; } }//end foreach // Mark all remaining SLAs as deleted foreach ($existing_slas as $existing_sla) { dbUpdate(['deleted' => 1], 'slas', 'sla_id = ?', [$existing_sla]); echo '-'; } echo "\n"; }