Configurable device display name (#13528)

* Configurable device display name
You can just set the display name in device settings.

It also accepts simple template format with  the variables: hostname, sysName, sysName_fallback, ip

Default controlled by device_display_default, (set from old force_hostname_to_sysname and force_ip_to_sysname settings

* remove second argument to format_hostname()

* Style fixes

* Update schema

* update phpstan baseline

* Improved settings strings (and add for translation)
This commit is contained in:
Tony Murray
2021-11-18 15:46:22 -06:00
committed by GitHub
parent 69d0753ec4
commit 790c4b3402
24 changed files with 196 additions and 159 deletions
+35 -30
View File
@@ -172,50 +172,55 @@ class CommonFunctionsTest extends TestCase
'hostname' => 'test.librenms.org',
'sysName' => 'Testing DNS',
];
$invalid_dns = [
'hostname' => 'Not DNS',
'sysName' => 'Testing Invalid DNS',
];
$device_ip = [
'hostname' => '192.168.1.2',
'sysName' => 'Testing IP',
];
$invalid_ip = [
'hostname' => '256.168.1.2',
'sysName' => 'Testing Invalid IP',
];
$custom_display = [
'hostname' => 'test.librenms.org',
'sysName' => 'sysName',
'display' => 'Custom Display ({{ $hostname }} {{ $sysName }})',
];
// both false
Config::set('force_ip_to_sysname', false);
Config::set('force_hostname_to_sysname', false);
// default {{ $hostname }}
Config::set('device_display_default', null);
$this->assertEquals('test.librenms.org', format_hostname($device_dns));
$this->assertEquals('Not DNS', format_hostname($device_dns, 'Not DNS'));
$this->assertEquals('192.168.5.5', format_hostname($device_dns, '192.168.5.5'));
$this->assertEquals('Not DNS', format_hostname($invalid_dns));
$this->assertEquals('192.168.1.2', format_hostname($device_ip));
$this->assertEquals('hostname.like', format_hostname($device_ip, 'hostname.like'));
$this->assertEquals('10.10.10.10', format_hostname($device_ip, '10.10.10.10'));
$this->assertEquals('256.168.1.2', format_hostname($invalid_ip));
$this->assertEquals('Custom Display (test.librenms.org sysName)', format_hostname($custom_display));
// ip to sysname
Config::set('force_ip_to_sysname', true);
Config::set('force_hostname_to_sysname', false);
Config::set('device_display_default', '{{ $sysName_fallback }}');
$this->assertEquals('test.librenms.org', format_hostname($device_dns));
$this->assertEquals('Not DNS', format_hostname($device_dns, 'Not DNS'));
$this->assertEquals('Testing DNS', format_hostname($device_dns, '192.168.5.5'));
$this->assertEquals('Not DNS', format_hostname($invalid_dns));
$this->assertEquals('Testing IP', format_hostname($device_ip));
$this->assertEquals('hostname.like', format_hostname($device_ip, 'hostname.like'));
$this->assertEquals('Testing IP', format_hostname($device_ip, '10.10.10.10'));
$this->assertEquals('256.168.1.2', format_hostname($invalid_ip));
$this->assertEquals('Custom Display (test.librenms.org sysName)', format_hostname($custom_display));
// dns to sysname
Config::set('force_ip_to_sysname', false);
Config::set('force_hostname_to_sysname', true);
// sysname
Config::set('device_display_default', '{{ $sysName }}');
$this->assertEquals('Testing DNS', format_hostname($device_dns));
$this->assertEquals('Not DNS', format_hostname($device_dns, 'Not DNS'));
$this->assertEquals('192.168.5.5', format_hostname($device_dns, '192.168.5.5'));
$this->assertEquals('192.168.1.2', format_hostname($device_ip));
$this->assertEquals('Testing IP', format_hostname($device_ip, 'hostname.like'));
$this->assertEquals('10.10.10.10', format_hostname($device_ip, '10.10.10.10'));
// both true
Config::set('force_ip_to_sysname', true);
Config::set('force_hostname_to_sysname', true);
$this->assertEquals('Testing DNS', format_hostname($device_dns));
$this->assertEquals('Not DNS', format_hostname($device_dns, 'Not DNS'));
$this->assertEquals('Testing DNS', format_hostname($device_dns, '192.168.5.5'));
$this->assertEquals('Testing Invalid DNS', format_hostname($invalid_dns));
$this->assertEquals('Testing IP', format_hostname($device_ip));
$this->assertEquals('Testing IP', format_hostname($device_ip, 'hostname.like'));
$this->assertEquals('Testing IP', format_hostname($device_ip, '10.10.10.10'));
$this->assertEquals('Testing Invalid IP', format_hostname($invalid_ip));
$this->assertEquals('Custom Display (test.librenms.org sysName)', format_hostname($custom_display));
// custom
$custom_ip = ['display' => 'IP: {{ $ip }}', 'hostname' => '1.1.1.1', 'ip' => '2.2.2.2'];
$this->assertEquals('IP: 1.1.1.1', format_hostname($custom_ip));
$custom_ip['hostname'] = 'not_ip';
$this->assertEquals('IP: 2.2.2.2', format_hostname($custom_ip));
$custom_ip['overwrite_ip'] = '3.3.3.3';
$this->assertEquals('IP: 3.3.3.3', format_hostname($custom_ip));
}
public function testPortAssociation()