From c6448660a3cd0a4078f9ab2cd0b6c5c1b83470d3 Mon Sep 17 00:00:00 2001 From: Dmitry Bashkatov Date: Wed, 11 Mar 2015 10:54:13 +0300 Subject: [PATCH 1/3] gluster_volume: fixes, new "force" option --- system/gluster_volume.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/system/gluster_volume.py b/system/gluster_volume.py index 00e2cdeba65..91a717aae6d 100644 --- a/system/gluster_volume.py +++ b/system/gluster_volume.py @@ -83,6 +83,11 @@ options: required: false description: - Quota value for limit-usage (be sure to use 10.0MB instead of 10MB, see quota list) + force: + required: false + description: + - If brick is being created in the root partition, module will fail. + Set force to true to override this behaviour notes: - "Requires cli tools for GlusterFS on servers" - "Will add new bricks, but not remove them" @@ -91,7 +96,7 @@ author: Taneli Leppä EXAMPLES = """ - name: create gluster volume - gluster_volume: state=present name=test1 brick=/bricks/brick1/g1 rebalance=yes hosts:"{{ play_hosts }}" + gluster_volume: state=present name=test1 brick=/bricks/brick1/g1 rebalance=yes cluster:"{{ play_hosts }}" run_once: true - name: tune @@ -231,7 +236,7 @@ def main(): if myhostname != host: probe(host) - def create_volume(name, stripe, replica, transport, hosts, brick): + def create_volume(name, stripe, replica, transport, hosts, brick, force): args = [ 'volume', 'create' ] args.append(name) if stripe: @@ -244,6 +249,8 @@ def main(): args.append(transport) for host in hosts: args.append(('%s:%s' % (host, brick))) + if force: + args.append('force') run_gluster(args) def start_volume(name): @@ -281,10 +288,11 @@ def main(): transport=dict(required=False, default='tcp', choices=[ 'tcp', 'rdma', 'tcp,rdma' ]), brick=dict(required=False, default=None), start_on_create=dict(required=False, default=True, type='bool'), - rebalance=dict(required=False, default=False, taype='bool'), + rebalance=dict(required=False, default=False, type='bool'), options=dict(required=False, default=None, type='dict'), quota=dict(required=False), directory=dict(required=False, default=None), + force=dict(required=False, default=False, type='bool'), ) ) @@ -300,13 +308,14 @@ def main(): replicas = module.params['replicas'] transport = module.params['transport'] myhostname = module.params['host'] - start_volume = module.boolean(module.params['start_on_create']) + start_on_create = module.boolean(module.params['start_on_create']) rebalance = module.boolean(module.params['rebalance']) + force = module.boolean(module.params['force']) if not myhostname: myhostname = socket.gethostname() - options = module.params['options'] + options = module.params['options'] or {} quota = module.params['quota'] directory = module.params['directory'] @@ -329,11 +338,12 @@ def main(): # create if it doesn't exist if volume_name not in volumes: - create_volume(volume_name, stripes, replicas, transport, cluster, brick_path) + create_volume(volume_name, stripes, replicas, transport, cluster, brick_path, force) + volumes = get_volumes() changed = True if volume_name in volumes: - if volumes[volume_name]['status'].lower() != 'started' and start_volume: + if volumes[volume_name]['status'].lower() != 'started' and start_on_create: start_volume(volume_name) changed = True From 26c2080dcfefda4fbdea6ab8917f734401c19e20 Mon Sep 17 00:00:00 2001 From: Dmitry Bashkatov Date: Wed, 11 Mar 2015 16:40:22 +0300 Subject: [PATCH 2/3] gluster_volume: use force option during add-brick --- system/gluster_volume.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/system/gluster_volume.py b/system/gluster_volume.py index 91a717aae6d..3f735a12e1a 100644 --- a/system/gluster_volume.py +++ b/system/gluster_volume.py @@ -262,8 +262,11 @@ def main(): def set_volume_option(name, option, parameter): run_gluster([ 'volume', 'set', name, option, parameter ]) - def add_brick(name, brick): - run_gluster([ 'volume', 'add-brick', name, brick ]) + def add_brick(name, brick, force): + args = [ 'volume', 'add-brick', name, brick ] + if force: + args.append('force') + run_gluster(args) def rebalance(name): run_gluster(['volume', 'rebalance', name, 'start']) @@ -363,7 +366,7 @@ def main(): removed_bricks.append(brick) for brick in new_bricks: - add_brick(volume_name, brick) + add_brick(volume_name, brick, force) changed = True # handle quotas From 19d51a51dbfb2a5c2f4279baf635acb70785e902 Mon Sep 17 00:00:00 2001 From: Dmitry Bashkatov Date: Wed, 11 Mar 2015 17:22:38 +0300 Subject: [PATCH 3/3] gluster_volume: remove redundant code --- system/gluster_volume.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/gluster_volume.py b/system/gluster_volume.py index 3f735a12e1a..d51512a1436 100644 --- a/system/gluster_volume.py +++ b/system/gluster_volume.py @@ -292,7 +292,7 @@ def main(): brick=dict(required=False, default=None), start_on_create=dict(required=False, default=True, type='bool'), rebalance=dict(required=False, default=False, type='bool'), - options=dict(required=False, default=None, type='dict'), + options=dict(required=False, default={}, type='dict'), quota=dict(required=False), directory=dict(required=False, default=None), force=dict(required=False, default=False, type='bool'), @@ -318,7 +318,7 @@ def main(): if not myhostname: myhostname = socket.gethostname() - options = module.params['options'] or {} + options = module.params['options'] quota = module.params['quota'] directory = module.params['directory']