Skip to content

Commit 1be9bf0

Browse files
committedMar 24, 2025
wip: change Network forward mode from CLI
issue #2144
1 parent dd24390 commit 1be9bf0

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
 

‎script/rvd_back

+38
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ my $TIME_CONNECTION = 10;
8484
my $TYPE;
8585
my $CREATE;
8686

87+
my $CHANGE_NETWORK_FORWARD;
88+
8789
my $USAGE = "$0 "
8890
." [--debug] [--config=$FILE_CONFIG_DEFAULT] [--add-user=name] [--add-user-ldap=name]"
8991
." [--add-user-file=filename]"
@@ -94,6 +96,7 @@ my $USAGE = "$0 "
9496
." [--remove-user=name]"
9597
." [--clean-db-leftovers]"
9698
." [--log=pathname]"
99+
." [--set-network-forward=(nat|none)]"
97100
."\n"
98101
." --add-user : adds a new db user\n"
99102
." --add-user-ldap : adds a new LDAP user\n"
@@ -124,6 +127,8 @@ my $USAGE = "$0 "
124127
." --restore file1 file2 ... fileN\n"
125128
." --migrate node machine1 machine2 ... machineN\n"
126129
."\n"
130+
."Operations on networks:\n"
131+
." --change-network-forward=[nat|none]"
127132
."Operations modifiers:\n"
128133
." --all : execute on all virtual machines\n"
129134
." For hibernate, it is executed on all the actives\n"
@@ -196,6 +201,8 @@ GetOptions ( help => \$help
196201
,"time-connection=s" => \$TIME_CONNECTION
197202
,"type=s" => \$TYPE
198203
,"create" => \$CREATE
204+
205+
,"change-network-forward=s" => \$CHANGE_NETWORK_FORWARD
199206
) or exit;
200207

201208
$START = 1 if $DEBUG || $FILE_CONFIG || $NOFORK;
@@ -228,6 +235,9 @@ die "ERROR: Supply either --all or --disconnected or --active\n"
228235
if ( $ALL && ( $DISCONNECTED || $ACTIVE ))
229236
|| ( $DISCONNECTED && ( $ALL || $ACTIVE ));
230237

238+
die "ERROR: Network forward mode must be nat or none.\n"
239+
if $CHANGE_NETWORK_FORWARD && $CHANGE_NETWORK_FORWARD !~ /^(nat|none)$/;
240+
231241
my %CONFIG;
232242
%CONFIG = ( config => $FILE_CONFIG ) if $FILE_CONFIG;
233243

@@ -1329,6 +1339,32 @@ sub upload_group_members($file) {
13291339
}
13301340
}
13311341

1342+
sub change_network_forward($rvd_back) {
1343+
1344+
my $sth = $rvd_back->_dbh->prepare(
1345+
"SELECT id,id_vm FROM virtual_networks WHERE name=?"
1346+
);
1347+
1348+
die "Error: No network names supplied.\n" if !@ARGV;
1349+
1350+
for my $name (@ARGV) {
1351+
$sth->execute($name);
1352+
my ($id_network , $id_vm) = $sth->fetchrow;
1353+
if (!$id_network) {
1354+
warn "Error: network $name not found.\n";
1355+
next;
1356+
}
1357+
my $vm = Ravada::VM->open($id_vm);
1358+
1359+
my ($network) = grep { $_->{id} == $id_network } $vm->list_virtual_networks();
1360+
$network->{forward_mode} = $CHANGE_NETWORK_FORWARD;
1361+
Ravada::Request->change_network(
1362+
uid => Ravada::Utils::user_daemon->id
1363+
,data => $network
1364+
);
1365+
}
1366+
}
1367+
13321368
sub DESTROY {
13331369
}
13341370

@@ -1383,6 +1419,8 @@ purge_nodes($rvd_back) if $PURGE_NODES;
13831419

13841420
list_unused_vols($rvd_back) if $LIST_UNUSED_VOLS;
13851421
show_volume($rvd_back) if $SHOW_VOLUME;
1422+
1423+
change_network_forward($rvd_back) if $CHANGE_NETWORK_FORWARD
13861424
}
13871425

13881426

0 commit comments

Comments
 (0)
Please sign in to comment.