diff --git a/lib/NGCP/Panel/Controller/API/PbxDevices.pm b/lib/NGCP/Panel/Controller/API/PbxDevices.pm index fe80324f2f..a6f121caa8 100644 --- a/lib/NGCP/Panel/Controller/API/PbxDevices.pm +++ b/lib/NGCP/Panel/Controller/API/PbxDevices.pm @@ -250,7 +250,8 @@ sub POST :Allow { identifier => $resource->{identifier}, station_name => $resource->{station_name}, }); - NGCP::Panel::Utils::DeviceBootstrap::bootstrap_config($c, $device, $customer); + my $err = NGCP::Panel::Utils::DeviceBootstrap::dispatch($c, 'register', $device); + die $err if($err); for my $line ( @{$resource->{lines}} ) { $device->autoprov_field_device_lines->create($line); } diff --git a/lib/NGCP/Panel/Controller/API/PbxDevicesItem.pm b/lib/NGCP/Panel/Controller/API/PbxDevicesItem.pm index c791d31397..153dd7fc28 100644 --- a/lib/NGCP/Panel/Controller/API/PbxDevicesItem.pm +++ b/lib/NGCP/Panel/Controller/API/PbxDevicesItem.pm @@ -176,6 +176,7 @@ sub DELETE :Allow { my $device = $self->item_by_id($c, $id); last unless $self->resource_exists($c, pbxdevice => $device); try { + NGCP::Panel::Utils::DeviceBootstrap::dispatch($c, 'unregister', $device, $device->identifier); $device->delete; } catch($e) { $c->log->error("Failed to delete pbx field device with id '$id': $e"); diff --git a/lib/NGCP/Panel/Role/API/PbxDevices.pm b/lib/NGCP/Panel/Role/API/PbxDevices.pm index 09946a3291..fd66896210 100644 --- a/lib/NGCP/Panel/Role/API/PbxDevices.pm +++ b/lib/NGCP/Panel/Role/API/PbxDevices.pm @@ -191,6 +191,13 @@ sub update_item { } my $lines = delete $resource->{lines}; + my $old_identifier = $item->identifier; + unless($old_identifier eq $resource->{identifier}) { + my $err = NGCP::Panel::Utils::DeviceBootstrap::dispatch( + $c, 'register', $item, $old_identifier + ); + die $err if $err; + } $item->update($resource); return $item;