From bb6762dffde9f2c6b37bc87ab29e2a6b93c4cfe4 Mon Sep 17 00:00:00 2001 From: Mehul Ved Date: Thu, 9 Jul 2015 18:50:14 +0530 Subject: [PATCH] Added support for instance types. Added type and version parameters to be passed to rax_cdb module so users can create Percona and MariaDB instance types. --- .../modules/cloud/rackspace/rax_cdb.py | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/lib/ansible/modules/cloud/rackspace/rax_cdb.py b/lib/ansible/modules/cloud/rackspace/rax_cdb.py index 6abadd2ebf4..7e67612913b 100644 --- a/lib/ansible/modules/cloud/rackspace/rax_cdb.py +++ b/lib/ansible/modules/cloud/rackspace/rax_cdb.py @@ -38,6 +38,14 @@ options: description: - Volume size of the database 1-150GB default: 2 + type: + description: + - type of instance (i.e. MySQL, MariaDB, Percona) + default: MySQL + version: + description: + - version of database (MySQL supports 5.1 and 5.6, MariaDB supports 10, Percona supports 5.6) + choices: ['5.1', '5.6', '10'] state: description: - Indicate desired state of the resource @@ -68,6 +76,8 @@ EXAMPLES = ''' name: db-server1 flavor: 1 volume: 2 + type: MySQL + version: 5.6 wait: yes state: present register: rax_db_server @@ -91,10 +101,12 @@ def find_instance(name): return False -def save_instance(module, name, flavor, volume, wait, wait_timeout): +def save_instance(module, name, flavor, volume, type, version, wait, + wait_timeout): for arg, value in dict(name=name, flavor=flavor, - volume=volume).iteritems(): + volume=volume, type=type, version=version + ).iteritems(): if not value: module.fail_json(msg='%s is required for the "rax_cdb"' ' module' % arg) @@ -118,7 +130,8 @@ def save_instance(module, name, flavor, volume, wait, wait_timeout): if not instance: action = 'create' try: - instance = cdb.create(name=name, flavor=flavor, volume=volume) + instance = cdb.create(name=name, flavor=flavor, volume=volume, + type=type, version=version) except Exception, e: module.fail_json(msg='%s' % e.message) else: @@ -189,11 +202,13 @@ def delete_instance(module, name, wait, wait_timeout): cdb=rax_to_dict(instance)) -def rax_cdb(module, state, name, flavor, volume, wait, wait_timeout): +def rax_cdb(module, state, name, flavor, volume, type, version, wait, + wait_timeout): # act on the state if state == 'present': - save_instance(module, name, flavor, volume, wait, wait_timeout) + save_instance(module, name, flavor, volume, type, version, wait, + wait_timeout) elif state == 'absent': delete_instance(module, name, wait, wait_timeout) @@ -205,6 +220,8 @@ def main(): name=dict(type='str', required=True), flavor=dict(type='int', default=1), volume=dict(type='int', default=2), + type=dict(type='str', default='MySQL'), + version=dict(type='str', default='5.6'), state=dict(default='present', choices=['present', 'absent']), wait=dict(type='bool', default=False), wait_timeout=dict(type='int', default=300), @@ -222,12 +239,14 @@ def main(): name = module.params.get('name') flavor = module.params.get('flavor') volume = module.params.get('volume') + type = module.params.get('type') + version = module.params.get('version') state = module.params.get('state') wait = module.params.get('wait') wait_timeout = module.params.get('wait_timeout') setup_rax_module(module, pyrax) - rax_cdb(module, state, name, flavor, volume, wait, wait_timeout) + rax_cdb(module, state, name, flavor, volume, type, version, wait, wait_timeout) # import module snippets