Yes Nirmal.

There is a way.

If we disassociate the floating IP before calling destroyNode(), it will
not be released right?

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 <[email protected]>
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 <[email protected]>
> 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 <[email protected]>
>> 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 <[email protected]
>>> > 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 <
>>>> [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/
>>>>
>>>
>>>
>>>
>>> --
>>> 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

Reply via email to