[LIBCLOUD-973] Support disk_size parameter for boot disk while creating instances in ex_create_multiple_nodes API call.
Signed-off-by: Quentin Pradet <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/94db5c45 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/94db5c45 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/94db5c45 Branch: refs/heads/trunk Commit: 94db5c45db6cdf136afe83508a184dcadf54f0a2 Parents: 0310ba9 Author: Rahul Paigavan <[email protected]> Authored: Tue Jan 9 17:19:49 2018 +0530 Committer: Quentin Pradet <[email protected]> Committed: Fri Mar 16 09:00:05 2018 +0400 ---------------------------------------------------------------------- libcloud/compute/drivers/gce.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/94db5c45/libcloud/compute/drivers/gce.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/gce.py b/libcloud/compute/drivers/gce.py index 3ecb3ca..fc2ee90 100644 --- a/libcloud/compute/drivers/gce.py +++ b/libcloud/compute/drivers/gce.py @@ -4233,7 +4233,7 @@ class GCENodeDriver(NodeDriver): preemptible=None, tags=None, metadata=None, description=None, disks_gce_struct=None, nic_gce_struct=None, use_selflinks=True, labels=None, accelerator_type=None, - accelerator_count=None): + accelerator_count=None, disk_size=None): """ Create the GCE instance properties needed for instance templates. @@ -4360,6 +4360,9 @@ class GCENodeDriver(NodeDriver): None. :type accelerator_count: ``int`` or ``None`` + :keyword disk_size: Specify size of the boot disk. + Integer in gigabytes. + :type disk_size: ``int`` or ``None`` :return: A dictionary formatted for use with the GCE API. :rtype: ``dict`` @@ -4391,7 +4394,8 @@ class GCENodeDriver(NodeDriver): device_name, source=source, disk_type=disk_type, image=image, disk_name=disk_name, usage_type='PERSISTENT', mount_mode='READ_WRITE', auto_delete=disk_auto_delete, - is_boot=True, use_selflinks=use_selflinks)] + is_boot=True, use_selflinks=use_selflinks, + disk_size=disk_size)] # build network interfaces if nic_gce_struct is not None: @@ -4513,9 +4517,10 @@ class GCENodeDriver(NodeDriver): if not isinstance(auto_delete, bool): raise ValueError("auto_delete field is not a bool.") - if disk_size is not None and not disk_size.isdigit(): + if disk_size is not None \ + and(not isinstance(disk_size, int)and not disk_size.isdigit()): raise ValueError("disk_size must be a digit, '%s' provided." % - (disk_size)) + str(disk_size)) mount_modes = ['READ_WRITE', 'READ_ONLY'] if mount_mode not in mount_modes: @@ -4802,7 +4807,7 @@ class GCENodeDriver(NodeDriver): description=None, ex_can_ip_forward=None, ex_disks_gce_struct=None, ex_nic_gce_struct=None, ex_on_host_maintenance=None, ex_automatic_restart=None, ex_image_family=None, - ex_preemptible=None, ex_labels=None): + ex_preemptible=None, ex_labels=None, ex_disk_size=None): """ Create multiple nodes and return a list of Node objects. @@ -4945,6 +4950,10 @@ class GCENodeDriver(NodeDriver): :param ex_labels: Label dict for node. :type ex_labels: ``dict`` + :keyword ex_disk_size: Defines size of the boot disk. + Integer in gigabytes. + :type ex_disk_size: ``int`` or ``None`` + :return: A list of Node objects for the new nodes. :rtype: ``list`` of :class:`Node` @@ -4997,7 +5006,8 @@ class GCENodeDriver(NodeDriver): 'ex_on_host_maintenance': ex_on_host_maintenance, 'ex_automatic_restart': ex_automatic_restart, 'ex_preemptible': ex_preemptible, - 'ex_labels': ex_labels} + 'ex_labels': ex_labels, + 'ex_disk_size': ex_disk_size} # List for holding the status information for disk/node creation. status_list = [] @@ -7922,7 +7932,8 @@ class GCENodeDriver(NodeDriver): ex_disks_gce_struct=None, ex_nic_gce_struct=None, ex_on_host_maintenance=None, ex_automatic_restart=None, ex_preemptible=None, ex_subnetwork=None, ex_labels=None, - ex_accelerator_type=None, ex_accelerator_count=None): + ex_accelerator_type=None, ex_accelerator_count=None, + ex_disk_size=None): """ Returns a request and body to create a new node. @@ -8040,6 +8051,10 @@ class GCENodeDriver(NodeDriver): :param ex_subnetwork: The network to associate with the node. :type ex_subnetwork: :class:`GCESubnetwork` + :keyword ex_disk_size: Specify the size of boot disk. + Integer in gigabytes. + :type ex_disk_size: ``int`` or ``None`` + :param ex_labels: Label dict for node. :type ex_labels: ``dict`` or ``None`` @@ -8083,7 +8098,7 @@ class GCENodeDriver(NodeDriver): nic_gce_struct=ex_nic_gce_struct, accelerator_type=ex_accelerator_type, accelerator_count=ex_accelerator_count, - use_selflinks=use_selflinks) + use_selflinks=use_selflinks, disk_size=ex_disk_size) node_data['name'] = name request = '/zones/%s/instances' % (location.name) @@ -8188,7 +8203,8 @@ class GCENodeDriver(NodeDriver): ex_automatic_restart=node_attrs['ex_automatic_restart'], ex_subnetwork=node_attrs['subnetwork'], ex_preemptible=node_attrs['ex_preemptible'], - ex_labels=node_attrs['ex_labels'] + ex_labels=node_attrs['ex_labels'], + ex_disk_size=node_attrs['ex_disk_size'] ) try:
