]> git.proxmox.com Git - pve-installer.git/blobdiff - proxmox-low-level-installer
bump version to 8.2.6
[pve-installer.git] / proxmox-low-level-installer
index b8269d7bd195e24434b90720b9e3a402258c10bb..e5c2908c3a2b06b9d3d59d3bd4a252a1d0195c63 100755 (executable)
@@ -21,6 +21,7 @@ use Time::HiRes qw(usleep);
 
 use Proxmox::Install::ISOEnv;
 use Proxmox::Install::RunEnv;
+use Proxmox::Sys::Udev;
 
 use Proxmox::Sys::File qw(file_write_all);
 
@@ -31,6 +32,7 @@ use Proxmox::UI;
 
 my $commands = {
     'dump-env' => 'Dump the current ISO and Hardware environment to base the installer UI on.',
+    'dump-udev' => 'Dump disk and network device info. Used for the auto installation.',
     'start-session' => 'Start an installation session, with command and result transmitted via stdin/out',
     'start-session-test' => 'Start an installation TEST session, with command and result transmitted via stdin/out',
     'help' => 'Output this usage help.',
@@ -67,6 +69,20 @@ sub read_and_merge_config {
 
     Proxmox::Install::Config::merge($config);
     log_info("got installation config: ". to_json(Proxmox::Install::Config::get(), { utf8 => 1, canonical => 1 }) ."\n");
+    file_write_all("/tmp/low-level-config.json", to_json(Proxmox::Install::Config::get()));
+}
+
+sub send_reboot_ui_message {
+    if (Proxmox::Install::Config::get_autoreboot()) {
+       my $secs = 5;
+       while ($secs > 0) {
+           Proxmox::UI::finished(1, "Installation finished - auto-rebooting in $secs seconds ..");
+           sleep 1;
+           $secs -= 1;
+       }
+    } else {
+       Proxmox::UI::finished(1, "Installation finished - reboot now?");
+    }
 }
 
 my $cmd = shift;
@@ -78,6 +94,7 @@ Proxmox::Log::init("/tmp/install-low-level-${cmd}.log");
 
 my $env = Proxmox::Install::ISOEnv::get();
 if ($cmd eq 'dump-env') {
+    Proxmox::UI::init_stdio({}, $env);
 
     my $out_dir = $env->{locations}->{run};
     make_path($out_dir);
@@ -101,6 +118,18 @@ if ($cmd eq 'dump-env') {
     my $run_env = Proxmox::Install::RunEnv::query_installation_environment();
     my $run_env_serialized = to_json($run_env, {canonical => 1, utf8 => 1}) ."\n";
     file_write_all($run_env_file, $run_env_serialized);
+} elsif ($cmd eq 'dump-udev') {
+    my $out_dir = $env->{locations}->{run};
+    make_path($out_dir);
+    die "failed to create output directory '$out_dir'\n" if !-d $out_dir;
+
+    my $output = {
+       disks => Proxmox::Sys::Block::udevadm_disk_details(),
+       nics => Proxmox::Sys::Net::udevadm_netdev_details(),
+    };
+
+    my $output_serialized = to_json($output, {canonical => 1, utf8 => 1}) ."\n";
+    file_write_all("$out_dir/run-env-udev.json", $output_serialized);
 } elsif ($cmd eq 'start-session') {
     Proxmox::UI::init_stdio({}, $env);
     read_and_merge_config();
@@ -115,11 +144,7 @@ if ($cmd eq 'dump-env') {
            Proxmox::UI::finished(0, $err);
        }
     } else {
-       if (Proxmox::Install::Config::get_autoreboot()) {
-           Proxmox::UI::finished(1, "Installation finished - auto-rebooting in ~ 5 seconds");
-       } else {
-           Proxmox::UI::finished(1, "Installation complete - reboot now?");
-       }
+       send_reboot_ui_message();
     }
 } elsif ($cmd eq 'start-session-test') {
     Proxmox::UI::init_stdio({}, $env);
@@ -137,11 +162,7 @@ if ($cmd eq 'dump-env') {
        }
     }
 
-    if (Proxmox::Install::Config::get_autoreboot()) {
-       Proxmox::UI::finished(1, "Installation finished - auto-rebooting in ~ 5 seconds");
-    } else {
-       Proxmox::UI::finished(1, "Installation complete - reboot now?");
-    }
+    send_reboot_ui_message();
 }
 
 exit(0);