Hi Devs,

I am working on $Subject. Please find the relevant JIRA at [1]

Currently Stratos will assign a floating IP to eth0 if *autoAssignIp*
property is set to false in cartridge definition. AFAIU, stratos is using
jclouds API to query the available floating IPs, choose one and assign it
to the instance. Correct me if this is not the case.

In order to support $Subject, I am proposing the cartridge definition as
below;

{ "type":"mysql", "provider":"data", "host":"apachestratos.org", "
displayName":"MySQL", "description":"MySQL Cartridge", "version":"5.5", "
multiTenant":"false", "portMapping":[ { "protocol":"http", "port":"80", "
proxyPort":"8280" } ], "deployment":{  }, "iaasProvider":[ { "type":"
openstack", "imageId":"RegionOne/1cd412c1-54ce-405f-9894-ce1387073c6c", "
networkInterfaces":[ { "name":"netOne", "networkUuid":"
84d52a6d-a9e5-472a-9935-a0e195fe5b4a", "fixedIp":"10.0.1.4" }, { "name":"
netTwo", "networkUuid":"512e1f54-1e85-4dac-b2e6-f0b30fc552cf", "
publicNetworkUuids":[ { "name":"externalOne", "networkUuid":"
8f08a69d-cb46-43c9-9ebe-b89dcc78dacc", }, { "name":"externalTwo", "
networkUuid":"b5504321-e7aa-4500-9e00-7bc1b10cb5e9", } ] }, { "name":"
netThree", "networkUuid":"b55f009a-1cc6-4b17-924f-4ae0ee18db5e", "
publicNetworkUuids":[ { "name":"externalThree", "networkUuid":"
83d52a6d-a9e5-572a-9935-a0e195fe5b4r", } ] } ], "maxInstanceLimit":"4", "
property":[ { "name":"instanceType", "value":"RegionOne/4" }, { "name":"
keyPair", "value":"raj" }, { "name":"autoAssignIp", "value":"false" } ] } ],
"loadBalancer":{ "type":"lb", "property":{ "name":"no.load.balancer", "value
":"true" } }}


So, I have introduced some additional elements here in networks section.
publicNetworkUuids will hold one or many external network UUIDs from where
you want to select one IP and assign it the corresponding interface. Let
list me three behaviors, as of now, I have identified.

   1. If *autoAssignIp* property is *true*, stratos will not do anything
   regarding floating IPs when creating instances for this cartridge. But
   openstack will assign a floating IP to the instance.
   2. If *autoAssignIp* property is *false*, and you *don't *specify any
   publicNetworkUuids for any interface, then stratos will assign a floating
   IP to the 1st interface
   3. If *autoAssignIp* property is *false*, and you
   specify publicNetworkUuids, then stratos will assign floating IPs per
   interfaces for which you specified publicNetworkUuids. If you specify
   two publicNetworkUuids for an interface, it will assign two floating IPs to
   that interface and so on.


However, I tried to assign two floating IP addresses to an interface which
resulted in the following error.

*Error: *409-{u'NeutronError': {u'message': u'Cannot associate floating IP
192.168.17.96 (5691eb81-3153-4ee1-b9d0-31fc84516b03) with port
7e9416ce-5077-44c4-97db-b4b14c10dfc9 using fixed IP 10.0.0.167, as that
fixed IP already has a floating IP on external network
ba667f72-7ba8-4b24-b360-b74a0211c83c.', u'type':
u'FloatingIPPortAlreadyAssociated', u'detail': u''}}

I guess we can't assign multiple floating IPs to the same interface from
same network. We would be able to assign multiple floating IPs to the same
interface from multiple networks. Since I am having only one external
network, I couldn't test this. Any idea?

Feel free to share your thoughts.

1. https://issues.apache.org/jira/browse/STRATOS-698

Thanks.

-- 
Raj

Reply via email to