From a650b899c6d21d283f32f6c6be89f4139e852b3b Mon Sep 17 00:00:00 2001 From: Daniel Koch Date: Wed, 2 Oct 2013 18:06:35 -0400 Subject: [PATCH] Add "virtio" and "private_networking" options for DigitalOcean droplets The dopy manager defaults to False for virtio, but the DigitalOcean web interface defaults to True, which is a pretty safe default and sensible considering the performance gains. Private networks are a new feature currently available only in the NYC2 region as of Oct 2, 2013. NOTE: dopy >= 0.2.2 is required for these options to work. --- cloud/digital_ocean | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/cloud/digital_ocean b/cloud/digital_ocean index cd485aedf91..8009575bb0f 100644 --- a/cloud/digital_ocean +++ b/cloud/digital_ocean @@ -63,6 +63,18 @@ options: ssh_key_ids: description: - Optional, comma separated list of ssh_key_ids that you would like to be added to the server + virtio: + description: + - "Bool, turn on virtio driver in droplet for improved network and storage I/O" + version_added: "1.4" + default: "yes" + choices: [ "yes", "no" ] + private_networking: + description: + - "Bool, add an additional, private network interface to droplet for inter-droplet communication" + version_added: "1.4" + default: "no" + choices: [ "yes", "no" ] wait: description: - Wait for the droplet to be in state 'running' before returning. If wait is "no" an ip_address may not be returned. @@ -211,8 +223,8 @@ class Droplet(JsonfyMixIn): cls.manager = DoManager(client_id, api_key) @classmethod - def add(cls, name, size_id, image_id, region_id, ssh_key_ids=None): - json = cls.manager.new_droplet(name, size_id, image_id, region_id, ssh_key_ids) + def add(cls, name, size_id, image_id, region_id, ssh_key_ids=None, virtio=True, private_networking=False): + json = cls.manager.new_droplet(name, size_id, image_id, region_id, ssh_key_ids, virtio, private_networking) droplet = cls(json) return droplet @@ -313,7 +325,9 @@ def core(module): size_id=getkeyordie('size_id'), image_id=getkeyordie('image_id'), region_id=getkeyordie('region_id'), - ssh_key_ids=module.params['ssh_key_ids'] + ssh_key_ids=module.params['ssh_key_ids'], + virtio=module.params['virtio'], + private_networking=module.params['private_networking'] ) if droplet.is_powered_on(): @@ -372,6 +386,8 @@ def main(): image_id = dict(type='int'), region_id = dict(type='int'), ssh_key_ids = dict(default=''), + virtio = dict(type='bool', choices=BOOLEANS, default='yes'), + private_networking = dict(type='bool', choices=BOOLEANS, default='no'), id = dict(aliases=['droplet_id'], type='int'), unique_name = dict(type='bool', choices=BOOLEANS, default='no'), wait = dict(type='bool', choices=BOOLEANS, default='yes'),