You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jclouds.apache.org by Ruben Rubio Rey <tk...@gmail.com> on 2015/02/16 04:49:01 UTC

Customizing volumes at GCE

Hi,

I am not able to find any sample in Internet. GCE has Standard Disk and SSD
disks. I have a few questions.

 - When you are creating an instance, how can you choose SSD instead
Standard Disk ?
 - How can you customize the size of the root volume ?
 - How can you add additional volumes ?

I hope someone can point me into the right direction.

Regards,
Ruben

Re: Customizing volumes at GCE

Posted by Ruben Rubio Rey <tk...@gmail.com>.
Hi Ignasi,

Thanks for pointing me in the right direction. This is the proof of code
that I created to create an instance and attach an disk with the
instanceAPI. If anyone sees a way to enhance it please let me know. When I
have some time I will add it to JClouds Examples.

GoogleComputeEngineApi gce = context.unwrapApi(GoogleComputeEngineApi.class);
URI machineType = new
URI("https://www.googleapis.com/compute/v1/projects/soy-sound-613/zones/asia-east1-a/machineTypes/f1-micro");
URI networkType = new
URI("https://www.googleapis.com/compute/v1/projects/soy-sound-613/global/networks/default");
URI uriImage = new
URI("https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-1404-trusty-v20150128");

String INSTANCE_NAME = "test";
NewInstance instance = NewInstance.create(INSTANCE_NAME, machineType,
networkType, uriImage);
InstanceApi instanceApi = gce.instancesInZone("asia-east1-a");
DiskApi diskApi = gce.disksInZone("asia-east1-a");

instanceApi.create(instance);
Instance instanceBuilding = instanceApi.get(INSTANCE_NAME);
while ( instanceBuilding == null || instanceBuilding.status() !=
Instance.Status.RUNNING ){
    if (instanceBuilding == null ) {
        System.out.println("Instance is null. Waiting for it to exist ... ");
    } else {
        System.out.println("Instance not running yet. Status: " +
instanceBuilding.status());
    }
    Thread.sleep(1000);
    instanceBuilding = instanceApi.get(INSTANCE_NAME);

}

String ATTACH_DISK_NAME = "diskname";
URI diskType = new
URI("https://www.googleapis.com/compute/v1/projects/soy-sound-613/zones/asia-east1-a/diskTypes/pd-ssd");
diskApi.create(ATTACH_DISK_NAME, new
DiskCreationOptions().sizeGb(1).type(diskType));

Disk diskBuilding = diskApi.get(ATTACH_DISK_NAME);
while ( diskBuilding == null || diskBuilding.status() !=  Disk.Status.READY){
    if ( diskBuilding == null ) {
        System.out.println("Disk is null. Waiting for it to exist ... ");
    } else {
        System.out.println("Disk not ready yet. Status: " +
diskBuilding.status());
    }
    Thread.sleep(1000);
    diskBuilding = diskApi.get(ATTACH_DISK_NAME);

}

System.out.println("ATTACHING DISK");
URI diskUrl = new
URI("https://www.googleapis.com/compute/v1/projects/soy-sound-613/zones/asia-east1-a/disks/"
+ ATTACH_DISK_NAME);
instanceApi.attachDisk(INSTANCE_NAME,
        AttachDisk.create(AttachDisk.Type.PERSISTENT, // type
                AttachDisk.Mode.READ_WRITE, // mode
                diskUrl, // source
                "myattacheddisk", // deviceName
                false, // boot
                null, // initializeParams
                true, // autoDelete
                null, // licenses
                null // interface
        ));





On Wed, Feb 18, 2015 at 9:23 PM, Ignasi Barrera <na...@apache.org> wrote:

> This was discussed on the IRC, but let's make sure the thread gets
> answered.
>
> Currently there is no way to do that using the ComputeService, but the
> GCE provider specific API supports it. The InstanceApi [1] has the
> "create" and "attachDisk" method, that can be used to create instances
> with custom disks and attach disks to existing ones.
>
> The former gets a NewInstance object that has a list of AttachDisk
> objects. There you cans et the size of the disk and their type. The
> same applies to the "attachDisk" method, thich gets an AttachDisk
> object. Using those methods you should be able to create instances
> with custom disks.
>
> If you have the ComputeServiceContext instance, you can get the
> InstanceApi as follows:
>
> GoogleComputeEngineApi gce =
> context.unwrapApi(GoogleComputeEngineApi.class);
> InstanceApi instanceApi = gce.instancesInZone("zone name");
>
>
> HTH!
>
> I.
>
>
> [1]
> https://github.com/jclouds/jclouds-labs-google/blob/master/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
>
> On 16 February 2015 at 04:49, Ruben Rubio Rey <tk...@gmail.com> wrote:
> > Hi,
> >
> > I am not able to find any sample in Internet. GCE has Standard Disk and
> SSD
> > disks. I have a few questions.
> >
> >  - When you are creating an instance, how can you choose SSD instead
> > Standard Disk ?
> >  - How can you customize the size of the root volume ?
> >  - How can you add additional volumes ?
> >
> > I hope someone can point me into the right direction.
> >
> > Regards,
> > Ruben
>

Re: Customizing volumes at GCE

Posted by Ignasi Barrera <na...@apache.org>.
This was discussed on the IRC, but let's make sure the thread gets answered.

Currently there is no way to do that using the ComputeService, but the
GCE provider specific API supports it. The InstanceApi [1] has the
"create" and "attachDisk" method, that can be used to create instances
with custom disks and attach disks to existing ones.

The former gets a NewInstance object that has a list of AttachDisk
objects. There you cans et the size of the disk and their type. The
same applies to the "attachDisk" method, thich gets an AttachDisk
object. Using those methods you should be able to create instances
with custom disks.

If you have the ComputeServiceContext instance, you can get the
InstanceApi as follows:

GoogleComputeEngineApi gce = context.unwrapApi(GoogleComputeEngineApi.class);
InstanceApi instanceApi = gce.instancesInZone("zone name");


HTH!

I.


[1] https://github.com/jclouds/jclouds-labs-google/blob/master/google-compute-engine/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java

On 16 February 2015 at 04:49, Ruben Rubio Rey <tk...@gmail.com> wrote:
> Hi,
>
> I am not able to find any sample in Internet. GCE has Standard Disk and SSD
> disks. I have a few questions.
>
>  - When you are creating an instance, how can you choose SSD instead
> Standard Disk ?
>  - How can you customize the size of the root volume ?
>  - How can you add additional volumes ?
>
> I hope someone can point me into the right direction.
>
> Regards,
> Ruben