def main(): argument_spec = dict(type=dict( type='str', default='CONFIG', choices=['ALL', 'CONFIG', 'STATE', 'OPERATIONAL']), prefix=dict(type='str', default='/'), path=dict(type='list', elements='str', default=[''])) module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True) connection = Connection(module._socket_path) try: response = connection.gnmiGet(**module.params) except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace'), code=exc.code) result = {} result['output'] = response result['changed'] = False module.exit_json(**result)
def main(): backup_spec = dict(filename=dict(), dir_path=dict(type="path")) argument_spec = dict(backup=dict(type="bool", default=False), backup_options=dict(type="dict", options=backup_spec), prefix=dict(type='str', required=False), update=dict(type='list', elements='dict', required=False), replace=dict(type='list', elements='dict', required=False), delete=dict(type='list', elements='str', required=False)) required_one_of = [["backup", "update", "replace", "delete"]] module = AnsibleModule(argument_spec=argument_spec, required_one_of=required_one_of, supports_check_mode=False) pathList = [] if 'update' in module.params and module.params['update']: pathList.extend([update['path'] for update in module.params['update']]) if 'replace' in module.params and module.params['replace']: pathList.extend( [update['path'] for update in module.params['replace']]) if 'delete' in module.params and module.params['delete']: pathList.extend(module.params['delete']) result = {} try: connection = Connection(module._socket_path) if pathList: # changes are contained: update, replace and/or delete if module.params["backup"]: snapshot1 = connection.gnmiGet(type='config', path=['/']) else: snapshot1 = connection.gnmiGet(type='config', prefix=module.params['prefix'], path=pathList) response = connection.gnmiSet(**module.params) if module.params["backup"]: snapshot2 = connection.gnmiGet(type='config', path=['/']) else: snapshot2 = connection.gnmiGet(type='config', prefix=module.params['prefix'], path=pathList) result['output'] = response if (snapshot1 != snapshot2): result['changed'] = True if module._diff: result['diff'] = {'before': snapshot1, 'after': snapshot2} if module.params["backup"]: result['__backup__'] = snapshot1 elif module.params["backup"]: # backup only: take full config snapshot an return snapshot = connection.gnmiGet(type='config', path=['/']) result['__backup__'] = snapshot else: # Nothing to do: There are no updates and no backup requested pass except ConnectionError as exc: module.fail_json(msg=to_text(exc, errors='surrogate_then_replace'), code=exc.code) module.exit_json(**result)