[pve-devel] [RFC v2 pve-ha-manager 5/9] TestHardware: add a more deterministic delay possibility
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Dec 16 07:34:42 CET 2015
On 12/15/2015 03:48 PM, Wolfgang Bumiller wrote:
> On Mon, Dec 14, 2015 at 03:29:57PM +0100, Thomas Lamprecht wrote:
>> With this patch we can add a command to be executed after the
>> current command and some specified delay, e.g. the following
>> cmdlist line:
>> [ "power nodeX shutdown", "delay 5", "power nodeX on"]
>>
>> This works more deterministic as it gets added to the helper
>> command list, which gets executed on every loop cycle from the
>> node processing loop and thus with a higher frequency,
>> whereas time between two comandlist commands can be undefined
>> and is mostly bigger. We need this for example to simulate a short
>> shutdown - power on cycle.
>>
>> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
>> ---
>> src/PVE/HA/Sim/TestHardware.pm | 9 ++++++++-
>> 1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/PVE/HA/Sim/TestHardware.pm b/src/PVE/HA/Sim/TestHardware.pm
>> index 5c8a0cd..9bf2936 100644
>> --- a/src/PVE/HA/Sim/TestHardware.pm
>> +++ b/src/PVE/HA/Sim/TestHardware.pm
>> @@ -290,12 +290,19 @@ sub run {
>> # end sumulation (500 seconds after last command)
>> return if (($self->{cur_time} - $last_command_time) > 500);
>> }
>> -
>> + my $delay_next_commands;
>> foreach my $cmd (@$list) {
>> $last_command_time = $self->{cur_time};
>>
>> if ($cmd =~ m/^delay\s+(\d+)\s*$/) {
>> $next_cmd_at = $self->{cur_time} + $1;
>> + $delay_next_commands = 1;
>> + } elsif ($delay_next_commands) {
>> + # after an delay add all following commands, if any, to
>> + # the helper cmd list, as they need to be executed more
>> + # deterministic and faster than with the cmdlist possible
>> + &$add_helper_cmd($self, $next_cmd_at, $cmd);
>> + $next_cmd_at = $self->{cur_time};
> While this goes through @$list it looks like the $delay_next_command
> case can be hit several times without incrementing the $next_cmd_at or
> $self->{cur_time}, but &$add_helper_cmd() was declared to warn and
> discard commands for a timeslot that was already used. See the line:
> + warn "helper cmd at time '$exec_time" already declared";
> in patch 3.
>
> Is this an issue? I'm not familiar with the rest of the activities going
> on in this part of the code.
Good catch, I intended to delay only the next command directly but also
had the idea
that the helpers could execute more commands at a time, the ideas mixed
a bit and
thus the buggy code here. As this patch has no use anymore (talked with
Dietmar)
I won't send new versions, but thanks! :)
>
>> } else {
>> $self->sim_hardware_cmd($cmd, 'cmdlist');
>> }
>> --
>> 2.1.4
>>
>>
>> _______________________________________________
>> pve-devel mailing list
>> pve-devel at pve.proxmox.com
>> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>>
More information about the pve-devel
mailing list