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/

Reply via email to