fix device and device_port delete not to kill nodes
This commit is contained in:
@@ -133,7 +133,7 @@ sub _set_canonical_ip {
|
|||||||
|
|
||||||
# our special delete which is more efficient
|
# our special delete which is more efficient
|
||||||
schema('netdisco')->resultset('Device')
|
schema('netdisco')->resultset('Device')
|
||||||
->search({ ip => $device->ip })->delete;
|
->search({ ip => $device->ip })->delete({keep_nodes => 1});
|
||||||
|
|
||||||
# a new row object from the old one
|
# a new row object from the old one
|
||||||
$device = schema('netdisco')->resultset('Device')
|
$device = schema('netdisco')->resultset('Device')
|
||||||
@@ -259,7 +259,7 @@ sub store_interfaces {
|
|||||||
}
|
}
|
||||||
|
|
||||||
schema('netdisco')->txn_do(sub {
|
schema('netdisco')->txn_do(sub {
|
||||||
my $gone = $device->ports->delete;
|
my $gone = $device->ports->delete({keep_nodes => 1});
|
||||||
debug sprintf ' [%s] interfaces - removed %s interfaces',
|
debug sprintf ' [%s] interfaces - removed %s interfaces',
|
||||||
$device->ip, $gone;
|
$device->ip, $gone;
|
||||||
$device->update_or_insert(undef, {for => 'update'});
|
$device->update_or_insert(undef, {for => 'update'});
|
||||||
|
|||||||
@@ -77,13 +77,12 @@ handle the removal or archiving of nodes.
|
|||||||
sub delete {
|
sub delete {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($opts) = @_;
|
my ($opts) = @_;
|
||||||
|
$opts = {} if (ref {} ne ref $opts);
|
||||||
|
|
||||||
my $schema = $self->result_source->schema;
|
my $schema = $self->result_source->schema;
|
||||||
my $nodes = $self->search(undef, { columns => 'mac' });
|
my $nodes = $self->search(undef, { columns => 'mac' });
|
||||||
|
|
||||||
if (ref {} eq ref $opts
|
if (exists $opts->{archive_nodes} and $opts->{archive_nodes}) {
|
||||||
and exists $opts->{archive} and $opts->{archive}) {
|
|
||||||
|
|
||||||
foreach my $set (qw/
|
foreach my $set (qw/
|
||||||
NodeIp
|
NodeIp
|
||||||
NodeNbt
|
NodeNbt
|
||||||
@@ -101,6 +100,10 @@ sub delete {
|
|||||||
# avoid letting DBIC delete nodes
|
# avoid letting DBIC delete nodes
|
||||||
return 0E0;
|
return 0E0;
|
||||||
}
|
}
|
||||||
|
elsif (exists $opts->{keep_nodes} and $opts->{keep_nodes}) {
|
||||||
|
# avoid letting DBIC delete nodes
|
||||||
|
return 0E0;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
foreach my $set (qw/
|
foreach my $set (qw/
|
||||||
NodeIp
|
NodeIp
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ ajax '/ajax/control/admin/delete' => require_role admin => sub {
|
|||||||
->search({ip => param('device')});
|
->search({ip => param('device')});
|
||||||
|
|
||||||
# will delete everything related too...
|
# will delete everything related too...
|
||||||
$device->delete;
|
$device->delete({archive_nodes => param('archive')});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user