Hi Nirmal, devs,
Following are some important aspects of GCE design/implementation.
Let me know of any changes/suggestions.
*1. GCE credential: *Jclouds uses GCE service accounts for communicating
with IaaS. This includes a service account email address (for example,
607132743639-fihqilsm9pemf9c98ppmv1otbvtmg...@developer.gserviceaccount.com)
and a private key in text(~1000 chars). This identity, credential can be
specified in cloud-controller.xml as follows. Currently mode 1 is
implemented. Based on suggestions we can implement mode 2 or 3.
*Mode 1:* private key in pem text.
<identity svns:secretAlias="cloud.controller.gce.identity">
607132743639-fihqilsm9pemf9c98ppmv1otbvtmg...@developer.gserviceaccount.com
</identity>
<credential svns:secretAlias="cloud.controller.gce.credential">
-----BEGIN PRIVATE KEY-----
#### ~15 lines of private key
-----END PRIVATE KEY-----
</credential>
*Mode 2:* Instead of giving the private key in text format, we can give a
path to a file. The file will have the key in pem format.
<identity svns:secretAlias="cloud.controller.gce.identity">
607132743639-fihqilsm9pemf9c98ppmv1otbvtmg...@developer.gserviceaccount.com
</identity>
<credential svns:secretAlias="cloud.controller.gce.credential">
/home/suriya/key/privatekey.pem
</credential>
*Mode 3:* Mixed mode 1 & 2. Either pem text or path to file can be there.
Stratos code can try to autodetect the mode.
*2. Network*: GCE instance can connect to only one network [1]. I think,
this is different from EC2 or openstack, where one instance can connect to
many networks. So stratos server needs to be in same network as cartridge
instances. I hope this is ok for multi-tenant mode in stratos. This network
name can be mentioned in cartridge json as follows (similar to EC2, but
only one name should be specified)
"networkInterfaces": [
{
"networkUuid": "default-network-name"
}
]
*3. Naming convention:* I have used 'gce' in all stratos code, and wherever
needed in xml, etc. But in jclouds [2] 'google-compute-engine' is being
used. So in the code copied from jclouds to stratos
dependencies/jclouds/apis/google-compute-engine/, 'gce' is not used. I hope
this is ok.
[1] https://developers.google.com/compute/docs/instances-and-network
[2] https://github.com/jclouds/jclouds-labs-google
[3]
https://github.com/suriyapriya/incubator-stratos/tree/gce/dependencies/jclouds/apis/google-compute-engine
Thanks
Suriya