def create_bucket(module, blade): """Create bucket""" changed = True if not module.check_mode: try: api_version = blade.api_version.list_versions().versions if VERSIONING_VERSION in api_version: attr = BucketPost() attr.account = Reference(name=module.params["account"]) blade.buckets.create_buckets(names=[module.params["name"]], bucket=attr) else: attr = Bucket() attr.account = Reference(name=module.params["account"]) blade.buckets.create_buckets(names=[module.params["name"]], account=attr) if (module.params["versioning"] != "absent" and VERSIONING_VERSION in api_version): try: blade.buckets.update_buckets( names=[module.params["name"]], bucket=BucketPatch( versioning=module.params["versioning"]), ) except Exception: module.fail_json( msg= "Object Store Bucket {0} Created but versioning state failed" .format(module.params["name"])) except Exception: module.fail_json(msg="Object Store Bucket {0}: Creation failed". format(module.params["name"])) module.exit_json(changed=changed)
def create_rule(module, blade): """Create lifecycle policy""" changed = True if not module.check_mode: if not module.params["keep_for"]: module.fail_json( msg="'keep_for' is required to create a new lifecycle rule") if not module.params["keep_for"][-1:].lower() in ["w", "d"]: module.fail_json( msg="'keep_for' format incorrect - specify as 'd' or 'w'") try: attr = LifecycleRulePost( bucket=Reference(name=module.params["bucket"]), rule_id=module.params["name"], keep_previous_version_for=_convert_to_millisecs( module.params["keep_for"]), prefix=module.params["prefix"], ) blade.lifecycle_rules.create_lifecycle_rules(rule=attr) if not module.params["enabled"]: attr = LifecycleRulePatch() attr.enabled = False blade.lifecycle_rules.update_lifecycle_rules( name=[ module.params["bucket"] + "/" + module.params["name"] ], rule=attr, ) except Exception: module.fail_json( msg="Failed to create lifecycle rule {0} for bucket {1}.". format(module.params["name"], module.params["bucket"])) module.exit_json(changed=changed)
def create_bucket(module, blade): """Create bucket""" changed = False try: attr = Bucket() attr.account = Reference(name=module.params['account']) blade.buckets.create_buckets(names=[module.params['name']], account=attr) changed = True except Exception: module.fail_json(msg='Object Store Bucket {0}: Creation failed'.format(module.params['name'])) module.exit_json(changed=changed)
def restore_snapshot(module, blade): """Restore a filesystem back from the latest snapshot""" if not module.check_mode: snapname = get_latest_fssnapshot(module, blade) if snapname is not None: fs_attr = FileSystem(name=module.params['name'], source=Reference(name=snapname)) try: blade.file_systems.create_file_systems( overwrite=True, discard_non_snapshotted_data=True, file_system=fs_attr) changed = True except Exception: changed = False else: module.fail_json( msg='Filesystem {0} has no snapshots to restore from.'.format( module.params['name'])) module.exit_json(changed=changed)
def create_rule(module, blade): """Create lifecycle policy""" changed = True if not module.check_mode: if not module.params['keep_for']: module.fail_json(msg="\'keep_for\' is required to create a new lifecycle rule") if not module.params['keep_for'][-1:].lower() in ['w', 'd']: module.fail_json(msg="\'keep_for\' format incorrect - specify as \'d\' or \'w\'") try: attr = LifecycleRulePost(rule_id=module.params['name'], keep_previous_version_for=_convert_to_millisecs(module.params['keep_for']), prefix=module.params['prefix']) attr.bucket = Reference(name=module.params['bucket']) blade.lifecycle_rules.create_lifecycle_rules(rule=attr) if not module.params['enabled']: attr = LifecycleRulePatch() attr.enabled = False blade.lifecycle_rules.update_lifecycle_rules(name=[module.params['bucket'] + '/' + module.params['name']], rule=attr) except Exception: module.fail_json(msg="Failed to create lifecycle rule {0} for bucket {1}.".format(module.params['name'], module.params['bucket'])) module.exit_json(changed=changed)
def main(): parser = argparse.ArgumentParser() parser.add_argument("--account", default='datateam', help="Service account name.") parser.add_argument("--user", default='spark', help="Account user name.") parser.add_argument("--outfile", default='credentials', help="Output file for key credentials.") args = parser.parse_args() # Create PurityFb object for a certain array using environment variables. FB_MGMT = os.environ.get('FB_MGMT_VIP') TOKEN = os.environ.get('FB_MGMT_TOKEN') # Fail fast if necessary env variables not available. if not FB_MGMT or not TOKEN: print( "Requires environment variables for logging into FlashBlade REST: please set FB_MGMT_VIP and FB_MGMT_TOKEN" ) exit(1) # Step 1: login to the FlashBlade management API fb = PurityFb(FB_MGMT) fb.disable_verify_ssl() try: fb.login(TOKEN) except rest.ApiException as e: print("Exception: %s\n" % e) exit() # Step 2: Create service account try: res = fb.object_store_accounts.create_object_store_accounts( names=[args.account]) print("Creating service account {}".format(args.account)) except: print("Service account {} already exists".format(args.account)) # Step 3: Create user account accountuser = args.account + '/' + args.user try: # post the object store user object myobjuser on the array print("Creating user account {}".format(accountuser)) res = fb.object_store_users.create_object_store_users( names=[accountuser]) except: print("User %s creation failed.".format(accountuser)) # Step 4: Create access keys res = fb.object_store_access_keys.list_object_store_access_keys( filter="user.name=\'{}\'".format(accountuser)) if len(res.items) == 2: print("User {} cannot create more access keys.".format(accountuser)) exit(1) # generate access key and secret key for object store user # note: you need to handle the secret key since you can't retrieve it from the array after create accesskey = "" secretkey = "" try: res = fb.object_store_access_keys.create_object_store_access_keys( object_store_access_key={'user': { 'name': accountuser }}) accesskey = res.items[0].name secretkey = res.items[0].secret_access_key except rest.ApiException as e: print("Exception when creating object store access key: %s\n" % e) exit(1) # Step 5: Create bucket bucketname = args.user + "-working" print("Creating bucket %s\n" % bucketname) try: attr = Bucket() # Each bucket must be associated with a service account. attr.account = Reference(name=args.account) res = fb.buckets.create_buckets(names=[bucketname], account=attr) except rest.ApiException as e: print("Exception when creating bucket: %s\n" % e) # Output with open(args.outfile, "w") as outf: outf.write("AWS_ACCESS_KEY_ID={}\n".format(accesskey)) outf.write("AWS_SECRET_ACCESS_KEY_ID={}\n".format(secretkey)) print( "Access newly created bucket in Spark at s3a://{}/".format(bucketname)) fb.logout()