diff --git a/lib/NGCP/Panel/Controller/Device.pm b/lib/NGCP/Panel/Controller/Device.pm index 1585e7667e..f0de0611e1 100644 --- a/lib/NGCP/Panel/Controller/Device.pm +++ b/lib/NGCP/Panel/Controller/Device.pm @@ -1977,7 +1977,7 @@ sub dev_field_firmware_version_base :Chained('dev_field_firmware_base') :PathPar } sub dev_field_firmware_next :Chained('dev_field_firmware_version_base') :PathPart('next') :Args { - my ($self, $c, $tmp) = @_; + my ($self, $c, $tag) = @_; my $rs = $c->stash->{fw_rs}->search({ device_id => $c->stash->{dev}->profile->config->device->id, @@ -1985,6 +1985,11 @@ sub dev_field_firmware_next :Chained('dev_field_firmware_version_base') :PathPar }, { order_by => { -asc => 'version' }, }); + if(defined $tag && length $tag > 0) { + $rs = $rs->search({ + tag => $tag, + }); + } if(defined $c->req->params->{q}) { $rs = $rs->search({ version => { 'like' => $c->req->params->{q} . '%' }, @@ -1994,7 +1999,11 @@ sub dev_field_firmware_next :Chained('dev_field_firmware_version_base') :PathPar my $fw = $rs->first; unless($fw) { $c->response->content_type('text/plain'); - $c->response->body("404 - current firmware version '" . $c->stash->{dev_fw_string} . "' is latest"); + if(defined $tag && length $tag > 0) { + $c->response->body("404 - current firmware with tag '$tag' is latest"); + } else { + $c->response->body("404 - current firmware version '" . $c->stash->{dev_fw_string} . "' is latest"); + } $c->response->status(404); return; } @@ -2030,7 +2039,11 @@ sub dev_field_firmware_latest :Chained('dev_field_firmware_version_base') :PathP my $fw = $rs->first; unless($fw) { $c->response->content_type('text/plain'); - $c->response->body("404 - current firmware version '" . $c->stash->{dev_fw_string} . "' is latest"); + if(defined $tag && length $tag > 0) { + $c->response->body("404 - current firmware with tag '$tag' is latest"); + } else { + $c->response->body("404 - current firmware version '" . $c->stash->{dev_fw_string} . "' is latest"); + } $c->response->status(404); return; }