Commit Graph

3091 Commits

Author SHA1 Message Date
Wolfgang Link
37efc934a7 Fix: list_images returns now a array of hashes so adopt the code. 2017-06-08 10:29:11 +02:00
Wolfgang Link
db4c35c3a3 Permit set parent_snapname if it is not set. 2017-06-08 10:27:09 +02:00
Dietmar Maurer
4542a42ab3 PVE/API2/ReplicationConfig.pm: add job creation checks
Check if the target and guest exists to avoid creation of faulty jobs.
2017-06-08 10:01:45 +02:00
Dietmar Maurer
bc1ec7bc1b pvesr: add a message that job removal will take some time 2017-06-08 09:42:12 +02:00
Dietmar Maurer
535a24b2a5 PVE::Replication::replicate - Set $running to 0 if undef. 2017-06-08 09:31:09 +02:00
Dietmar Maurer
51506f9a2b PVE::API2::Tasks - remove dead code 2017-06-08 08:52:22 +02:00
Dietmar Maurer
4b70f596b3 PVE::API2::Tasks - use PVE::Tools::dump_logfile 2017-06-08 07:36:33 +02:00
Dietmar Maurer
fc527b4da1 PVE::API2::Replication: rework replication status API
/nodes/<node>/replication => list status of all jobs

/nodes/<node>/replication/<id>/status => individual job status

/nodes/<node>/replication/<id>/log => job log
2017-06-08 07:16:39 +02:00
Dietmar Maurer
f842e812e0 replication: add replication log files 2017-06-07 17:27:00 +02:00
Dietmar Maurer
91ee6a2fec replication: improve stale volume detection, allow sync from parent snapshot
We pass a list of storage to scan for stale volumes to prepare_local_job().
So we make sure that we only activate/scan related storages.

Snapshot rollback may remove local replication shapshots. In that case
we still have the $conf->{parent} snapshot on both sides, so we
can use that as base snapshot.
2017-06-07 17:26:56 +02:00
Dietmar Maurer
4ce4ae7047 Remove $vmid form ssh prepare and finalize command. 2017-06-07 17:25:41 +02:00
Dietmar Maurer
356fbf797f replication: save list of used storage IDs 2017-06-07 11:30:52 +02:00
Dietmar Maurer
a9da300ded PVE::API2::ReplicationConfig - extract guest ID from job ID 2017-06-07 11:30:52 +02:00
Dietmar Maurer
9b24b5d4ed use new PVE::ReplicationState::replication_snapshot_name() 2017-06-07 09:40:08 +02:00
Dietmar Maurer
e137f69fd8 replication: add last_node to replication state
So that we know which node produced the state. This is not always
the local node, because we copy the state on migrate.
2017-06-06 06:49:05 +02:00
Dietmar Maurer
c364b61f8e PVE::Replication - do not pass time to logfunc
This is simply not neccessary.
2017-06-06 06:36:03 +02:00
Dominik Csapak
4b48563a88 use correct field for child link
namely id instead of vmid, so that the child links are working in the
api inspector and pvesh

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 16:23:30 +02:00
Dietmar Maurer
f5b53d4c31 PVE/API2/Replication.pm: change vmid => guest 2017-06-02 16:22:46 +02:00
Dominik Csapak
c1b20fca93 add vmid parameter to replication status
so that one can limit the status list for one vm/ct

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 16:19:26 +02:00
Dominik Csapak
551456ff6e add defaultButton to loginWindow
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 16:17:03 +02:00
Dominik Csapak
461833217b add defaultButton and focus to snapshot window
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 16:16:51 +02:00
Dominik Csapak
02c92261ad add override for correct defaultButton behaviour
we disable the defaultButton behaviour on textarea and aria-multiline
fields, else we cannot input a newline into a textarea on a form with
a defaultButton defined

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 16:16:11 +02:00
Dietmar Maurer
d255af0128 PVE::Replication - use new PVE::ReplicationState class 2017-06-02 12:28:43 +02:00
Dietmar Maurer
6d645cb216 PVE::Replication - simplify code
Move all state writes into run_replication()
2017-06-02 12:28:43 +02:00
Emmanuel Kasper
4d02b4fe79 Do not internationalize 'Pools' when used in Ceph Context
This is a Ceph domain term and should not be translated like OSD, ...
Galician had "Virtual Groups" for Pools, which does not apply for
Ceph Context.
Also most languages were using 'Pools' anyway.
2017-06-02 10:09:45 +02:00
Dominik Csapak
0915ec99cb remove "read-only" option from container root disk
with root-only enabled, you cannot start the conainer anymore,
so we remove it there entirely

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 09:35:12 +02:00
Dominik Csapak
329ade0479 fix #1400: do not use defaultButton in NotesEdit window
with a defaultButton set, we cannot enter a newline into a textarea

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 09:25:53 +02:00
Dominik Csapak
b8ac8b0cec allow width and height parameter for vncshell
so that novnc can request a different screen size

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-06-02 09:19:07 +02:00
Wolfgang Bumiller
dc213d136f replication: use a dedicated lock file
Otherwise $update_job_state's file_set_contents() call
drops our lock.
2017-06-02 06:10:55 +02:00
Dietmar Maurer
c4ca87e508 make check: run replication_test6.pl 2017-05-31 15:29:53 +02:00
Dietmar Maurer
d793b4a62b PVE::Replication::replicate - call get_ssh_info on demand
Only call get_ssh_info() when needed, and do not pass $migration_network
for a simply remove_job - this produces just overhead and is not required.
If we always call get_ssh_info() we can never delete jobs using non-existing
targets.
2017-05-31 15:19:26 +02:00
Wolfgang Link
6452af0da1 Untaint the content of pve-replication-state.json.
JSON::decode will not untaint the raw text, so we get problems with the
last_sync, which we use many times in the code with open3.
2017-05-31 14:35:52 +02:00
Dietmar Maurer
495aa710f2 replication - allow removal of jobs with target on local node 2017-05-31 13:54:40 +02:00
Dietmar Maurer
b7a20a34bf bump version to 5.0-11 2017-05-31 09:38:42 +02:00
Dietmar Maurer
20f5ac242c replication_test5.pl: add test for job removal 2017-05-31 08:23:47 +02:00
Dietmar Maurer
f9d38c545c PVE::API2::ReplicationConfig - implement delete
We just set the remove_job property in the configuration. Actual removal
is done asynchronous inside replicate().
2017-05-31 08:23:47 +02:00
Dietmar Maurer
3c54bc912b PVE::API2Tools::resolve_proxyto - new helper
Call proxyto_callback if that method is defined.
2017-05-31 08:23:47 +02:00
Dietmar Maurer
1a9dc09e83 PVE::Replication - aquire guest_migration_lock during replication
To block guest migration.
2017-05-31 08:23:47 +02:00
Dietmar Maurer
ffe5a020b7 PVE::Replication - implement replicate_volume()
Simply call PVE::Storage::storage_migrate()
2017-05-31 08:23:47 +02:00
Dietmar Maurer
39c41c9dc5 ReplicationTestEnv.pm: avoid warning about undefined value 2017-05-31 08:23:47 +02:00
Dietmar Maurer
df16be460c bin/test/Makefile: run all replication tests 2017-05-31 08:23:47 +02:00
Dietmar Maurer
7f6ff9dd39 PVE::Replication::replicate - implement replicate
The actual volume replication is done in replicate_volume(), which is just
a stub for now.

