my ($param) = @_;
# test if VM exists
- my $conf = PVE::LXC::load_config($param->{vmid});
+ my $conf = PVE::LXC::Config->load_config($param->{vmid});
my $res = [
{ subdir => 'current' },
my ($param) = @_;
# test if VM exists
- my $conf = PVE::LXC::load_config($param->{vmid});
+ my $conf = PVE::LXC::Config->load_config($param->{vmid});
my $vmstatus = PVE::LXC::vmstatus($param->{vmid});
my $status = $vmstatus->{$param->{vmid}};
- $status->{ha} = PVE::HA::Config::vm_is_ha_managed($param->{vmid}) ? 1 : 0;
+ $status->{ha} = PVE::HA::Config::get_service_status("ct:$param->{vmid}");
return $status;
}});
my $service = "ct:$vmid";
- my $cmd = ['ha-manager', 'enable', $service];
+ my $cmd = ['ha-manager', 'set', $service, '--state', 'started'];
print "Executing HA start for CT $vmid\n";
syslog('info', "starting CT $vmid: $upid\n");
- my $conf = PVE::LXC::load_config($vmid);
+ my $conf = PVE::LXC::Config->load_config($vmid);
die "you can't start a CT if it's a template\n"
- if PVE::LXC::is_template($conf);
+ if PVE::LXC::Config->is_template($conf);
- PVE::LXC::check_lock($conf) if !$skiplock;
+ if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
+ PVE::LXC::Config->check_lock($conf);
+ }
my $storage_cfg = cfs_read_file("storage.cfg");
- PVE::LXC::update_lxc_config($storage_cfg, $vmid, $conf);
+ PVE::LXC::update_lxc_config($vmid, $conf);
local $ENV{PVE_SKIPLOCK}=1 if $skiplock;
return $rpcenv->fork_worker('vzstart', $vmid, $authuser, $realcmd);
};
- return PVE::LXC::lock_config($vmid, $lockcmd);
+ return PVE::LXC::Config->lock_config($vmid, $lockcmd);
}
}});
method => 'POST',
protected => 1,
proxyto => 'node',
- description => "Stop the container.",
+ description => "Stop the container. This will abruptly stop all processes running in the container.",
permissions => {
check => ['perm', '/vms/{vmid}', [ 'VM.PowerMgmt' ]],
},
my $service = "ct:$vmid";
- my $cmd = ['ha-manager', 'disable', $service];
+ my $cmd = ['ha-manager', 'set', $service, '--state', 'stopped'];
print "Executing HA stop for CT $vmid\n";
syslog('info', "stopping CT $vmid: $upid\n");
- my $conf = PVE::LXC::load_config($vmid);
+ my $conf = PVE::LXC::Config->load_config($vmid);
- PVE::LXC::check_lock($conf) if !$skiplock;
+ if (!$skiplock && !PVE::LXC::Config->has_lock($conf, 'mounted')) {
+ PVE::LXC::Config->check_lock($conf);
+ }
my $cmd = ['lxc-stop', '-n', $vmid, '--kill'];
return $rpcenv->fork_worker('vzstop', $vmid, $authuser, $realcmd);
};
- return PVE::LXC::lock_config($vmid, $lockcmd);
+ return PVE::LXC::Config->lock_config($vmid, $lockcmd);
}
}});
method => 'POST',
protected => 1,
proxyto => 'node',
- description => "Shutdown the container.",
+ description => "Shutdown the container. This will trigger a clean shutdown " .
+ "of the container, see lxc-stop(1) for details.",
permissions => {
check => ['perm', '/vms/{vmid}', [ 'VM.PowerMgmt' ]],
},
$timeout = 60 if !defined($timeout);
- my $conf = PVE::LXC::load_config($vmid);
+ my $conf = PVE::LXC::Config->load_config($vmid);
- PVE::LXC::check_lock($conf);
+ PVE::LXC::Config->check_lock($conf);
my $storage_cfg = PVE::Storage::config();
return $rpcenv->fork_worker('vzshutdown', $vmid, $authuser, $realcmd);
};
- return PVE::LXC::lock_config($vmid, $lockcmd);
+ return PVE::LXC::Config->lock_config($vmid, $lockcmd);
}});
__PACKAGE__->register_method({
syslog('info', "suspend CT $vmid: $upid\n");
- my $conf = PVE::LXC::load_config($vmid);
+ my $conf = PVE::LXC::Config->load_config($vmid);
- PVE::LXC::check_lock($conf);
+ PVE::LXC::Config->check_lock($conf);
my $cmd = ['lxc-checkpoint', '-n', $vmid, '-s', '-D', '/var/lib/vz/dump'];
return $rpcenv->fork_worker('vzsuspend', $vmid, $authuser, $realcmd);
};
- return PVE::LXC::lock_config($vmid, $lockcmd);
+ return PVE::LXC::Config->lock_config($vmid, $lockcmd);
}});
__PACKAGE__->register_method({