[pve-devel] [PATCH][pve-manager] Changes set_userpasswd method
Игорь
shinespb at gmail.com
Thu Oct 24 16:49:05 CEST 2013
Current solution with changing passwd and shadow files in VM private
directories doesn't work with PLOOP.
We MUST use vzctl set --userpasswd
diff --git a/PVE/API2/OpenVZ.pm b/PVE/API2/OpenVZ.pm
index 06fe60b..13fdb5a 100644
--- a/PVE/API2/OpenVZ.pm
+++ b/PVE/API2/OpenVZ.pm
@@ -411,9 +411,7 @@ __PACKAGE__->register_method({
'--ostemplate', $archive, '--private', $private];
run_command($cmd);
- # hack: vzctl '--userpasswd' starts the CT, but we want
- # to avoid that for create
- PVE::OpenVZ::set_rootpasswd($private, $password)
+ PVE::OpenVZ::set_rootpassword($vmid, $password)
if defined($password);
}
diff --git a/PVE/OpenVZ.pm b/PVE/OpenVZ.pm
index a16d4fc..90b0479 100644
--- a/PVE/OpenVZ.pm
+++ b/PVE/OpenVZ.pm
@@ -1243,6 +1243,19 @@ sub replacepw {
}
}
+sub set_rootpassword {
+ my ($vmid, $opt_rootpasswd, $login) = @_;
+
+ if (!defined($login)){
+ $login = "root";
+ }
+
+ my $cmd = ['/usr/sbin/vzctl', '--skiplock', 'set', $vmid,
'--userpasswd', "$login:$opt_rootpasswd", '--save'];
+ eval { PVE::Tools::run_command($cmd); };
+ my $err = $@;
+ syslog('err', $err) if $err;
+}
+
sub set_rootpasswd {
my ($privatedir, $opt_rootpasswd) = @_;
More information about the pve-devel
mailing list