Commit Graph

329 Commits

Author SHA1 Message Date
Dominik Csapak
6bcacc21b3 fix serial/parallel/numa permissions
moved numa\d+ persmission to VM.Config.CPU
and serial/parallel to root since it accesses the host hardware

also renamed remainingoptions to generaloptions to
reduce confusion, since the real remaining options
(those that we do not specify) require root

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-01 12:56:54 +02:00
Dominik Csapak
58cb690b06 fix #1010: whitelist options for permissions
instead of defaulting to VM.Config.Options for
all options not checked seperately, we
now have lists for the different config permissions
and check them accordingly.

for everything not given, we require root access
this is important especially for usbN and hostpciN
since they can change the host configuration

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-06-01 12:19:37 +02:00
Wolfgang Bumiller
b572a6065a Fix #643: activate volumes before resizing
The volume_size_info() call was what actually failed, but
the error reported to the gui came from afterwards trying to
resize the disk to a garabge size.
2016-04-21 10:33:36 +02:00
Thomas Lamprecht
4d2a734e1b vm_status: return more verbose HA state
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-04-19 09:01:02 +02:00
Wolfgang Bumiller
2e953867ad Fix #848: deactivate old volume after clone before deletion
Otherwise some move operations will fail to delete the old
disk (eg. when moving from ceph to local storage).

Note that in order for the deactivation to succeed we need
to make sure qemu has closed its file descriptors, so we
need to wait for the job to disappear the same way we do in
$cancel_job().
Factored the waiting out into $finish_job().
2016-04-13 08:24:13 +02:00
Dominik Csapak
8989736707 change shutdown behaviour on suspended vm
previously, when shutting down a suspended vm,
we successfully send the shutdown command to it,
but it will not shutdown (because it is suspended)

there we will run into the timeout and either
bail out with an error, or kill the process

when we not kill the process and resume the vm,
it will instantly shutdown, because of the previous
command

this patch checks the status of the vm beforehand,
and either bails out with an error that you cannot
shutdown a suspended vm, or stops the vm with the
correct qmp command (depending of forceStop)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2016-04-12 17:18:55 +02:00
Fabian Grünbichler
8793d4950e Refactor add_unused_volume
Drop add_unused_volume from PVE::QemuServer in favor of
(identical) implementation in PVE::AbstractConfig
2016-03-08 11:42:51 +01:00
Fabian Grünbichler
b2c9558da8 Rework snapshot code, has_feature
Drop snapshot_create, snapshot_delete and snapshot_rollback
in favour of PVE::AbstractConfig. Qemu-specific parts are
implemented in __snapshot_XX methods in PVE::QemuConfig.

has_feature is made an implementation of the abstract
has_feature, and thus moves to PVE::QemuConfig.

Note: a new hook method needed to be introduced to be called
before creating a volume snapshot, after creating a volume
snapshot, and after unfreezing the guestfs after creating a
volume snapshot. The base method in PVE::AbstractConfig is a
noop, the implemention in PVE::QemuConfig runs the necessary
Qemu monitor commands.
2016-03-08 11:42:37 +01:00
Fabian Grünbichler
ffda963f46 Refactor basic config-related methods
Drop load_config, write_config, lock_config[_xx],
check_lock, check_protection, is_template and config_file
in favour of implementions in PVE::AbstractConfig.

Implement guest_type, __config_max_unused_disks,
config_file_lock and cfs_config_path from
PVE::AbstractConfig in PVE::QemuConfig.
2016-03-08 11:41:59 +01:00
Fabian Grünbichler
74479ee9bb Make foreach_drive order deterministic
Previously, foreach_drive iterated over all configuration
keys (in a random order) and checked whether the current key
is a valid drive name. Instead, we now iterate over a list
of valid drive names (with deterministic order) and check
whether a drive with such a name exists in the
configuration.

