Hi,
I've ran through the codebase and couldn't understand the situtation:)

1. When a live migrate succeedes the VMM Driver [1] seems to call the LCM 
deploy_success_action() [2] method which in turn sets the VM's lcm state to 
RUNNING.
        
    vm->set_state(VirtualMachine::RUNNING);
    vmpool->update(vm);

2. According to Hook.h [3] and PoolSQL.h [4] registered update hooks are 
executed on every pool update.

   do_hooks(objsql, Hook::UPDATE);

That is VMPool a PoolSQL descendant should trigger its registered update hooks.

3. According to VirtualMachinePool [5] and VirtualMachineHook [6] the hook 
registered for the RUNNING event is an update hook: it is a 
VirtualMachineStateHook 
descendant which itself is a VirtualMachineStateMapHook descendant which seems 
to be an update hook. 

So that RUNNING hooks' do_hook method seems to be triggered on every vmpool 
update.

  VirtualMachineStateMapHook(...):
    Hook(name, cmd, args, Hook::UPDATE, remote){};

4.  According to the VirtualMachineStateHook [7] the do_hook method seems to 
trigger the registered script if (1) the state is changed and (2) the actual 
state is
the registered target lcm/vm state (ie. RUNNING and ACTIVE). 

    if ( prev_lcm == cur_lcm && prev_vm == cur_vm ) //Still in the same state
    {
        return;
    }

    if ( cur_lcm == lcm && cur_vm == this->vm )
    {
       ...
       hmd->execute(...)
    }

So after all it seems that RUNNING hooks are executed whenever a live migration 
succeed (since I guess a RUNNING vm is also an ACTIVE vm).


Note that I've did just a quick code walk through and I'm not a C++ programmer
(in fact have no C++ experience). So I might be absolutely wrong:)

I guess Szabolcs we might simple test the use case:)

Cheers,
Gyula

[1] VMM driver:
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/src/vmm/VirtualMachineManagerDriver.cc

[2] LCM deploy_success_action
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/src/lcm/LifeCycleStates.cc

[3] Hook.h
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/include/Hook.h

[4] PoolSQL.h
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/include/PoolSQL.h

[5] VirtualMachinePool.cc
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/src/vm/VirtualMachinePool.cc

[6] VirtualMachineHook.h
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/include/VirtualMachineHook.h

[7] VirtualMachineHook.cc
http://dev.opennebula.org/projects/opennebula/repository/revisions/master/entry/src/vm/VirtualMachineHook.cc
________________________________________
Feladó: users-boun...@lists.opennebula.org [users-boun...@lists.opennebula.org] 
; meghatalmazó: Jaime Melis [j.me...@fdi.ucm.es]
Küldve: 2010. július 7. 12:13
Címzett: Székelyi Szabolcs
Másolatot kap: users@lists.opennebula.org
Tárgy: Re: [one-users] hooks on migration

Hello,

In OpenNebula the hooks can only be executed on the following events:

- CREATE, when the VM is created (onevm create)
- RUNNING, after the VM is successfully booted
- SHUTDOWN, after the VM is shutdown
- STOP, after the VM is stopped (including VM image transfers)
- DONE, after the VM is deleted or shutdown

Therefore after a migration the ebtables script will not be executed.

Regards,
Jaime

2010/7/5 Székelyi Szabolcs <szeke...@niif.hu>:
> Hello,
>
> I'd like to ask about the operation of the hook system. We're using the
> recommended ebtables way to separate virtual networks. The question is, what
> happens if a VM is live-migrated from a host to the other: does the hook
> script that sets up ebtables run at that time as well to set up the proper
> rules on the destination host?
>
> Thanks,
> --
> Szabolcs
>
> _______________________________________________
> Users mailing list
> Users@lists.opennebula.org
> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
>
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
_______________________________________________
Users mailing list
Users@lists.opennebula.org
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org

Reply via email to