From 23f9dcdef5bd521a077ffc04a2d1097b4fb6a9b0 Mon Sep 17 00:00:00 2001 From: Francesc Guasch Date: Tue, 2 Jul 2024 14:18:54 +0200 Subject: [PATCH] wip: remove volatile just gone --- lib/Ravada.pm | 14 ++++++++++---- public/js/ravada.js | 3 +++ t/device/50_nodes.t | 8 +------- templates/main/run_request.html.ep | 4 +--- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/Ravada.pm b/lib/Ravada.pm index a8027c62b..4301b384f 100644 --- a/lib/Ravada.pm +++ b/lib/Ravada.pm @@ -5011,7 +5011,12 @@ sub _cmd_start { my $domain; $domain = $self->search_domain($name) if $name; $domain = Ravada::Domain->open($id_domain) if $id_domain; - die "Unknown domain '".($name or $id_domain)."'" if !$domain; + + if(!$domain) { + $self->_remove_inactive_gone($id_domain); + die "Unknown machine '".($name or $id_domain)."'\n"; + } + $domain->status('starting'); my $uid = $request->args('uid'); @@ -5683,7 +5688,7 @@ sub _cmd_check_storage($self, $request) { } } -sub _remove_inactive_gone($id_domain) { +sub _remove_inactive_gone($self,$id_domain) { my $sth = $CONNECTOR->dbh->prepare( "SELECT name,is_volatile " ." FROM domains " @@ -5692,10 +5697,11 @@ sub _remove_inactive_gone($id_domain) { $sth->execute($id_domain); my ($name,$is_volatile) = $sth->fetchrow; if ($is_volatile) { - Ravada::Request->remove_domain( + my $req = Ravada::Request->remove_domain( name => $name ,uid => Ravada::Utils::user_daemon->id ); + $self->_cmd_remove($req); } } @@ -5707,7 +5713,7 @@ sub _cmd_refresh_machine($self, $request) { # it may have been removed on shutdown when volatile my $domain = Ravada::Domain->open($id_domain); - return _remove_inactive_gone($id_domain) if !$domain; + return $self->_remove_inactive_gone($id_domain) if !$domain; $domain->check_status(); $domain->list_volumes_info(); diff --git a/public/js/ravada.js b/public/js/ravada.js index ef2c0d5c7..550c3a2f6 100644 --- a/public/js/ravada.js +++ b/public/js/ravada.js @@ -1402,6 +1402,9 @@ var data = JSON.parse(event.data); $scope.$apply(function () { $scope.request = data; + if (/Unknown (domain|machine)/i.exec($scope.request.error)) { + $scope.domain=undefined; + } }); if ( data.id_domain && ! already_subscribed_to_domain ) { already_subscribed_to_domain = true; diff --git a/t/device/50_nodes.t b/t/device/50_nodes.t index c5771f418..cfb2fec2e 100644 --- a/t/device/50_nodes.t +++ b/t/device/50_nodes.t @@ -124,7 +124,6 @@ sub _create_host_devices($node,$number, $type=undef) { $hd->remove; return; } - diag("creating mock devices because not enough found"); my ($list_command,$list_filter) = _create_mock_devices($node->[0], $number->[0], "USB" ); for my $i (1..scalar(@$node)-1) { die "Error, missing number[$i] ".Dumper($number) unless defined $number->[$i]; @@ -195,7 +194,6 @@ sub test_devices($vm, $node, $n_local=3, $n_node=3) { } sub test_assign_v2($hd, $node, $number, $volatile=0) { - diag("test ssign v2 number=".join(",",@$number)." volatile=$volatile"); my $vm = $node->[0]; my $base = create_domain($vm); $base->add_host_device($hd); @@ -221,7 +219,6 @@ sub test_assign_v2($hd, $node, $number, $volatile=0) { ,uid => user_admin->id ); wait_request(debug => 0); - diag($req->error); } wait_request(debug=>0); @@ -243,12 +240,10 @@ sub test_assign_v2($hd, $node, $number, $volatile=0) { $fd = Ravada::WebSocket::_list_host_devices(rvd_front(),$ws); my $name = new_domain_name; - diag("Starting $name"); my $domain = _req_clone($base, $name); is($domain->is_active,1) if $vm->type eq 'Void'; check_hd_from_node($domain,\%devices_nodes); my $hd_checked = check_host_device($domain); - warn $hd_checked; push(@{$dupe{$hd_checked}},($domain->name." ".$base->id)); my $id_vm = $domain->_data('id_vm'); $found{$id_vm}++; @@ -367,7 +362,7 @@ sub _req_clone($base, $name=undef) { ); wait_request(debug => 0, check_error => 0); if ($base->type eq 'KVM' && $MOCK_DEVICES) { - diag($req->error); + diag($req->error) if $req->error; } else { is($req->error, '') or confess; } @@ -472,7 +467,6 @@ sub test_clone_nohd($hd, $base) { my ($name, $req, $domain0); for ( 1 .. _count_devices($hd) ) { - diag("trying to overflow"); $name = new_domain_name(); my $req0 = Ravada::Request->clone( uid => user_admin->id diff --git a/templates/main/run_request.html.ep b/templates/main/run_request.html.ep index d8774ecea..70cbbe7fd 100644 --- a/templates/main/run_request.html.ep +++ b/templates/main/run_request.html.ep @@ -15,18 +15,16 @@

<%=l 'Running' %> {{domain.alias}} <%=l 'Volatile' %>

- <%= $request->id %>
<%=l 'A viewer is required to run the virtual machines.' %> <%=l 'Read more.' %>
- {{request}}
<%=l 'Waiting for machine to start' %>
-
+
{{domain.description}}