Also rename the two involved methods from valid_drive_name
to is_valid_drive_name (for the check) and from disknames
to valid_drive_names (for the list of valid keys), for
consistency. These two were only used in the qemu-server
code base.
2016-03-04 06:25:48 +01:00
Dietmar Maurer
346130b2ba fix typo 2016-03-04 06:22:22 +01:00
Emmanuel Kasper
d6c747ff12 document for end users the differences between shutdown and stop 2016-03-04 06:16:16 +01:00
Wolfgang Bumiller
12612b09ae Close #880: ability to show paused state via the CLI
qm list and qm status both show suspended VMs as 'running'
while the GUI's status summary shows them as 'paused'.

This patch makes 'qm status' always request the full status
and adds an optional '-full' parameter for 'qm list' to
use a full status query to include the 'paused' state. (This
is optional as it causes qmp requests to all running VMs.)
2016-03-01 11:59:44 +01:00
Alexandre Derumier
51eefb7e11 clone_vm : only deactivate sources volume if source vm if offline
We can clone online a running vm, we don't have to deactive source vm volume
if the source vm is running

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2016-02-25 08:48:12 +01:00
Fabian Grünbichler
8317c759bf Drop skiplock from write_config
Since write_config was always called with skiplock=1 except
once, it makes sense to drop this parameter like in
PVE::LXC::write_config . If needed in the future, the
caller can use check_lock before write_config anyway.
2016-02-12 12:16:57 +01:00
Fabian Grünbichler
63be43a947 Refactor update_config_nolock -> write_config
The method update_config wrapped update_config_nolock
using lock_config, but to prevent update races the whole
"read config", "do something", "write config" flow was
always protected by lock_config anyway, and update_config
was never called.

Thus, we can safely drop update_config and rename
update_config_nolock to write_config like in PVE::LXC .
2016-02-12 12:14:52 +01:00
Thomas Lamprecht
0dbcc8c9a1 fix PVE::HA use clause so HA resources get registered
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2016-01-27 17:08:21 +01:00
Dietmar Maurer
eb15b9f074 clone: correctly activate volumes (consider snapshots) 2016-01-22 11:54:34 +01:00
Wolfgang Bumiller
98cbd0f47e check for qorum when starting a VM 2016-01-10 14:55:25 +01:00
Wolfgang Bumiller
77019edfe0 fix bug #841: replace get_used_paths with is_volume_in_use
get_used_paths returned a hash of used paths for all the
volumes in a VM's config, which is not enough to figure out
whether there are snapshots, as snapshots often have
different paths.  Eg. on ZFS it is not enough to check for
/dev/zvol/tank/vm-123-disk-1 because the snapshot's path is
/dev/zvol/tank/vm-123-disk-1@snap1 and thus we allowed
deleting the drive. Then when trying to delete the snapshot
later you get:
  zfs error: cannot open 'tank/vm-751-disk-1': dataset does not exist
and it refuses to delete the snapshot.

Since its only use was to check whether or not a drive is
still in use it is now renamed to is_volume_in_use and
beside checking paths now also checks volume-ids as those
should stay the same.
2015-12-10 12:13:12 +01:00
Thomas Lamprecht
ab5904f7e0 qm: Add VMID auto completion to some commands
Add the respective completion function for the:
*) start
*) stop
*) shutdown
*) suspend
*) resume
*) sendkey
qm commands. The destroy command was left out on purpose for now.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2015-12-09 12:21:09 +01:00
Dietmar Maurer
db593da26c destroy VM: test for running VM before starting background task 2015-11-07 12:09:01 +01:00
Wolfgang Bumiller
34456bf02e clone: use a fullclone hash instead of $drive->{full}
'full' is not a valid drive property which are now being
checked in print_property_string. Since it's only a
temporary value and passed to clone_disk as parameter it
can be stored separately.
2015-10-30 07:06:10 +01:00
Dietmar Maurer
c13e17d0d4 Revert "fix bug 790: encode description before writing to syslog"
This reverts commit 9ac5db408d.

This is now fixed by a change in PVE::Cluster::log_msg().
2015-10-29 17:44:17 +01:00
Dietmar Maurer
9ac5db408d fix bug 790: encode description before writing to syslog 2015-10-29 10:49:08 +01:00
Alexandre Derumier
289e0b8564 migrate : add nocheck for resume
Users have reported resume bug when HA is used.

They seem to have a little race (bench show >0s < 1s) between the vm conf file move on source node and replication to,
and resume on target node.