I also added a regression test replication_test5.pl to verify basic
functions.
2017-05-31 08:23:47 +02:00
Dietmar Maurer
b11e512fae PVE::Replication::remote_finalize_local_job - new helper
Simple wrapper to call "pvesr finalize-local-job" on a remote
cluster node.
2017-05-31 08:23:47 +02:00
Dietmar Maurer
acea170e05 PVE::Replication::remote_prepare_local_job - new helper
Simple wrapper to call "pvesr prepare-local-job" on a remote
cluster node.
2017-05-31 08:23:47 +02:00
Dietmar Maurer
fcc22c0bfb pvesr finalize-local-job: add helper to cleanup job
This will be called after replication on the target node. For now, this
just removes old snapshots.
2017-05-31 08:23:47 +02:00
Dietmar Maurer
331025d954 ReplicationTestEnv.pm: mock get_ssh_info and ssh_info_to_command 2017-05-31 08:23:47 +02:00
Dietmar Maurer
4550bb78c3 ReplicationTestEnv.pm: mock storage content methods 2017-05-31 08:23:46 +02:00
Dietmar Maurer
fae995063c pvesr prepare-local-job: new helper
Prepare for starting a replication job. This is called on the target
node before replication starts. This call is for internal use, and
return a JSON object on stdout. The method first test if VM <vmid>
reside on the local node. If so, stop immediately. After that the
method scans all volume IDs for snapshots, and removes all replications
snapshots with timestamps different than <last_sync>. It also removes
any unused volumes.

Returns a hash with boolean markers for all volumes with existing
replication snapshots.
2017-05-31 08:23:46 +02:00
Dietmar Maurer
f70997ea80 pvesr run: add --verbose flag
We can now pass a $logfunc parameter to replicate() to
produce more verbose logs/output. This is especially useful
for regression testing.
2017-05-31 08:23:46 +02:00
Dietmar Maurer
6e572d46ef replication_test4.pl: Test replication job failure 2017-05-31 08:23:46 +02:00