Thanks' Nirmal for the pointers - once the code is ready is there a process to get it submitted and checked in into the GitHub (review, etc, ...) ?
Thanks Martin From: Nirmal Fernando [mailto:nirmal070...@gmail.com] Sent: Friday, February 28, 2014 7:46 PM To: Martin Eppel (meppel) Cc: dev@stratos.incubator.apache.org; Vanson Lim (vlim); Jeffrey Nguyen (jeffrngu); Subbu Sundararajan (subbus) Subject: Re: [Discuss] Some network related improvements for Stratos Hi Martin, On Sat, Mar 1, 2014 at 12:26 AM, Martin Eppel (meppel) <mep...@cisco.com<mailto:mep...@cisco.com>> wrote: Hi Nirmal, We'd like to propose an enhancement to the current apache stratos cloud controller to allow the assignment of predefined floating ip when creating a new instance. Instead of auto assigning the floating ip address from the pool (autoAssignIp "false" in cartridgeDefinitionBean:iaasProvider, see example below), the ip address would be predefined in the cartridge definition as an additional property (see example below with property "floatingIp", ) and if available in the floating ip pool, assigned to the instance when it is created. If the floating ip is unavailable, an exception will be thrown and the instance will be destroyed. As for now it would be sufficient to add this enhancement for the OpenStack provider. Let me know what you think, and since going forward we would like to contribute to apache stratos I'd like to use this as an opportunity to get my feet wet and contribute the necessary changes. Can you please advise on the process and proper steps to propose and add an enhancement like this to the project ? Thanks for the explanation. Currently, at line [1], we are calling IaaS's autoAssignIp method and ask the IaaS to assign an IP to the instance. Similarly, I think you should define a new API operation at [2] and implement that in each of the IaaS providers. If you look at the OpenstackNovaIaas implementation [3], you could see that we call the FloatingIpApi and assign an IP to an instance. In order to get the FloatingIpApi please have a look at line [4]. Now similarly, if you can just add a new operation which takes an IP as an argument and the assign that IP to the instance, that'll do for you. Of course, you need to call this method from [1], once you've implemented it. Please make sure that this addition would not break other IaaS providers. Hope this helps! [1] https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=blob;f=components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java;h=1d773d0968c9916720c61fee0ca9fa6d9b3f9a52;hb=HEAD#l559 [2] https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=blob;f=components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/Iaas.java;h=f45d32e10b0306a9b171ff467bdbaf8668d7035d;hb=HEAD [3] https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=blob;f=components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java;h=d0f50e967fd9de6ed647d4e1f83e3e45e06fdc4e;hb=HEAD#l314 [4] https://git-wip-us.apache.org/repos/asf?p=incubator-stratos.git;a=blob;f=components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java;h=d0f50e967fd9de6ed647d4e1f83e3e45e06fdc4e;hb=HEAD#l219 Thanks Martin Sample Cartridge definition: ... "iaasProvider": [ { "type": "openstack", "imageId": "RegionOne/${IMAGE_ID}", "maxInstanceLimit": "4", "property": [ { "name": "instanceType", "value": "RegionOne/${FLAVOR_ID}" }, { "name": "keyPair", "value": "${KEY}" }, { "name": "autoAssignIp", "value": "false" }, { "name": "floatingIp", "value": "10.10.10.10" }, { "name": "securityGroups", "value": "default" }, { "name": "networkInterfaces", "value": "net1,net2,net3" } ] } ], ... - -- Best Regards, Nirmal Nirmal Fernando. PPMC Member & Committer of Apache Stratos, Senior Software Engineer, WSO2 Inc. Blog: http://nirmalfdo.blogspot.com/