I don't known why this is only with HA, maybe this occur will standard migration too.

Anyway, we don't need to read the vm config file to resume the vm on target host,
as we are sure that the vm is migrated, and config file move action is correct in the cluster.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-10-15 12:41:13 +02:00
Dietmar Maurer
5f20325f61 create: add better check for unused IDs 2015-10-05 12:43:07 +02:00
Alen Grizonic
ea2106258b boot order permissions change
to change to boot order it is needed to assign a user the
VM.Config.Disk privilege set with the add/modify/delete disk
permissions -> now the patch allows the boot order to be (re)defined
with the VM.Config.Options set - the modify any other VM configuration
2015-09-26 11:06:05 +02:00
Alen Grizonic
284fa4c728 VM protection mode
[PATCH v2] changes:

- changed call also for remove VM
2015-09-21 06:36:01 +02:00
Dietmar Maurer
0152058a03 code cleanups 2015-09-17 13:10:19 +02:00
Alen Grizonic
4d8d55f155 VM protection mode
changes:

- added common check_protection subroutine
- disk removal prevention
- restore over protected VM prevention
- changed man page message
2015-09-17 13:05:37 +02:00
Dietmar Maurer
65605ff730 avoid warning about undefined value 2015-09-10 09:37:55 +02:00
Dietmar Maurer
335af808a4 improve bash completion 2015-09-07 08:13:07 +02:00
Dietmar Maurer
65e866e5da implement a few bash completion helpers 2015-09-06 16:01:59 +02:00
Alen Grizonic
cb0e4540f7 VM protection mode added
used to prevent an unintended virtual machine remove operation

v3 changes:

- changed man page message
- removed protection parameter (where not needed)
2015-09-06 11:31:05 +02:00
Dietmar Maurer
952e3ac30f cleanup previous patch 2015-08-28 18:16:08 +02:00
Alen Grizonic
e9f2f8e5f9 HA resources check before destroying vm 2015-08-28 15:32:44 +02:00
Thomas Lamprecht
7f9e28e45c fix 'uninitialized value in concat' due to unnamed VM
This is an minor fix which let's you start the spice console on an
unnamed VM without getting the 'Use of uninitialized value in
concatenation' error.
Also changes the trailing comma from the $conf definition lineto an
semicolon.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2015-08-28 10:36:51 +02:00
Alen Grizonic
457010cc48 clone vm firewall config file
Signed-off-by: Alen Grizonic <a.grizonic@proxmox.com>
2015-08-25 06:49:26 +02:00
Wolfgang Link
a78ea5dfe9 fix bug #688: prevent copy unused disks in the config. 2015-08-20 12:28:05 +02:00
Alen Grizonic
e9abcde681 fix bug #603: vmid.fw file not deleted
Signed-off-by: Alen Grizonic <a.grizonic@proxmox.com>
2015-08-19 15:30:00 +02:00
Wolfgang Link
d662790a14 fix bug #517: improve error message
Get a understandble message,
if someone try to increase a qcow2 image where one or more snapshots reside
2015-08-18 16:35:00 +02:00
Wolfgang Bumiller
1bc483f6bc adapt /config and /pending API calls to force-delete 2015-08-18 16:29:10 +02:00
Alen Grizonic
37f438057a remove vm access permissions after destroy
removed duplicated code which was used in
PVE::AccessControl -> now in PVE::API2::Qemu

Signed-off-by: Alen Grizonic <a.grizonic@proxmox.com>
2015-08-14 08:07:24 +02:00
Wolfgang Bumiller
3dc38fbb74 pending-delete: remember force-deletes
The -force flag didn't have any effect since the pending
changes didn't carry over the the flag.
Now forced deletes have an exclamation mark prepended to the
option name.
2015-08-13 11:08:45 +02:00
Wolfgang Bumiller
af0eba7e35 pass port family to next_*_port() calls 2015-05-12 12:28:56 +02:00
Wolfgang Bumiller
d483fa010c Switch from netcat-traditional to netcat6
netcat6 supports both ipv4 and ipv6, contrary to netcat-traditional.
Additionally rather than using the alternatives-managed /bin/nc path,
/bin/nc6 is now used which always points to the netcat6 implementation,
allowing us to drop the netcat-openbsd conflict entry.
2015-05-12 06:39:08 +02:00
Dietmar Maurer
c44291cd1a fix ha resource names 2015-04-17 13:10:32 +02:00
Dietmar Maurer
2003f0f85b depend on pve-ha-manager 2015-03-27 12:47:56 +01:00
Dietmar Maurer
5b584381dd use new PVE::Cluster::vm_is_ha_managed 2015-03-02 10:31:46 +01:00
Dietmar Maurer
025e1d900b correct use hash with keys 2015-02-27 12:58:41 +01:00
Alexandre Derumier
de9d1e5574 add vcpus option
vcpus = current allocate vpus to virtual machine

maxcpus is now compute from $sockets*cores
vcpus = maxcpus if not defined

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-22 11:01:15 +01:00
Alexandre Derumier
0e54e1c8bd pending api : fix parsing 0 value
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2015-01-15 06:22:09 +01:00
Dietmar Maurer
4c8365fafa fix previous commit: forgot API definitions 2015-01-08 09:04:18 +01:00
Dietmar Maurer
d3df8cf350 update_vm api : add optionnal revert option
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 11:09:30 +01:00
Dietmar Maurer
6d89b548e1 add optionnal current param to config api
config api return by default the pending config, like this it don't break current behaviour

Add an optionnal current param to get to current running config

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 08:31:32 +01:00
Dietmar Maurer
df2a2dbbe1 API: list new 'pending' method 2015-01-07 08:14:14 +01:00
Dietmar Maurer
915d3481b3 remove unused code
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:44:45 +01:00
Dietmar Maurer
a05cff86e7 vmconfig_hotplug_pending : add update_disk
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:44:30 +01:00
Dietmar Maurer
3eec576714 vmconfig_hotplug_pending : add update_net
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:43:11 +01:00
Dietmar Maurer
1e7f272634 implement API/CLI to get pending changes
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:55 +01:00
Dietmar Maurer
3a11fadb41 vmconfig_hotplug_pending: improve hotplug error handling
Simplify code, and allow to partially apply pending changes using
a new $selection parameter.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:48 +01:00
Dietmar Maurer
c750e90abd vmconfig_cleanup_pending: new method to clenup setting in [PENDING]
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:39 +01:00
Dietmar Maurer
6ca8b69870 fix balloon consistency check (consider pending changes)
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:22 +01:00
Dietmar Maurer
055d554dfa vm_start: apply pending changes
I move related helper methods into PVE::QemuServer.

Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:17 +01:00
Dietmar Maurer
3900164009 implement vmconfig_apply_pending for stopped VM
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:11 +01:00
Dietmar Maurer
202d1f45e5 update_vm_api: always write into pending section
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2015-01-07 06:42:06 +01:00
Wolfgang Link
af9110ddd7 Fix in PVE::QemuServer::snapshot_create
remove the freezefs flag.
If Qemu Guest Agent flag is set in config the vm filesystem will always be frozen,
unless we save RAM.

also remove param freezefs in PVE::API2 snapshot,
because there is no use for it.

