also link to manual topology from device ports fix tooltip reinit on datatables paging Squashed commit of the following: commit85d52ed174Merge:66e3536607446ed7Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 31 08:59:19 2017 +0000 Merge branch 'master' into og-newnetmap commit66e353669dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 31 00:16:49 2017 +0000 add docs link commit809f1ede76Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 31 00:11:29 2017 +0000 node links to other devices commit187e1ea803Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 23:58:56 2017 +0000 add node infostring commit6453f99b28Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 23:41:19 2017 +0000 link infostrings! commitf3ba260142Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 22:42:09 2017 +0000 maxnoderadius is now based on dynamic size calc commit0af415e391Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 22:33:22 2017 +0000 fix to get aggregate ports in matching order on left and right side commit3f36121a4cAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 22:07:28 2017 +0000 initial aggregate link summing commite5b96b0781Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 14:55:00 2017 +0000 tidy and refactor commit79f22a47b3Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 13:42:58 2017 +0000 get rid of d3 v3/v4 and only have v3 commit18c3f16c8fAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 12:54:45 2017 +0000 fullscreen exit now works commit93f8181fc8Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 30 08:58:04 2017 +0000 implement show link speeds on links commit72961f172dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 28 23:51:26 2017 +0000 add speed to retrieved devicelinks commitae5496310eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 26 11:21:12 2017 +0000 remove annealing on label change commit885cb92bd3Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 26 11:15:21 2017 +0000 reorder options commit015a1debe0Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 26 11:11:01 2017 +0000 fix d3-force debug link messing up svg text elements commit10ccaa78b1Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 26 10:52:47 2017 +0000 show ips functionality; improvement to maximise icon; bugfix d3-force label wrap commit71a1a20909Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Dec 25 13:21:23 2017 +0000 move labels on neighbor view commit9578215349Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Dec 25 13:13:13 2017 +0000 force running spinner commit6618fba548Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 23:13:33 2017 +0000 fix neighbors pinning commit938848551eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 18:12:04 2017 +0000 implement dynamic sizing option commite4b19be5d7Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 13:25:00 2017 +0000 zoom to device on neighbor show; do not save positions on neighbor show commit58b576b464Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 13:10:48 2017 +0000 better neighbors/save interaction commit2c77660f2fAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 13:03:46 2017 +0000 fix labels on checkboxes to be clickable commit2c2dc62cdaAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 12:50:26 2017 +0000 prevent save positions when in neighbor view mode commit78c558b5beAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 12:37:51 2017 +0000 add tooltip to show why host groups radio is disabled commit7000d4b0ebAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 12:12:29 2017 +0000 allow port control role to edit manual topology commit547d2934cbAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 12:09:40 2017 +0000 working save/restore node positions with groups commitbf7e231ffeAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 24 10:09:26 2017 +0000 node colors! commite23594b041Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 23 23:42:17 2017 +0000 wooo device group selection is working commitb1b22c9811Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 23 22:31:23 2017 +0000 send full query str from netmap for json commit9a13bb7f9bAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 23 22:06:24 2017 +0000 implement host_group_displaynames and fix vlan save bug commit35ed34ed2fAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 23 17:52:14 2017 +0000 when neighbors only can restrict the links search commitf9e5ec02abAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 23 17:44:41 2017 +0000 tweak mapshow commit9f9971ff4eAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 23 00:47:17 2017 +0000 better sidebar look and layout commit1def41da67Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 21 23:54:44 2017 +0000 sidebar with many options!! commit4203cbb225Merge:7c12df6b7db65932Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 21 20:14:55 2017 +0000 Merge branch 'master' into og-newnetmap commit7c12df6b83Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 21 00:13:03 2017 +0000 refresh tooltips when the datatables table is updated commit081b89d5dcAuthor: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 20 23:59:15 2017 +0000 shortcut from device port to manual topology commit9520438960Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 20 23:34:44 2017 +0000 tighten the sql for neighbor links commitd6b0275931Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 20 23:26:22 2017 +0000 tweak layout again commit9e5e2f0ed5Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 20 23:18:57 2017 +0000 fullscreen mode for netmap commitaba359d2a9Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 20 22:05:51 2017 +0000 save and load netmap positions for same device groups commitb7cd0251ffAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 19 23:24:47 2017 +0000 basic positions upload commit786115ebdaAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 19 22:13:16 2017 +0000 working group drag commit91f98d4f33Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Dec 18 23:00:16 2017 +0000 drag all selected nodes commitba48eee5f7Merge:60412cd67f8e3edfAuthor: Oliver Gorwits <oliver@cpan.org> Date: Mon Dec 18 20:14:20 2017 +0000 Merge branch 'master' into og-newnetmap commit60412cd6e6Merge:39ca14917dc79f72Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 17 20:23:41 2017 +0000 Merge branch 'master' into og-newnetmap commit39ca1491b0Merge:69622582c8806beaAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 17 19:52:49 2017 +0000 Merge branch 'master' into og-newnetmap commit6962258223Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 17 19:52:26 2017 +0000 bleed versions commit444e82b8a3Author: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 16 15:33:41 2017 +0000 use d3 v4 only commit01cd7a908dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sat Dec 16 15:22:08 2017 +0000 two d3 connected commit854f37fc94Author: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 14 21:34:49 2017 +0000 more fiddling with d3 commit61a3a9e06dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 14 19:15:21 2017 +0000 working worker commitebadebe69aAuthor: Oliver Gorwits <oliver@cpan.org> Date: Thu Dec 14 07:57:55 2017 +0000 borken worker commitc327b28513Author: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 13 13:45:03 2017 +0000 fix node center commit33bd9d39daAuthor: Oliver Gorwits <oliver@cpan.org> Date: Wed Dec 13 01:14:50 2017 +0000 improvements to graphing commit6178bf2298Merge:1c627eaf925940c9Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 12 23:44:48 2017 +0000 Merge branch 'master' into og-newnetmap commit1c627eaf3cMerge:77ca8f96000cbaa1Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Dec 12 23:38:00 2017 +0000 Merge branch 'master' into og-newnetmap commit77ca8f96e1Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Dec 11 00:09:08 2017 +0000 working rendering using d3-force plugin commit187265fc03Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Dec 10 23:19:23 2017 +0000 initial work on moving to d3-force-apex-plugin - json data
143 lines
4.0 KiB
Perl
143 lines
4.0 KiB
Perl
package App::Netdisco::Web::Plugin::AdminTask::Topology;
|
|
|
|
use Dancer ':syntax';
|
|
use Dancer::Plugin::Ajax;
|
|
use Dancer::Plugin::DBIC;
|
|
use Dancer::Plugin::Auth::Extensible;
|
|
|
|
use App::Netdisco::Web::Plugin;
|
|
use App::Netdisco::Util::Device 'get_device';
|
|
|
|
use Try::Tiny;
|
|
use NetAddr::IP::Lite ':lower';
|
|
|
|
register_admin_task({
|
|
tag => 'topology',
|
|
label => 'Manual Device Topology',
|
|
});
|
|
|
|
sub _sanity_ok {
|
|
my $dev1 = NetAddr::IP::Lite->new(param('dev1'));
|
|
return 0 unless ($dev1 and $dev1->addr ne '0.0.0.0');
|
|
|
|
my $dev2 = NetAddr::IP::Lite->new(param('dev2'));
|
|
return 0 unless ($dev2 and $dev2->addr ne '0.0.0.0');
|
|
|
|
return 0 unless param('port1');
|
|
return 0 unless param('port2');
|
|
|
|
return 1;
|
|
}
|
|
|
|
ajax '/ajax/control/admin/topology/add' => require_role port_control => sub {
|
|
send_error('Bad Request', 400) unless _sanity_ok();
|
|
|
|
my $device = schema('netdisco')->resultset('Topology')
|
|
->create({
|
|
dev1 => param('dev1'),
|
|
port1 => param('port1'),
|
|
dev2 => param('dev2'),
|
|
port2 => param('port2'),
|
|
});
|
|
|
|
# re-set remote device details in affected ports
|
|
# could fail for bad device or port names
|
|
try {
|
|
schema('netdisco')->txn_do(sub {
|
|
# only work on root_ips
|
|
my $left = get_device(param('dev1'));
|
|
my $right = get_device(param('dev2'));
|
|
|
|
# skip bad entries
|
|
return unless ($left->in_storage and $right->in_storage);
|
|
|
|
$left->ports
|
|
->search({port => param('port1')}, {for => 'update'})
|
|
->single()
|
|
->update({
|
|
remote_ip => param('dev2'),
|
|
remote_port => param('port2'),
|
|
remote_type => undef,
|
|
remote_id => undef,
|
|
is_uplink => \"true",
|
|
manual_topo => \"true",
|
|
});
|
|
|
|
$right->ports
|
|
->search({port => param('port2')}, {for => 'update'})
|
|
->single()
|
|
->update({
|
|
remote_ip => param('dev1'),
|
|
remote_port => param('port1'),
|
|
remote_type => undef,
|
|
remote_id => undef,
|
|
is_uplink => \"true",
|
|
manual_topo => \"true",
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
ajax '/ajax/control/admin/topology/del' => require_role port_control => sub {
|
|
send_error('Bad Request', 400) unless _sanity_ok();
|
|
|
|
schema('netdisco')->txn_do(sub {
|
|
my $device = schema('netdisco')->resultset('Topology')
|
|
->search({
|
|
dev1 => param('dev1'),
|
|
port1 => param('port1'),
|
|
dev2 => param('dev2'),
|
|
port2 => param('port2'),
|
|
})->delete;
|
|
});
|
|
|
|
# re-set remote device details in affected ports
|
|
# could fail for bad device or port names
|
|
try {
|
|
schema('netdisco')->txn_do(sub {
|
|
# only work on root_ips
|
|
my $left = get_device(param('dev1'));
|
|
my $right = get_device(param('dev2'));
|
|
|
|
# skip bad entries
|
|
return unless ($left->in_storage and $right->in_storage);
|
|
|
|
$left->ports
|
|
->search({port => param('port1')}, {for => 'update'})
|
|
->single()
|
|
->update({
|
|
remote_ip => undef,
|
|
remote_port => undef,
|
|
remote_type => undef,
|
|
remote_id => undef,
|
|
is_uplink => \"false",
|
|
manual_topo => \"false",
|
|
});
|
|
|
|
$right->ports
|
|
->search({port => param('port2')}, {for => 'update'})
|
|
->single()
|
|
->update({
|
|
remote_ip => undef,
|
|
remote_port => undef,
|
|
remote_type => undef,
|
|
remote_id => undef,
|
|
is_uplink => \"false",
|
|
manual_topo => \"false",
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
ajax '/ajax/content/admin/topology' => require_role port_control => sub {
|
|
my $set = schema('netdisco')->resultset('Topology')
|
|
->search({},{order_by => [qw/dev1 dev2 port1/]});
|
|
|
|
content_type('text/html');
|
|
template 'ajax/admintask/topology.tt', {
|
|
results => $set,
|
|
}, { layout => undef };
|
|
};
|
|
|
|
true;
|