this patch resets all pseudo devices to have no layer3 support but adds a feature to the pseudo devices admin panel to enable layer3 support. it also changes arpnip and arpwalk behaviour to always permit the action if layer3 is available (ignoring the vendor). documentation will need updating to tell users to create pseudo devices with layer3 support when they want to arpnip an unsupported platform. arpnip with ssh/cli against a supported platform (one that can be discovered) will continue to work normally. Squashed commit of the following: commit9dad5be81dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Sep 3 09:03:53 2019 +0100 allow pseudo with layer 3 to run arpnip commit7d97943fcdAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Sep 3 08:59:10 2019 +0100 allow pseudo devices with layer 2/3 capability commitd1fdf574e3Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Sep 3 08:55:41 2019 +0100 move pseudo and layer checks to is_able from is_able_now commite0f72ef67dAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Sep 3 08:51:42 2019 +0100 ports defaults to one commit86ba01270cAuthor: Oliver Gorwits <oliver@cpan.org> Date: Tue Sep 3 08:50:45 2019 +0100 add tooltip for arpnip toggle commitcdd2470228Author: Oliver Gorwits <oliver@cpan.org> Date: Tue Sep 3 08:34:46 2019 +0100 simplify template commit46236d68eaAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Sep 1 23:53:56 2019 +0100 a fix up for pseudo devices which need layer 3 commit016d249efcAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Sep 1 20:37:11 2019 +0100 do not wrap buttons commit1ec1402e0cAuthor: Oliver Gorwits <oliver@cpan.org> Date: Sun Sep 1 20:33:03 2019 +0100 implement user settable layer-three service for pseudo devices commita267efa3d8Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Sep 1 18:39:22 2019 +0100 only set layer if successful action commitb108be5e23Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Sep 1 18:32:19 2019 +0100 should defer SNMP against pseudo devices commit897ba3a629Merge:e0ddbaaba7348900Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Sep 1 14:54:36 2019 +0100 Merge branch 'master' into og-pseudo-vs-cli-arpnip commite0ddbaab08Author: Oliver Gorwits <oliver@cpan.org> Date: Mon Aug 26 11:35:13 2019 +0100 as last commit, for discover commit61f9c89040Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Aug 25 23:55:38 2019 +0100 move pseudo and layer checks into is_*able functions commit8b010d4023Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Aug 25 18:38:11 2019 +0100 any device completing macsuck/arpnip must have that layer commita11bce7863Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Aug 25 18:33:27 2019 +0100 clean up device layers commitd2661bff61Author: Oliver Gorwits <oliver@cpan.org> Date: Sun Aug 25 18:18:02 2019 +0100 first make arpnip behave like other jobs towards pseudo devices
184 lines
5.6 KiB
JavaScript
184 lines
5.6 KiB
JavaScript
// used by the tabbing interface to make sure the correct
|
|
// ajax content is loaded
|
|
var path = 'admin';
|
|
|
|
// keep track of timers so we can kill them
|
|
var nd_timers = new Array();
|
|
var timermax = [% settings.jobqueue_refresh || 5 | html_entity %];
|
|
var timercache = timermax - 1;
|
|
|
|
// this is called by do_search to support local code
|
|
// which might need to act on the newly inserted content
|
|
// but which cannot use jQuery delegation via .on()
|
|
function inner_view_processing(tab) {
|
|
|
|
// reload this table every 5 seconds
|
|
if (tab == 'jobqueue'
|
|
&& $('#nd_countdown-control-icon').hasClass('icon-play')) {
|
|
|
|
$('#nd_countdown').text(timermax);
|
|
|
|
// add new timers
|
|
for (var i = timercache; i > 0; i--) {
|
|
nd_timers.push(setTimeout(function() {
|
|
$('#nd_countdown').text(timercache);
|
|
timercache = timercache - 1;
|
|
}, ((timermax * 1000) - (i * 1000)) ));
|
|
}
|
|
|
|
nd_timers.push(setTimeout(function() {
|
|
// clear any running timers
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
|
|
// reset the timer cache
|
|
timercache = timermax - 1;
|
|
|
|
// reload the tab content in...
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}, (timermax * 1000)));
|
|
}
|
|
|
|
// activate typeahead on the topo boxes
|
|
$('.nd_topo_dev').autocomplete({
|
|
source: uri_base + '/ajax/data/deviceip/typeahead'
|
|
,delay: 150
|
|
,minLength: 0
|
|
});
|
|
|
|
// activate typeahead on the topo boxes
|
|
$('.nd_topo_port.nd_topo_dev1').autocomplete({
|
|
source: function (request, response) {
|
|
var query = $('.nd_topo_dev1').serialize();
|
|
return $.get( uri_base + '/ajax/data/port/typeahead', query, function (data) {
|
|
return response(data);
|
|
});
|
|
}
|
|
,delay: 150
|
|
,minLength: 0
|
|
});
|
|
|
|
// activate typeahead on the topo boxes
|
|
$('.nd_topo_port.nd_topo_dev2').autocomplete({
|
|
source: function (request, response) {
|
|
var query = $('.nd_topo_dev2').serialize();
|
|
return $.get( uri_base + '/ajax/data/port/typeahead', query, function (data) {
|
|
return response(data);
|
|
});
|
|
}
|
|
,delay: 150
|
|
,minLength: 0
|
|
});
|
|
|
|
// activate modals and tooltips
|
|
$('.nd_modal').modal({show: false});
|
|
$("[rel=tooltip]").tooltip({live: true});
|
|
}
|
|
|
|
// on load, establish global delegations for now and future
|
|
$(document).ready(function() {
|
|
var tab = '[% task.tag %]'
|
|
var target = '#' + tab + '_pane';
|
|
|
|
// get all devices on device input focus
|
|
$(target).on('focus', '.nd_topo_dev', function(e) {
|
|
$(this).autocomplete('search', '%') });
|
|
$(target).on('click', '.nd_topo_dev_caret', function(e) {
|
|
$(this).siblings('.nd_topo_dev').autocomplete('search', '%') });
|
|
|
|
// get all ports on port input focus
|
|
$(target).on('focus', '.nd_topo_port', function(e) {
|
|
$(this).autocomplete('search') });
|
|
$(target).on('click', '.nd_topo_port_caret', function(e) {
|
|
$(this).siblings('.nd_topo_port').val('');
|
|
$(this).siblings('.nd_topo_port').autocomplete('search');
|
|
});
|
|
|
|
// job control refresh icon should reload the page
|
|
$('#nd_countdown-refresh').click(function(event) {
|
|
event.preventDefault();
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
$('#' + tab + '_form').trigger('submit');
|
|
});
|
|
|
|
// job control pause/play icon switcheroo
|
|
$('#nd_countdown-control').click(function(event) {
|
|
event.preventDefault();
|
|
var icon = $('#nd_countdown-control-icon');
|
|
icon.toggleClass('icon-pause icon-play text-error text-success');
|
|
|
|
if (icon.hasClass('icon-pause')) {
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
$('#nd_countdown').text('0');
|
|
}
|
|
else {
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
});
|
|
|
|
// activity for admin task tables
|
|
// dynamically bind to all forms in the table
|
|
$('.content').on('click', '.nd_adminbutton', function(event) {
|
|
// stop form from submitting normally
|
|
event.preventDefault();
|
|
|
|
// clear any running timers
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
|
|
// what purpose - add/update/del
|
|
var mode = $(this).attr('name');
|
|
|
|
// submit the query and put results into the tab pane
|
|
$.ajax({
|
|
type: 'POST'
|
|
,async: true
|
|
,dataType: 'html'
|
|
,url: uri_base + '/ajax/control/admin/' + tab + '/' + mode
|
|
,data: $(this).closest('tr').find('input[data-form="' + mode + '"]').serializeArray()
|
|
,beforeSend: function() {
|
|
$(target).html(
|
|
'<div class="span2 alert">Request submitted...</div>'
|
|
);
|
|
}
|
|
,success: function() {
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
// skip any error reporting for now
|
|
// TODO: fix sanity_ok in Netdisco Web
|
|
,error: function() {
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
});
|
|
});
|
|
|
|
// bind qtip2 to show the event log output
|
|
$(target).on('mouseover', '.nd_jobqueueitem', function(event) {
|
|
$(this).qtip({
|
|
overwrite: false,
|
|
content: {
|
|
attr: 'data-content'
|
|
},
|
|
show: {
|
|
event: event.type,
|
|
ready: true,
|
|
delay: 100
|
|
},
|
|
position: {
|
|
my: 'top center',
|
|
at: 'bottom center',
|
|
target: false
|
|
},
|
|
style: {
|
|
classes: 'qtip-cluetip qtip-rounded nd_qtip-unconstrained'
|
|
}
|
|
});
|
|
});
|
|
});
|