On Fri, Nov 21, 2014 at 10:27 AM, Rajkumar Rajaratnam <rajkum...@wso2.com> wrote:
> Yes Nirmal. > > There is a way. > > If we disassociate the floating IP before calling destroyNode(), it will > not be released right? > Can you try and see.. I am not sure whether it'll work or not. > > So what I am suggesting is, for predefined floating IPs, we should > disassociate the floating IPs before destroying the node. > > However, I might be wrong in going through the Jclouds code base. Please > go through and verify it when you have time. > > Thanks. > > On Fri, Nov 21, 2014 at 2:51 PM, Nirmal Fernando <nirmal070...@gmail.com> > wrote: > >> Ok, thanks.. so what are you suggesting to do? Is there anyway to avoid >> this deletion inside destroyNode? >> >> On Fri, Nov 21, 2014 at 10:08 AM, Rajkumar Rajaratnam <rajkum...@wso2.com >> > wrote: >> >>> What EC2DestroyNodeStrategy#destroyNode() will do is; >>> >>> @Override >>> public NodeMetadata destroyNode(String id) { >>> String[] parts = AWSUtils.parseHandle(id); >>> String region = parts[0]; >>> String instanceId = parts[1]; >>> >>> // TODO: can there be multiple? >>> releaseAnyPublicIpForInstanceInRegion(instanceId, region); >>> destroyInstanceInRegion(instanceId, region); >>> return getNode.getNode(id); >>> } >>> >>> Here also, it is releasing the IP. >>> >>> Thanks. >>> >>> On Fri, Nov 21, 2014 at 2:34 PM, Rajkumar Rajaratnam <rajkum...@wso2.com >>> > wrote: >>> >>>> What is there in that method is; >>>> >>>> @Override >>>> public ZoneAndId apply(ZoneAndId id) { >>>> FloatingIPApi floatingIpApi = >>>> novaApi.getFloatingIPExtensionForZone(id.getZone()).get(); >>>> for (FloatingIP ip : floatingIpCache.getUnchecked(id)) { >>>> logger.debug(">> removing floatingIp(%s) from node(%s)", ip, >>>> id); >>>> floatingIpApi.removeFromServer(ip.getIp(), id.getId()); >>>> logger.debug(">> deallocating floatingIp(%s)", ip); >>>> floatingIpApi.delete(ip.getId()); >>>> } >>>> floatingIpCache.invalidate(id); >>>> return id; >>>> } >>>> >>>> As you can see, floatingIpApi.delete(ip.getId() will delete/release the >>>> IP. >>>> >>>> Thanks. >>>> >>>> On Fri, Nov 21, 2014 at 2:30 PM, Nirmal Fernando < >>>> nirmal070...@gmail.com> wrote: >>>> >>>>> 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 < >>>>> rajkum...@wso2.com> 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 < >>>>>> rajkum...@wso2.com> 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 < >>>>>>> rajkum...@wso2.com> 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 < >>>>>>>> rajkum...@wso2.com> 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 < >>>>>>>>> nirmal070...@gmail.com> 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 < >>>>>>>>>> rajkum...@wso2.com> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Nirmal, >>>>>>>>>>> >>>>>>>>>>> On Fri, Nov 21, 2014 at 11:46 AM, Nirmal Fernando < >>>>>>>>>>> nirmal070...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Nov 21, 2014 at 6:24 AM, Rajkumar Rajaratnam < >>>>>>>>>>>> rajkum...@wso2.com> 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/ >>>>> >>>> >>>> >>>> >>>> -- >>>> 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/ >> > > > > -- > 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/