Do they delete IP from the removeFloatingIpFromNodeAndDeallocate method? Also, we need to make sure all the IaaSes do this, we can't only check in Openstack and do anything.
I think what we currently do is, let destroyNode disassociate the IP from the instance and then only we would release the IP. On Fri, Nov 21, 2014 at 9:49 AM, Rajkumar Rajaratnam <[email protected]> wrote: > I went though Jclouds code base and found that destroyNode() will > deallocate and release(delete) all floating IPs associated with the > instance. The following method is in the NovaComputeServiceAdapter class. > > @Override > public void destroyNode(String id) { > ZoneAndId zoneAndId = ZoneAndId.fromSlashEncoded(id); > if > (novaApi.getFloatingIPExtensionForZone(zoneAndId.getZone()).isPresent()) { > try { > removeFloatingIpFromNodeAndDeallocate.apply(zoneAndId); > } catch (RuntimeException e) { > logger.warn(e, "<< error removing and deallocating ip from > node(%s): %s", id, e.getMessage()); > } > } > > novaApi.getServerApiForZone(zoneAndId.getZone()).delete(zoneAndId.getId()); > } > > > > And what we are doing is, > > // destroy the node iaasProvider.getComputeService().destroyNode(nodeId); > // release allocated IP address if (ctxt.getAllocatedIpAddress() != > null) { iaas.releaseAddress(ctxt.getAllocatedIpAddress()); } > Calling release address after destroyNode() is not going to do anything. > IPs are already released by destroyNode() method itself. > > Conclusion is, currently, when stratos terminates an instance it will > release floating IPs allocated to this instance. > > We can improve it to not to release predefined floating IPs by > disassociating the IP before calling destroyNode(). > > Thanks. > > On Fri, Nov 21, 2014 at 1:26 PM, Rajkumar Rajaratnam <[email protected]> > wrote: > >> Anyone tried with a predefined floating IP and got the floating IP >> disassociated (not released) when unsubscribing to the cartridge? >> >> Thanks. >> >> On Fri, Nov 21, 2014 at 12:44 PM, Rajkumar Rajaratnam <[email protected] >> > wrote: >> >>> Hi, >>> >>> I have commented out IP releasing code segment and unsubscribed from a >>> cartridge. Floating IPs allocated to that instance were released(deleted). >>> So I guess, Jclouds' BasicComputeService#destroyNode(String id) is >>> releasing the floating IPs too. >>> >>> So predefined floating IPs will also be removed. The flow we are having >>> is to destroy the node first and release the IPs then. Please refer the >>> code @ [1]. >>> >>> We can remove/disassociate the predefined floating IPs before calling >>> destroying the node. It will ensure that predefined floating IPs will not >>> be released, rather these will be detached from the instance. >>> >>> Or I guess we should be able to set a property to prevent releasing IPs >>> when terminating instances. I sent a mail to jclouds user list. >>> >>> 1. >>> https://github.com/apache/stratos/blob/master/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java#L986-996 >>> >>> wdyt? >>> >>> Thanks. >>> >>> On Fri, Nov 21, 2014 at 12:21 PM, Rajkumar Rajaratnam < >>> [email protected]> wrote: >>> >>>> Hi Nirmal, >>>> >>>> Please have a look at associateAddress(NodeMetadata node) @ [1]. >>>> >>>> This method either allocate an IP or using an available IP. So what we >>>> setting to allocatedIPAddress can be either an allocated one or an >>>> available one right? Am I missing something here? >>>> >>>> 1. >>>> https://github.com/apache/stratos/blob/master/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java#L219-298 >>>> >>>> Thanks. >>>> >>>> On Fri, Nov 21, 2014 at 12:14 PM, Nirmal Fernando < >>>> [email protected]> wrote: >>>> >>>>> We shouldn't be releasing the non-allocated IPs. Since you are >>>>> claiming that we are doing so, I had a look at the code, but I see only >>>>> https://github.com/apache/stratos/blob/master/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java#L842 >>>>> where we set allocated IP to member context. So, only that IP should have >>>>> been released. Isn't it the case? Please point to code segments. >>>>> >>>>> On Fri, Nov 21, 2014 at 7:34 AM, Rajkumar Rajaratnam < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Nirmal, >>>>>> >>>>>> On Fri, Nov 21, 2014 at 11:46 AM, Nirmal Fernando < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Nov 21, 2014 at 6:24 AM, Rajkumar Rajaratnam < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi devs, >>>>>>>> >>>>>>>> We have the following fields in Member Context; >>>>>>>> >>>>>>>> // private ip private String privateIpAddress; // public ip private >>>>>>>> String publicIpAddress; // manually allocated ip private String >>>>>>>> allocatedIpAddress; >>>>>>>> I hope that the reason for having allocatedIpAddress is to release >>>>>>>> it when terminating the instance. We are not releasing(deleting) all >>>>>>>> the >>>>>>>> public IPs. >>>>>>>> >>>>>>>> Predefined IPs should not released when terminating the instances >>>>>>>> right? Is this happening now? My predefined IP got released when I >>>>>>>> unsubscribed to the cartridge. >>>>>>>> >>>>>>> >>>>>>> AFAIK we have to release an IP, only if we allocate manually. >>>>>>> >>>>>> >>>>>> We are not exactly doing it. So when we associate an floating IP to >>>>>> an instance, we are retrieving all the available floating IPs, shuffle >>>>>> them >>>>>> and associate the last floating IP to the instance. If there are no >>>>>> available floating IPs, we are allocating one and associate to the >>>>>> instance. These two scenario is considered as allocated IPs in stratos. >>>>>> What I meant here is that, we are putting IPs from these two scenario >>>>>> into >>>>>> allocatedIpAddress. So when terminate the instance, we are releasing >>>>>> these. >>>>>> It means we are sometimes releasing IPs even though we didn't allocate >>>>>> them. But that is not a harm. That is another problem. >>>>>> >>>>>> My concern is that are we releasing predefined floating IPs too? If >>>>>> so, the user will not able to unsubscribe and subscribe it to this >>>>>> cartridge again. Since the IP is not there, stratos will raise an error. >>>>>> Then he has to manually allocate a floating IP in openstack and then use >>>>>> that IP in cartridge json. I feel this is not good . >>>>>> >>>>>> What I wanted to know is, are we releasing or not releasing the >>>>>> predefined floating IPs? >>>>>> >>>>>> Thanks. >>>>>> >>>>>>> >>>>>>>> Jclouds API doc; >>>>>>>> /** >>>>>>>> * destroy the node, given its id. If it is the only node in a >>>>>>>> tag set, the dependent resources >>>>>>>> * will also be destroyed. >>>>>>>> */ >>>>>>>> void destroyNode(String id); >>>>>>>> >>>>>>>> So I guess all the floating IPs associated with the ports of this >>>>>>>> node will also be released right? >>>>>>>> >>>>>>>> Or can we set any property to prevent Jclouds from releasing >>>>>>>> floating IPs? >>>>>>>> >>>>>>> >>>>>>> Please raise this in Jclouds user list and get clarified. >>>>>>> >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> -- >>>>>>>> Rajkumar Rajaratnam >>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>> Software Engineer, WSO2 >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Best Regards, >>>>>>> Nirmal >>>>>>> >>>>>>> Nirmal Fernando. >>>>>>> PPMC Member & Committer of Apache Stratos, >>>>>>> Senior Software Engineer, WSO2 Inc. >>>>>>> >>>>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Rajkumar Rajaratnam >>>>>> Committer & PMC Member, Apache Stratos >>>>>> Software Engineer, WSO2 >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best Regards, >>>>> Nirmal >>>>> >>>>> Nirmal Fernando. >>>>> PPMC Member & Committer of Apache Stratos, >>>>> Senior Software Engineer, WSO2 Inc. >>>>> >>>>> Blog: http://nirmalfdo.blogspot.com/ >>>>> >>>> >>>> >>>> >>>> -- >>>> Rajkumar Rajaratnam >>>> Committer & PMC Member, Apache Stratos >>>> Software Engineer, WSO2 >>>> >>> >>> >>> >>> -- >>> Rajkumar Rajaratnam >>> Committer & PMC Member, Apache Stratos >>> Software Engineer, WSO2 >>> >> >> >> >> -- >> Rajkumar Rajaratnam >> Committer & PMC Member, Apache Stratos >> Software Engineer, WSO2 >> > > > > -- > Rajkumar Rajaratnam > Committer & PMC Member, Apache Stratos > Software Engineer, WSO2 > -- Best Regards, Nirmal Nirmal Fernando. PPMC Member & Committer of Apache Stratos, Senior Software Engineer, WSO2 Inc. Blog: http://nirmalfdo.blogspot.com/
