librenms/database/migrations/2018_07_03_091314_create_devices_table.php
Jellyfrog 2b3575a5e9
Laravel 10.x Shift (#14995)
* Apply code style

* Remove explicit call to register policies

* Shift core files

* Shift config files

* Default config files

In an effort to make upgrading the constantly changing config files
easier, Shift defaulted them and merged your true customizations -
where ENV variables may not be used.

* Bump Laravel dependencies

* Add type hints for Laravel 10

* Shift cleanup

* wip

* wip

* sync translation

* Sync back config

* Public Path Binding

* QueryException

* monolog

* db::raw

* monolog

* db::raw

* fix larastan collections

* fix phpstan bug looping forever

* larastan errors

* larastan: fix column type

* styleci

* initialize array

* fixes

* fixes

---------

Co-authored-by: Shift <shift@laravelshift.com>
2023-05-24 22:21:54 +02:00

81 lines
3.4 KiB
PHP

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::create('devices', function (Blueprint $table) {
$table->increments('device_id');
$table->string('hostname', 128)->index();
$table->string('sysName', 128)->nullable()->index();
$table->binary('ip')->nullable();
$table->string('community')->nullable();
$table->enum('authlevel', ['noAuthNoPriv', 'authNoPriv', 'authPriv'])->nullable();
$table->string('authname', 64)->nullable();
$table->string('authpass', 64)->nullable();
$table->enum('authalgo', ['MD5', 'SHA'])->nullable();
$table->string('cryptopass', 64)->nullable();
$table->enum('cryptoalgo', ['AES', 'DES', ''])->nullable();
$table->string('snmpver', 4)->default('v2c');
$table->smallInteger('port')->unsigned()->default(161);
$table->string('transport', 16)->default('udp');
$table->integer('timeout')->nullable();
$table->integer('retries')->nullable();
$table->boolean('snmp_disable')->default(0);
$table->unsignedInteger('bgpLocalAs')->nullable();
$table->string('sysObjectID', 128)->nullable();
$table->text('sysDescr')->nullable();
$table->text('sysContact')->nullable();
$table->text('version')->nullable();
$table->text('hardware')->nullable();
$table->text('features')->nullable();
$table->unsignedInteger('location_id')->nullable();
$table->string('os', 32)->nullable()->index();
$table->boolean('status')->default(0)->index();
$table->string('status_reason', 50);
$table->boolean('ignore')->default(0);
$table->boolean('disabled')->default(0);
$table->bigInteger('uptime')->nullable();
$table->unsignedInteger('agent_uptime')->default(0);
$table->timestamp('last_polled')->nullable()->index();
$table->timestamp('last_poll_attempted')->nullable()->index();
$table->float('last_polled_timetaken', 5)->nullable();
$table->float('last_discovered_timetaken', 5)->nullable();
$table->timestamp('last_discovered')->nullable();
$table->timestamp('last_ping')->nullable();
$table->float('last_ping_timetaken')->nullable();
$table->text('purpose')->nullable();
$table->string('type', 20)->default('');
$table->text('serial')->nullable();
$table->string('icon')->nullable();
$table->integer('poller_group')->default(0);
$table->boolean('override_sysLocation')->nullable()->default(0);
$table->text('notes')->nullable();
$table->integer('port_association_mode')->default(1);
$table->integer('max_depth')->default(0);
});
if (\LibreNMS\DB\Eloquent::getDriver() == 'mysql') {
\DB::statement('ALTER TABLE `devices` CHANGE `ip` `ip` varbinary(16) NULL ;');
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down(): void
{
Schema::drop('devices');
}
};