def main(): module = AnsibleModule(supports_check_mode=True, argument_spec=parameter_spects(dict())) nc = NextcloudHandler(module.params, module.fail_json) retval = nc.get('/ocs/v1.php/cloud/capabilities').json() module.exit_json(nextcloud=retval.get('ocs').get('data'))
def main(): module = AnsibleModule(supports_check_mode=True, argument_spec=parameter_spects( dict(name=dict(required=False, type='str')))) module.params["details"] = True nc = NextcloudHandler(module.params, module.fail_json) if module.params.get('name'): retval = nc.get_password(module.params.get('name')) else: retval = nc.list_passwords() module.exit_json(password=retval)
def main(): module = AnsibleModule(argument_spec=parameter_spects( dict(msg=dict(required=True, type='str'), channel=dict(required=True, type='str')))) nc = NextcloudHandler(module.params, module.fail_json) message = module.params.get("msg") channel = module.params.get("channel") r, change = nc.talk(message, channel) module.exit_json(changed=change, talk={ 'message': message, 'channel': channel })
def main(): module = AnsibleModule( supports_check_mode=True, argument_spec=parameter_spects( dict(source=dict(required=True, type='str', aliases=['src'])))) nc = NextcloudHandler(module.params, module.fail_json) source = module.params.get("source") change = False r = nc.propfind("remote.php/dav/files/{USER}/{SRC}".format(USER=nc.user(), SRC=source)) if r != {}: r['source'] = source module.exit_json(changed=change, file_info=r)
def main(): module = AnsibleModule( supports_check_mode=True, argument_spec=parameter_spects( dict(username=dict(required=False, type='str', aliases=['user_id' ])))) nc = NextcloudHandler(module.params, module.fail_json) username = module.params.get('username') if username: retval = nc.get(f'/ocs/v1.php/cloud/users/{username}').json() module.exit_json(users=[username], user_data=retval.get('ocs', {}).get('data')) else: retval = nc.get('/ocs/v1.php/cloud/users').json() module.exit_json(users=retval.get('ocs', {}).get('data', {}).get('users', []), user_data={})
def main(): module = AnsibleModule(supports_check_mode=True, argument_spec=parameter_spects( dict(mode=dict(required=True, type='str'), source=dict(required=True, type='str', aliases=['src']), destination=dict(required=False, type='str', aliases=['dest']), overwrite=dict( required=False, type='str', default='always', aliases=['force', 'overwritten']), delete_recursively=dict(required=False, type='bool', default=False)))) nc = NextcloudHandler(module.params, module.fail_json) mode = module.params.get("mode") source = module.params.get("source") destination = module.params.get("destination") overwrite = module.params.get("overwrite") delete_recursively = module.params.get("delete_recursively") message = "Undefined." change = False if mode == "get": facts = nc.propfind("remote.php/dav/files/{USER}/{SRC}".format( USER=nc.user(), SRC=source)) if destination is None: module.fail_json(msg='No destination is given') if facts == {}: message = "Requested file does not exist." else: r = nc.get("remote.php/dav/files/{USER}/{SRC}".format( USER=nc.user(), SRC=source)) if overwrite == 'always' or not os.path.isfile(destination): change = True message = "File not received because of check_mode." if not module.check_mode: write_file(destination, r.content) message = "File received" elif overwrite == 'different': # sha256sum local file local = hashlib.sha256() with open(destination, "rb") as FILE: for chunk in iter(lambda: FILE.read(4096), b""): local.update(chunk) # sh256sum remote file remote = hashlib.sha256(r.content) message = "sha256sum of dest and src is equal." if remote.hexdigest() != local.hexdigest(): change = True message = "sha256sum of dest and src is not equal. But file was not written due check_mode." if not module.check_mode: write_file(destination, r.content) message = "File received. sha256sum of dest and src was not equal." elif overwrite == 'different_size': message = "size of dest and src is equal." if os.path.getsize(destination) != facts.get('size'): message = "size of dest and src is equal. But file was not written due check_mode" change = True if not module.check_mode: write_file(destination, r.content) message = "File received. Size of dest and src aws not equal." elif mode == "delete": facts = nc.propfind("remote.php/dav/files/{USER}/{SRC}".format( USER=nc.user(), SRC=source)) message = "File does not already exists." if facts != {}: if not module.check_mode: if delete_recursively: r, change = nc.delete( "remote.php/dav/files/{USER}/{SRC}".format( USER=nc.user(), SRC=source)) if facts.get('content_type') != 'inode/directory': message = "File deleted." else: message = "Folder deleted recurively." elif facts.get('content_type') != 'inode/directory': r, change = nc.delete( "remote.php/dav/files/{USER}/{SRC}".format( USER=nc.user(), SRC=source)) message = "File deleted" else: message = "Cannot delete folder without set delete_recursively to true." else: message = "File not deleted due check_mode." change = True elif mode == "put": facts = nc.propfind("remote.php/dav/files/{USER}/{SRC}".format( USER=nc.user(), SRC=destination)) if overwrite == 'always' or facts == {}: if not module.check_mode: r, change = nc.put( "remote.php/dav/files/{USER}/{DEST}".format( USER=nc.user(), DEST=destination), source) message = "File uploaded." else: message = "File not uploaded due check_mode." change = True elif overwrite == 'different_size': message = "File not uploaded because size of dest and src is equal." if os.path.getsize(source) != facts.get('size'): if not module.check_mode: r, change = nc.put( "remote.php/dav/files/{USER}/{DEST}".format( USER=nc.user(), DEST=destination), source) message = "File was uploaded. Size of dest and src was not equal." else: message = "File not uploaded due check_mode. Size of dest and src is not equal." change = True module.exit_json(changed=change, file={ 'destination': destination, 'mode': mode, 'source': source }, message=message)
def main(): module = AnsibleModule( supports_check_mode=True, argument_spec=parameter_spects( dict( name=dict(required=True, type='str'), state=dict(type='str', choices=['present', 'absent'], default='present'), password=dict(required=False, type='str', no_log=True), # setting no_log=False on update_password avoids a false positive warning about not setting no_log update_password=dict(type='str', choices=['always', 'on_create'], default='on_create', no_log=False), username=dict(required=False, type='str'), url=dict(required=False, type='str'), notes=dict(required=False, type='str'), favorite=dict(required=False, type='bool', default=False), folder=dict(required=False, type='str')))) module.params["details"] = True nc = NextcloudHandler(module.params, module.fail_json) name = module.params.get('name') password = module.params.get('password') or nc.fetch_generated_password() username = module.params.get('username') url = module.params.get('url') notes = module.params.get('notes') state = module.params.get('state') favorite = module.params.get('favorite') update_password = module.params.get('update_password') folder = module.params.get('folder') retval = nc.get_password(name) if state == 'present': if len(retval) == 1: # update password if password == retval[0].get('password'): module.exit_json(changed=False, password=retval) elif update_password == 'always' and password != retval[0].get( 'password'): obj = { 'id': retval[0].get('id'), 'password': password, 'label': name } if notes: obj['notes'] = notes if username: obj['username'] = username if url: obj['url'] = url if favorite: obj['favorite'] = favorite if not module.check_mode: retval = nc.update_password(obj) module.exit_json(changed=True, password=retval) else: module.exit_json(changed=False, password=retval) elif len(retval) == 0: # create password obj = {'password': password, 'label': name} if folder: if nc.get_passwords_folder(folder): obj['folder'] = nc.get_passwords_folder(folder) else: obj['folder'] = nc.create_passwords_folder(folder).get( 'id') if notes: obj['notes'] = notes if username: obj['username'] = username if url: obj['url'] = url if favorite: obj['favorite'] = favorite retval = {} if not module.check_mode: retval = nc.create_password(obj) module.exit_json(changed=True, password=retval) else: module.fail_json( msg='More than one password identifies. Cannot continue') elif state == 'absent': if len(retval) == 1: if not module.check_mode: obj = {'id': retval[0].get('id')} retval = nc.delete_password(obj) module.exit_json(changed=True, password=retval) module.exit_json(changed=True, password={}) elif len(retval) == 0: module.exit_json(changed=False, password={}) else: module.fail_json( msg='More than one password identifies. Cannot continue')