> On March 14, 2013, 3:59 a.m., Hiroaki Kawai wrote:
> > server/src/com/cloud/network/NetworkManagerImpl.java, line 1773
> > <https://reviews.apache.org/r/9898/diff/1/?file=270127#file270127line1773>
> >
> >     NetworkElement should be always called after NetworkGuru, isn't it?
> 
> Dave Cahill wrote:
>     Looking at NetworkManagerImpl, Element does seem to be called after Guru 
> most of the time - however in destroyNetwork(), the Elements are destroyed 
> before the Guru.
>     
>     I'm happy to change the order, but since the order is not always the same 
> in NetworkManagerImpl, do you have any document references / reasons for the 
> suggested order? 
>     
>     Since we have tested the current version and it works, I just want to 
> make sure the change makes sense before implementing.
> 
> Hiroaki Kawai wrote:
>     I want to see a documentation, too. After reading the code again, I think 
> NetworkElement#release should not be called in the context with 
> NetworkGuru#deallocate . Do you really need this code block here? 
> NetworkElement#release should be called with NetworkGuru#release, and you 
> would be able to do something there.
>     
>     
>     Network lifecycle:
>     ------------------
>     
>     NetworkManagerImpl#implementNetwork
>     - NetworkGuru#implement
>     - NetworkManagerImpl#implementNetworkElementsAndResources
>     -- NetworkElement#implement
>     
>     NetworkManagerImpl#restartNetwork
>     - NetworkManagerImpl#shutdownNetworkElementsAndResources
>     -- NetworkElement#shutdown
>     - NetworkManagerImpl#implemetNetworkElementsAndResources
>     -- NetworkElement#implement
>     
>     NetworkManagerImpl#updateGuestNetwork
>     - NetworkManagerImpl#shutdownNetworkElementsAndResource
>     -- NetworkElement#shutdown
>     - NetworkManagerImpl#implemetNetworkElementsAndResources
>     -- NetworkElement#implement
>     
>     NetworkManagerImpl#shutdownNetwork
>     - NetworkManagerImpl#shutdownNetworkElementsAndResource
>     -- NetworkElement#shutdown
>     - NetworkGuru#shutdown
>     
>     
>     Nic lifecycle:
>     --------------
>     NetworkManagerImpl#allocate
>     - NetworkManagerImpl#allocateNic
>     -- NetworkGuru#allocate
>     
>     NetworkManager#prepareNic
>     - NetworkGuru#reserve
>     - NetworkManager#prepareElement
>     -- NetworkElement#prepare
>     
>     NetworkManagerImpl#release
>     - NetworkManagerImpl#releaseNic
>     -- NetworkGuru#release
>     -- NetworkElement#release
>     
>     NetworkManagerImpl#deallocate
>     - NetworkManagerImpl#removeNic
>     -- NetworkGuru#deallocate
>     
>
> 
> joe mills wrote:
>     NetworkElement#release is being called with NetworkGuru#release, but only 
> for NICs that have the "start" reservation strategy [1].
>     
>     The "start" reservation strategy means that the IP address should be 
> assigned on start and released on stop [2].
>     
>     However, the NICs on the public network are assigned a reservation 
> strategy of 'Create' which means that they should not be released between 
> starts and stops. There are no other calls to element.release, so the public 
> NIC never gets released.
>     
>     This is generally not a problem because with the VirtualRouterElement 
> there are no resources hanging around that NetworkGuru#dealloc and destroying 
> the entire VM won't take care of.
>     
>     But with our plugin, we want to handle the Public network and we do 
> allocate resources that will not go away by simply destroying the VM and 
> calling NetworkGuru#dealloc. Therefore we need the corresponding 
> NetworkElement#release call to happen, and this is the code path that gets 
> executed when we destroy the NIC.
>     
>     Given that background, do you think any changes are needed?
>     
>     [1] 
> https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob;f=server/src/com/cloud/network/NetworkManagerImpl.java;h=591910b13c63e88d3d831cd584e4e92e0db14eca;hb=HEAD#l1711
>     
>     [2] 
> http://mail-archives.apache.org/mod_mbox/incubator-cloudstack-dev/201205.mbox/%3cb1df26ecc0458748ac97cece2da98d41011d278da...@sjcpmailbox01.citrite.net%3E

