Skip to content

Commit

Permalink
Merge branch 'main' into release/2.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
frankiejol committed Jul 26, 2024
2 parents b74aff0 + 5083dad commit 10ea79b
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 11 deletions.
2 changes: 1 addition & 1 deletion lib/Ravada.pm
Original file line number Diff line number Diff line change
Expand Up @@ -6367,7 +6367,7 @@ sub _refresh_volatile_domains($self) {
"SELECT id, name, id_vm, id_owner, vm FROM domains WHERE is_volatile=1 "
." AND date_changed < ? "
);
$sth->execute(Ravada::Utils::date_now(-120));
$sth->execute(Ravada::Utils::date_now(-$Ravada::Domain::TTL_REMOVE_VOLATILE));
while ( my ($id_domain, $name, $id_vm, $id_owner, $type) = $sth->fetchrow ) {
my $domain;
eval { $domain = Ravada::Domain->open(id => $id_domain, _force => 1) } ;
Expand Down
3 changes: 2 additions & 1 deletion lib/Ravada/Request.pm
Original file line number Diff line number Diff line change
Expand Up @@ -713,14 +713,15 @@ sub _duplicated_request($self=undef, $command=undef, $args=undef) {
confess "Error: missing command " if !$command;
# delete $args_d->{uid} unless $command eq 'clone';
delete $args_d->{uid} if $command =~ /(cleanup|refresh_vms|set_base_vm)/;
delete $args_d->{uid} if exists $args_d->{uid} && !defined $args_d->{uid};
delete $args_d->{at};
delete $args_d->{status};
delete $args_d->{timeout};

my $sth = $$CONNECTOR->dbh->prepare(
"SELECT id,args FROM requests WHERE (status <> 'done')"
." AND command=?"
." AND ( error = '' OR error is NULL)"
." AND ( error = '' OR error is NULL OR error like '% waiting for process%')"
);
$sth->execute($command);
while (my ($id,$args_found) = $sth->fetchrow) {
Expand Down
9 changes: 6 additions & 3 deletions script/rvd_back
Original file line number Diff line number Diff line change
Expand Up @@ -280,9 +280,12 @@ sub do_start {

if ( time - $t_refresh > 60 ) {
Ravada::Request->cleanup();
Ravada::Request->refresh_vms() if rand(5)<3;
Ravada::Request->enforce_limits() if rand(5)<2;
Ravada::Request->manage_pools() if rand(5)<2;
next if rand(5)>2;

Ravada::Request->refresh_vms();
Ravada::Request->enforce_limits();
Ravada::Request->manage_pools();

$t_refresh = time;
}
sleep 1 if time - $t0 <1;
Expand Down
2 changes: 1 addition & 1 deletion t/device/10_templates.t
Original file line number Diff line number Diff line change
Expand Up @@ -896,7 +896,7 @@ sub test_templates($vm) {
$vm->add_host_device(template => $first->{name});
@list_hostdev = $vm->list_host_devices();
is(scalar @list_hostdev , $n+2);
like ($list_hostdev[-1]->{name} , qr/[a-zA-Z] \d+$/) or exit;
like ($list_hostdev[-1]->{name} , qr/[a-zA-Z\)\(] \d+$/) or exit;

my $host_device = $list_hostdev[-1];

Expand Down
19 changes: 17 additions & 2 deletions t/nodes/10_basic.t
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ my $BASE_NAME = "zz-test-base-alpine";
use_ok('Ravada');
init();

$Ravada::Domain::TTL_REMOVE_VOLATILE=3;

##################################################################################

Expand Down Expand Up @@ -668,14 +669,28 @@ sub test_volatile_req($vm, $node) {
is($clone->_vm->id, $node->id) or exit;

shutdown_domain_internal($clone);
rvd_back->_cmd_refresh_vms();
_wait_machine_removed($clone);
for my $vol ( $clone->list_volumes ) {
ok(!$vm->file_exists($vol),$vol) or exit;
ok(!$node->file_exists($vol),$vol." in ".$node->name) or exit;
}
_remove_domain($base);
}

sub _wait_machine_removed($clone) {
rvd_back->_cmd_refresh_vms();
for ( 1 .. 10 ) {
my $clone2;
eval { $clone2 = Ravada::Front::Domain->open($clone->id) };
last if !$clone2;

rvd_back->_cmd_refresh_vms();
wait_request();

}
wait_request();
}

sub test_domain_gone($vm, $node) {
my $sth = connector->dbh->prepare("INSERT INTO domains (name, id_vm,status, vm) "
." VALUES (?,?,?,?)"
Expand Down Expand Up @@ -742,7 +757,7 @@ sub test_volatile_req_clone($vm, $node, $machine='pc-i440fx') {
push @vols,($clone2->list_volumes);
shutdown_domain_internal($clone2);
}
rvd_back->_cmd_refresh_vms();
_wait_machine_removed($clone);
for my $vol ( @vols ) {
ok(!$vm->file_exists($vol),$vol) or exit;
ok(!$node->file_exists($vol),$vol) or exit;
Expand Down
74 changes: 71 additions & 3 deletions t/vm/55_rename.t
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,55 @@ sub test_rename_domain {
return $new_domain_name;
}

sub _change_hardware_ram($domain) {
Ravada::Request->shutdown_domain(
uid => user_admin->id
,id_domain => $domain->id
,timeout => 1
);
wait_request();

my $max_mem = $domain->info(user_admin)->{max_mem};
my $mem = $domain->info(user_admin)->{memory};

my $new_max_mem = int($max_mem * 1.7 ) + 1;
my $new_mem = int($mem * 1.6 ) + 1;

Ravada::Request->change_hardware (
uid => user_admin->id
,id_domain => $domain->id
,hardware => 'memory'
,data => { max_mem => $new_max_mem , memory => $new_mem }
);
wait_request(debug => 0);
my $domain2 = Ravada::Front::Domain->open($domain->id);
like($domain2->_data('config_no_hd'),qr/./) or die $domain->name;
}

sub _add_hardware_disk($domain) {
diag("add disk");
Ravada::Request->shutdown_domain(
uid => user_admin->id
,id_domain => $domain->id
,timeout => 1
);
wait_request();

Ravada::Request->add_hardware(
uid => user_admin->id
,id_domain => $domain->id
,name => 'disk'
,data => { size => 1*1024*1024, type => 'data' }
);
wait_request();
my $domain2 = Ravada::Front::Domain->open($domain->id);
diag($domain2->_data('config_no_hd'));
}

sub test_req_rename_domain {
my ($vm_name, $domain_name, $dont_fork) = @_;
my ($vm_name, $domain_name, $dont_fork, $change_hardware) = @_;
my $debug = 0;
$change_hardware = 0 if !defined $change_hardware;

my $domain_id;
{
Expand All @@ -86,7 +132,11 @@ sub test_req_rename_domain {
my $domain = $vm->search_domain($domain_name);
ok($domain,"[$vm_name-req] Expecting found $domain_name") or return;
$domain_id = $domain->id;
$domain->shutdown_now($USER);
if ($change_hardware == 1 ) {
_add_hardware_disk($domain);
} elsif($change_hardware == 2) {
_change_hardware_ram($domain);
}
}
my $new_domain_name = new_domain_name();
{
Expand Down Expand Up @@ -120,6 +170,18 @@ sub test_req_rename_domain {
."$new_domain_name") or return;

}
my $req = Ravada::Request->start_domain(
uid => user_admin->id
,id_domain => $domain_id
);
wait_request(debug => 0);
Ravada::Request->force_shutdown_domain(
uid => user_admin->id
,id_domain => $domain_id
);
wait_request();

return $new_domain_name;
}

sub test_clone_domain {
Expand Down Expand Up @@ -399,7 +461,13 @@ for my $vm_name ( vm_names()) {
test_create_domain($vm_name, $domain_name);

$domain_name = test_create_domain($vm_name);
test_req_rename_domain($vm_name, $domain_name) or next;

my $name2=test_req_rename_domain($vm_name, $domain_name);
next if !$name2;
my $name3 = test_req_rename_domain($vm_name, $name2, undef, 1);
next if !$name3;
my $name4 = test_req_rename_domain($vm_name, $name3, undef, 2);
next if !$name4;
test_create_domain($vm_name, $domain_name);

test_rename_clone($vm_name);
Expand Down

0 comments on commit 10ea79b

Please sign in to comment.