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

Reply via email to