The code seems to mean, NetworkElement/NetworkGuru#release for releasing what 
was reserved. Information about if there was a reserved network resource or 
not, is stored in Nic state (Nic.State.Reserved or Nic.State.Reserving). So the 
flow that NetworkElement#release is not called in NetworkManagerImpl#releaseNic 
is just a BUG, and I think we can put the NetworkElement#release out of the 
scope of Start RervationStrategy.


- Hiroaki


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/9898/#review17849
-----------------------------------------------------------


On March 25, 2013, 4:02 a.m., Dave Cahill wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/9898/
> -----------------------------------------------------------
> 
> (Updated March 25, 2013, 4:02 a.m.)
> 
> 
> Review request for cloudstack, Hugo Trippaers and Chiradeep Vittal.
> 
> 
> Description
> -------
> 
> Feature spec:
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Midokura+Networking+Plugin
> 
> Jira ticket:
> https://issues.apache.org/jira/browse/CLOUDSTACK-996
> 
> Notes:
> 
> * Documentation will follow as a separate commit
> 
> * One main difference from existing networking plugins is the lack of a 
> Resource class; we didn't feel it was necessary in this case. As mentioned in 
> Extending CloudStack Networking [1]:
> "Just like managers, resources are not strictly necessary. In theory a 
> Network Element could implement a client for the API of the new controller 
> and therefore be completely self-contained."
> 
> * We allow overriding Public traffic via the MidoNetPublicNetworkGuru. We 
> checked this approach with the list [2] and received no comments, so we're 
> going with it for now.
> 
> [1] https://cwiki.apache.org/CLOUDSTACK/extending-cloudstack-networking.html
> [2] http://markmail.org/message/k5qse63eyylszm3i
> 
> 
> This addresses bug CLOUDSTACK-996.
> 
> 
> Diffs
> -----
> 
>   api/src/com/cloud/network/Network.java c2ab655 
>   api/src/com/cloud/network/Networks.java e3d2158 
>   api/src/com/cloud/network/PhysicalNetwork.java 343a2b1 
>   api/src/org/apache/cloudstack/network/ExternalNetworkDeviceManager.java 
> bc22804 
>   client/pom.xml 7ad2eff 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java
>  b622b6d 
>   
> plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
>  c93aeeb 
>   plugins/network-elements/midokura-midonet/pom.xml 7f2e2d3 
>   plugins/network-elements/midonet/pom.xml PRE-CREATION 
>   
> plugins/network-elements/midonet/src/com/cloud/network/element/MidoNetElement.java
>  48833b3 
>   
> plugins/network-elements/midonet/src/com/cloud/network/element/SimpleFirewallRule.java
>  PRE-CREATION 
>   
> plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetGuestNetworkGuru.java
>  ed0eb3c 
>   
> plugins/network-elements/midonet/src/com/cloud/network/guru/MidoNetPublicNetworkGuru.java
>  PRE-CREATION 
>   
> plugins/network-elements/midonet/src/com/cloud/network/resource/MidoNetVifDriver.java
>  PRE-CREATION 
>   
> plugins/network-elements/midonet/test/com/cloud/network/element/MidoNetElementTest.java
>  PRE-CREATION 
>   plugins/pom.xml 39d9907 
>   server/src/com/cloud/configuration/Config.java 9db7dbd 
>   server/src/com/cloud/network/NetworkManagerImpl.java b1236cc 
>   ui/scripts/system.js c0a5d14 
> 
> Diff: https://reviews.apache.org/r/9898/diff/
> 
> 
> Testing
> -------
> 
> Built and deployed, spun up Advanced Isolated network with two VMs, verified 
> internal and external connectivity via MidoNet.
> 
> 
> Thanks,
> 
> Dave Cahill
> 
>

Reply via email to