Signed-off-by: Wolfgang Link <wolfgang@linksystems.org>
Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
2014-12-04 12:30:35 +01:00
Dietmar Maurer
f34ebd5259 code cleanups 2014-12-01 09:50:11 +01:00
Dietmar Maurer
184955dc65 fix bug #542: return VMID as integer 2014-09-17 15:51:47 +02:00
Dietmar Maurer
cd11416f7a clone_vm: auto generate new uuid 2014-08-26 09:20:09 +02:00
Dietmar Maurer
debe88829e vm_stop: do not use ha commands if $migratedfrom is set 2014-07-29 06:51:02 +02:00
Stefan Priebe
64ff6fe44c API2: remove require full parameter for snapshot cloning
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-07-17 09:22:37 +02:00
Alexandre Derumier
e5e3ccbbc2 allow resize of virtio windows boot disk
virtio-win-0.1-74  have fixed the resize bug of virtio boot disk

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-07-16 12:47:04 +02:00
Dietmar Maurer
47314bf5e2 auto generate uuid on VM create
Other VM environments also generates an UUID by default.
2014-06-26 11:51:52 +02:00
Dietmar Maurer
d7fd6a445b require 'VM.Config.HWType' priviledge to change new smbios1 option 2014-06-26 11:17:10 +02:00
Dietmar Maurer
12a1e0f4e8 vncproxy: remove check if VM is running
Because this does not work when VM is on other cluster node.
2014-06-25 09:54:23 +02:00
Dietmar Maurer
7786f1b0b4 vncproxy: add check if VM is running
To provide better eror message for console task.
2014-06-25 07:20:23 +02:00
Dietmar Maurer
c422ce9347 protect websocket API with vncticket 2014-06-24 16:10:30 +02:00
Dietmar Maurer
4d00f52fbb fix a typo 2014-06-24 07:44:17 +02:00
Dietmar Maurer
5b25afb0b7 vncwebsocket: do not proxy connection 2014-06-18 12:44:46 +02:00
Dietmar Maurer
3e7567e05e do not use novnc wsproxy
Instead, we use new HTTPServer features.
2014-06-18 11:02:57 +02:00
Dietmar Maurer
983d458216 cleanup VNC websocket patch
Pass ticket via ENV{LC_PVE_TICKET} to vncproxy. Also remove 'unsecure' option, because
this is implied if we want a websocket connection.
2014-06-17 08:06:32 +02:00
Stefan Priebe
b4d5c00063 API2/Qemu: add unsecure and websocket options to vncpoxy also set qemu vnc server properties on the fly
Signed-off-by: Stefan Priebe <s.priebe@profihost.ag>
2014-06-17 08:05:28 +02:00
Dietmar Maurer
8cd00f4b24 do not ignore errors on tap_unplug 2014-05-08 15:45:25 +02:00
Alexandre Derumier
2dd4aa4c95 add firewall option to qemu network interface
this allow to disable firewall for a specific interface

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-05-08 08:35:37 +02:00
Dietmar Maurer
228a998ba3 depend on pve-firewall, add firewall API for VMs 2014-05-06 11:27:10 +02:00
Dietmar Maurer
19d13324e4 add linefeed to warn message and add changelog for previous commit 2014-04-17 09:29:46 +02:00
Alexandre Derumier
5b0bd20dd5 move_disk : don't delete disk if used in a previous snasphot v2
and set it as unused

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-04-17 07:44:17 +02:00
Lindsay Mathieson
68ab04470b Adds the VM name to the title for the spice clent, making it easier to identify which in window lists etc.
Signed-off-by: Lindsay Mathieson <lindsay.mathieson@gmail.com>
2014-01-31 06:51:16 +01:00
Dietmar Maurer
73272365bf deactivate volume after clone
To avoid lvm LVs to be active on several nodes.
2014-01-29 06:44:06 +01:00
Alexandre Derumier
838776ab65 add cpu_hotplug
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2014-01-14 07:29:25 +01:00
Dietmar Maurer
dd25eecf62 code cleanup
Use new helper methods.
2013-12-10 10:46:50 +01:00
Dietmar Maurer
78252ce7d0 spiceproxy: use POST instead of GET
using GET is a security risk (no CSRF checks)
2013-12-09 08:17:52 +01:00
Alexandre Derumier
74edd76ba8 qemuserver : iothrottle add support for throttling burst max
http://git.qemu.org/?p=qemu.git;a=commit;h=3e9fab690d59ac15956c3733fe0794ce1ae4c4af

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
2013-12-05 06:31:06 +01:00
Dietmar Maurer
7aa608d655 include sendkey in directory index 2013-11-20 06:54:06 +01:00
Dietmar Maurer
baca276db5 deactivate volumes after clone to other node 2013-11-19 08:15:54 +01:00
Dietmar Maurer
1f1412d189 correcctly check if option is a drive 2013-10-14 07:35:04 +02:00
Dietmar Maurer
c9928b3d53 use new PVE::Storage::abs_filesystem_path()
The check_volume_access() method does no longer return a path.
2013-10-01 12:41:06 +02:00
Dietmar Maurer
fa8ea931ed whitespace cleanups 2013-09-05 07:44:52 +02:00