mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-15 14:50:23 +00:00
pve7to8: sync over from stable-7 branch
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
35069cdbdc
commit
ffa79167b0
@ -109,7 +109,7 @@ sub print_header {
|
||||
}
|
||||
|
||||
my $get_systemd_unit_state = sub {
|
||||
my ($unit, $surpress_stderr) = @_;
|
||||
my ($unit, $suppress_stderr) = @_;
|
||||
|
||||
my $state;
|
||||
my $filter_output = sub {
|
||||
@ -118,7 +118,7 @@ my $get_systemd_unit_state = sub {
|
||||
};
|
||||
|
||||
my %extra = (outfunc => $filter_output, noerr => 1);
|
||||
$extra{errfunc} = sub { } if $surpress_stderr;
|
||||
$extra{errfunc} = sub { } if $suppress_stderr;
|
||||
|
||||
eval {
|
||||
run_command(['systemctl', 'is-enabled', "$unit"], %extra);
|
||||
@ -198,7 +198,8 @@ sub check_pve_packages {
|
||||
log_fail("proxmox-ve package is too old, please upgrade to >= $min_pve_ver!");
|
||||
}
|
||||
|
||||
my ($krunning, $kinstalled) = (qr/6\.(?:2|5)/, 'pve-kernel-6.2');
|
||||
# FIXME: better differentiate between 6.2 from bullseye or bookworm
|
||||
my ($krunning, $kinstalled) = (qr/6\.(?:2\.(?:[2-9]\d+|1[6-8]|1\d\d+)|5)[^~]*$/, 'pve-kernel-6.2');
|
||||
if (!$upgraded) {
|
||||
# we got a few that avoided 5.15 in cluster with mixed CPUs, so allow older too
|
||||
($krunning, $kinstalled) = (qr/(?:5\.(?:13|15)|6\.2)/, 'pve-kernel-5.15');
|
||||
@ -251,7 +252,7 @@ sub check_storage_health {
|
||||
|
||||
my $info = PVE::Storage::storage_info($cfg);
|
||||
|
||||
foreach my $storeid (sort keys %$info) {
|
||||
for my $storeid (sort keys %$info) {
|
||||
my $d = $info->{$storeid};
|
||||
if ($d->{enabled}) {
|
||||
if ($d->{active}) {
|
||||
@ -519,7 +520,7 @@ sub check_ceph {
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $service (@$services) {
|
||||
for my $service (@$services) {
|
||||
my ($name, $key) = $service->@{'name', 'key'};
|
||||
if (my $service_versions = $ceph_versions_simple->{$key}) {
|
||||
if (keys %$service_versions == 0) {
|
||||
@ -685,7 +686,7 @@ sub check_cifs_credential_location {
|
||||
}
|
||||
|
||||
sub check_custom_pool_roles {
|
||||
log_info("Checking custom role IDs for clashes with new 'PVE' namespace..");
|
||||
log_info("Checking permission system changes..");
|
||||
|
||||
if (! -f "/etc/pve/user.cfg") {
|
||||
log_skip("user.cfg does not exist");
|
||||
@ -703,15 +704,14 @@ sub check_custom_pool_roles {
|
||||
my $line = $1;
|
||||
my @data;
|
||||
|
||||
foreach my $d (split (/:/, $line)) {
|
||||
for my $d (split (/:/, $line)) {
|
||||
$d =~ s/^\s+//;
|
||||
$d =~ s/\s+$//;
|
||||
push @data, $d
|
||||
}
|
||||
|
||||
my $et = shift @data;
|
||||
next if $et ne 'role';
|
||||
|
||||
if ($et eq 'role') {
|
||||
my ($role, $privlist) = @data;
|
||||
if (!PVE::AccessControl::verify_rolename($role, 1)) {
|
||||
warn "user config - ignore role '$role' - invalid characters in role name\n";
|
||||
@ -719,11 +719,23 @@ sub check_custom_pool_roles {
|
||||
}
|
||||
|
||||
$roles->{$role} = {} if !$roles->{$role};
|
||||
foreach my $priv (split_list($privlist)) {
|
||||
for my $priv (split_list($privlist)) {
|
||||
$roles->{$role}->{$priv} = 1;
|
||||
}
|
||||
} elsif ($et eq 'acl') {
|
||||
my ($propagate, $pathtxt, $uglist, $rolelist) = @data;
|
||||
for my $role (split_list($rolelist)) {
|
||||
if ($role eq 'PVESysAdmin' || $role eq 'PVEAdmin') {
|
||||
log_warn(
|
||||
"found ACL entry on '$pathtxt' for '$uglist' with role '$role' - this role"
|
||||
." will no longer have 'Permissions.Modify' after the upgrade!"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
log_info("Checking custom role IDs for clashes with new 'PVE' namespace..");
|
||||
my ($custom_roles, $pve_namespace_clashes) = (0, 0);
|
||||
for my $role (sort keys %{$roles}) {
|
||||
next if PVE::AccessControl::role_is_special($role);
|
||||
@ -1006,9 +1018,12 @@ sub check_containers_cgroup_compat {
|
||||
my $get_systemd_version = sub {
|
||||
my ($self) = @_;
|
||||
|
||||
my $sd_lib_dir = -d "/lib/systemd" ? "/lib/systemd" : "/usr/lib/systemd";
|
||||
my $libsd = PVE::Tools::dir_glob_regex($sd_lib_dir, "libsystemd-shared-.+\.so");
|
||||
if (defined($libsd) && $libsd =~ /libsystemd-shared-(\d+)\.so/) {
|
||||
my $libsd;
|
||||
for my $dir ('/lib/systemd', '/usr/lib/systemd', '/usr/lib/x86_64-linux-gnu/systemd') {
|
||||
$libsd = PVE::Tools::dir_glob_regex($dir, "libsystemd-shared-.+\.so");
|
||||
last if defined($libsd);
|
||||
}
|
||||
if (defined($libsd) && $libsd =~ /libsystemd-shared-(\d+)(\.\d-\d)?\.so/) {
|
||||
return $1;
|
||||
}
|
||||
|
||||
@ -1206,6 +1221,22 @@ sub check_apt_repos {
|
||||
}
|
||||
}
|
||||
|
||||
sub check_nvidia_vgpu_service {
|
||||
log_info("Checking for existence of NVIDIA vGPU Manager..");
|
||||
|
||||
my $msg = "NVIDIA vGPU Service found, possibly not compatible with newer kernel versions, check"
|
||||
." with their documentation and https://pve.proxmox.com/wiki/Upgrade_from_7_to_8#Known_upgrade_issues.";
|
||||
|
||||
my $state = $get_systemd_unit_state->("nvidia-vgpu-mgr.service", 1);
|
||||
if ($state && $state eq 'active') {
|
||||
log_warn("Running $msg");
|
||||
} elsif ($state && $state ne 'unknown') {
|
||||
log_warn($msg);
|
||||
} else {
|
||||
log_pass("No NVIDIA vGPU Service found.");
|
||||
}
|
||||
}
|
||||
|
||||
sub check_time_sync {
|
||||
my $unit_active = sub { return $get_systemd_unit_state->($_[0], 1) eq 'active' ? $_[0] : undef };
|
||||
|
||||
@ -1329,7 +1360,7 @@ sub check_misc {
|
||||
};
|
||||
|
||||
my $certs_check_failed = 0;
|
||||
foreach my $cert (@$certs) {
|
||||
for my $cert (@$certs) {
|
||||
my ($type, $size, $fn) = $cert->@{qw(public-key-type public-key-bits filename)};
|
||||
|
||||
if (!defined($type) || !defined($size)) {
|
||||
@ -1356,6 +1387,7 @@ sub check_misc {
|
||||
check_lxcfs_fuse_version();
|
||||
check_node_and_guest_configurations();
|
||||
check_apt_repos();
|
||||
check_nvidia_vgpu_service();
|
||||
check_bootloader();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user