syncthing_folder: Accept path to the configuration file

Specifying `config_file` overrides the default path relative to
the current user.

This is handy when the executing user is a different user.
This commit is contained in:
Borjan Tchakaloff 2021-01-01 15:14:49 +01:00
parent 8fee0cb114
commit e336ebde13

View File

@ -62,6 +62,12 @@ options:
- API key to use for authentication with host. - API key to use for authentication with host.
If not provided, will try to auto-configure from filesystem. If not provided, will try to auto-configure from filesystem.
required: false required: false
config_file:
description:
- Path to the Syncthing configuration file for automatic
discovery (`api_key`). Note that the running user needs read
access to the file.
required: false
timeout: timeout:
description: description:
- The socket level timeout in seconds - The socket level timeout in seconds
@ -116,7 +122,10 @@ def make_headers(host, api_key):
def get_key_from_filesystem(module): def get_key_from_filesystem(module):
try: try:
stconfigfile = os.path.expandvars(DEFAULT_ST_CONFIG_LOCATION) if module.params['config_file']:
stconfigfile = module.params['config_file']
else:
stconfigfile = os.path.expandvars(DEFAULT_ST_CONFIG_LOCATION)
stconfig = parse(stconfigfile) stconfig = parse(stconfigfile)
root = stconfig.getroot() root = stconfig.getroot()
gui = root.find('gui') gui = root.find('gui')
@ -228,6 +237,7 @@ def run_module():
choices=['sendreceive', 'sendonly', 'receiveonly']), choices=['sendreceive', 'sendonly', 'receiveonly']),
host=dict(type='str', default='http://127.0.0.1:8384'), host=dict(type='str', default='http://127.0.0.1:8384'),
api_key=dict(type='str', required=False, no_log=True), api_key=dict(type='str', required=False, no_log=True),
config_file=dict(type='path', required=False),
timeout=dict(type='int', default=30), timeout=dict(type='int', default=30),
state=dict(type='str', default='present', state=dict(type='str', default='present',
choices=['absent', 'present', 'pause']), choices=['absent', 'present', 'pause']),