mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Rewrite smokeping script to be an lnms command (#11585)
* Rewrite smokeping script to be an lnms command * Add a default number of probes for smokeping * Formatting fixes * Refactor to simplify a couple of methods * Fix a name collision when using more than 60 threads * Simplify * First pass at documentation A few climate fixes too. I'm a little dubious about the + LibreNMS fix - it could be included in /etc/smokeping/config if it is really needed, but it sounds like (looking at git blame) it's needed for if the script generates a broken configuration file. I'm thinking we should just not generate broken config. * Improve testability and add some tests * Load laravel to make translations available * Second pass at documentation * Fix brace * Extend the device factory to include the type Also adds a device group fake I created before I realised I didn't need it * Mimic gen_smokeping.php a little more closely * Update tests to properly verify old and new behaviour against each other * Replace gen_smokeping with a wrapper * Don't double whitespace Render does this automatically. Explicitly order by hostname too. * Make faker less likely to generate duplicates I tried adding a unique constraint here, but it didn't have the intended effect. Extending the hostname like this seems to work fine - I tried generating 10 million hosts and got no duplicates, compared to duplicates appearing with as few as 100 hosts without this change. A true fix would be to add an 'fqdn' fake upstream. * Make the tests more robust * Assorted bug fixes * Style corrections * Handle 'generic' devices * Fix an issue that came up during rebase Co-authored-by: Tony Murray <murraytony@gmail.com>
This commit is contained in:
@@ -49,13 +49,41 @@ $factory->define(\App\Models\Bill::class, function (Faker\Generator $faker) {
|
||||
|
||||
$factory->define(\App\Models\Device::class, function (Faker\Generator $faker) {
|
||||
return [
|
||||
'hostname' => $faker->domainWord . '.' . $faker->domainName,
|
||||
'hostname' => $faker->domainWord . '-' . $faker->domainWord . '-' . $faker->domainWord . '.' . $faker->domainName,
|
||||
'ip' => $faker->randomElement([$faker->ipv4, $faker->ipv6]),
|
||||
'type' => $faker->randomElement([
|
||||
'appliance',
|
||||
'camera',
|
||||
'collaboration',
|
||||
'encoder',
|
||||
'environment',
|
||||
'firewall',
|
||||
'loadbalancer',
|
||||
'management',
|
||||
'network',
|
||||
'power',
|
||||
'printer',
|
||||
'proxy',
|
||||
'sensor',
|
||||
'server',
|
||||
'storage',
|
||||
'timing',
|
||||
'wireless',
|
||||
'workstation'
|
||||
]),
|
||||
'status' => $status = random_int(0, 1),
|
||||
'status_reason' => $status == 0 ? $faker->randomElement(['snmp', 'icmp']) : '', // allow invalid states?
|
||||
];
|
||||
});
|
||||
|
||||
$factory->define(\App\Models\DeviceGroup::class, function (Faker\Generator $faker) {
|
||||
return [
|
||||
'name' => $faker->domainWord,
|
||||
'desc' => $faker->text(255),
|
||||
'type' =>'static',
|
||||
];
|
||||
});
|
||||
|
||||
$factory->define(\App\Models\Port::class, function (Faker\Generator $faker) {
|
||||
return [
|
||||
'ifIndex' => $faker->unique()->numberBetween(),
|
||||
|
Reference in New Issue
Block a user