Tried to address dietmars comments with v3. * First and Second patch: new and trivial
* Third patch (new) fixes a wrong transition, error -> fence should not been possible at all. Apart from the reason that we do not want to touch service in the error state at all (which happens with such a transition) this may result in a endless loop in combination with patch 4 (add check if a service is relocatable and assert it on recovery) * Fourth patch (lock simulation in virtual hardware) logs now the lock also in the simulated test HW, further a lock now also prevents shutdown/migrate/ relocate of a service (to match real world behavior) * Fifth patch (new) implements some primitive assertion if a service is relocatable before trying to recover it. I plan to add those check also in other places (e.g. when adding a service to HA) so I put it in a method in PVE::HA::Tools which then calls the plugin specific method We may want to extent it in the future, so that we check more things (if storage/volumes are available for example) but for that some restructuring in the LXC/QemuServer codes would help (we do there this checks already, but not in its own method). * Sixth patch removes the lock now not via the remove_lock method provided by AbstractConfig as this method is well behaved and does not allows removing locks from VMs/CTs located on another node. We also do not want to adapt this method to allow arbitrary lock removing, independent on which node the config is located, as this could cause missuse in the future. So as just the HA manager needs such behavior in case of a fence and recover action we (re)implement it just there. For more details see its commit message. Thomas Lamprecht (6): [1] add missing use clause in CT resource class [2] add missing cleanup for fence config regression testsuite [3] remove state transition from error to fence state [4] add possibility to simulate locks from services [5] add check if a service is relocatable and assert it on recovery [6] cleanup backup & mounted locks after recovery (fixes #1100) src/PVE/HA/Manager.pm | 34 ++++++++++++--- src/PVE/HA/Resources.pm | 13 ++++++ src/PVE/HA/Resources/PVECT.pm | 41 ++++++++++++++++++ src/PVE/HA/Resources/PVEVM.pm | 43 ++++++++++++++++++ src/PVE/HA/Sim/Hardware.pm | 48 +++++++++++++++++++++ src/PVE/HA/Sim/Resources.pm | 55 ++++++++++++++++++++++-- src/PVE/HA/Sim/TestHardware.pm | 9 ++++ src/PVE/HA/Tools.pm | 16 +++++++ src/test/Makefile | 2 +- src/test/test-erroneous-service1/README | 2 + src/test/test-erroneous-service1/cmdlist | 4 ++ src/test/test-erroneous-service1/hardware_status | 5 +++ src/test/test-erroneous-service1/log.expect | 18 ++++++++ src/test/test-erroneous-service1/manager_status | 15 +++++++ src/test/test-erroneous-service1/service_config | 3 ++ src/test/test-locked-service1/README | 3 ++ src/test/test-locked-service1/cmdlist | 5 +++ src/test/test-locked-service1/hardware_status | 5 +++ src/test/test-locked-service1/log.expect | 44 +++++++++++++++++++ src/test/test-locked-service1/manager_status | 1 + src/test/test-locked-service1/service_config | 3 ++ src/test/test-locked-service2/README | 5 +++ src/test/test-locked-service2/cmdlist | 5 +++ src/test/test-locked-service2/hardware_status | 5 +++ src/test/test-locked-service2/log.expect | 39 +++++++++++++++++ src/test/test-locked-service2/manager_status | 1 + src/test/test-locked-service2/service_config | 3 ++ 27 files changed, 417 insertions(+), 10 deletions(-) create mode 100644 src/test/test-erroneous-service1/README create mode 100644 src/test/test-erroneous-service1/cmdlist create mode 100644 src/test/test-erroneous-service1/hardware_status create mode 100644 src/test/test-erroneous-service1/log.expect create mode 100644 src/test/test-erroneous-service1/manager_status create mode 100644 src/test/test-erroneous-service1/service_config create mode 100644 src/test/test-locked-service1/README create mode 100644 src/test/test-locked-service1/cmdlist create mode 100644 src/test/test-locked-service1/hardware_status create mode 100644 src/test/test-locked-service1/log.expect create mode 100644 src/test/test-locked-service1/manager_status create mode 100644 src/test/test-locked-service1/service_config create mode 100644 src/test/test-locked-service2/README create mode 100644 src/test/test-locked-service2/cmdlist create mode 100644 src/test/test-locked-service2/hardware_status create mode 100644 src/test/test-locked-service2/log.expect create mode 100644 src/test/test-locked-service2/manager_status create mode 100644 src/test/test-locked-service2/service_config -- 2.1.4 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel