syncthing_folder: Accept names of known devices
This commit is contained in:
parent
aa0bab7c0b
commit
38ff2db9ca
|
@ -155,6 +155,12 @@ def get_config(module):
|
||||||
|
|
||||||
return json.loads(content)
|
return json.loads(content)
|
||||||
|
|
||||||
|
# Get the device name -> device ID mapping.
|
||||||
|
def get_devices_mapping(config):
|
||||||
|
return {
|
||||||
|
device['name']: device['deviceID'] for device in config['devices']
|
||||||
|
}
|
||||||
|
|
||||||
# Get the folder configuration from the global configuration, if it exists
|
# Get the folder configuration from the global configuration, if it exists
|
||||||
def get_folder_config(folder_id, config):
|
def get_folder_config(folder_id, config):
|
||||||
for folder in config['folders']:
|
for folder in config['folders']:
|
||||||
|
@ -177,13 +183,22 @@ def post_config(module, config, result):
|
||||||
module.fail_json(msg='Error occured while posting new config', **result)
|
module.fail_json(msg='Error occured while posting new config', **result)
|
||||||
|
|
||||||
# Returns an object of a new folder
|
# Returns an object of a new folder
|
||||||
def create_folder(params, current_device_ids):
|
def create_folder(params, current_device_ids, devices_mapping):
|
||||||
|
wanted_device_ids = []
|
||||||
|
for device_name_or_id in params['devices']:
|
||||||
|
if device_name_or_id in devices_mapping:
|
||||||
|
wanted_device_ids.append(devices_mapping[device_name_or_id])
|
||||||
|
else:
|
||||||
|
# Purposefully do not validate we already know this device ID or
|
||||||
|
# name as per previous behavior. This will need to be fixed.
|
||||||
|
wanted_device_ids.append(device_name_or_id)
|
||||||
|
|
||||||
# Collect wanted devices to share folder with.
|
# Collect wanted devices to share folder with.
|
||||||
# Note that the sequence ordering matters, so we stick with lists
|
# Note that the sequence ordering matters, so we stick with lists
|
||||||
# instead of sets.
|
# instead of sets.
|
||||||
device_ids = (
|
device_ids = (
|
||||||
current_device_ids if set(current_device_ids) == set(params['devices'])
|
current_device_ids if set(current_device_ids) == set(wanted_device_ids)
|
||||||
else params['devices']
|
else wanted_device_ids
|
||||||
)
|
)
|
||||||
devices = [
|
devices = [
|
||||||
{
|
{
|
||||||
|
@ -271,6 +286,7 @@ def run_module():
|
||||||
module.params['api_key'] = get_key_from_filesystem(module)
|
module.params['api_key'] = get_key_from_filesystem(module)
|
||||||
|
|
||||||
config = get_config(module)
|
config = get_config(module)
|
||||||
|
devices_mapping = get_devices_mapping(config)
|
||||||
if module.params['state'] == 'absent':
|
if module.params['state'] == 'absent':
|
||||||
# Remove folder from list, if found
|
# Remove folder from list, if found
|
||||||
for idx, folder in enumerate(config['folders']):
|
for idx, folder in enumerate(config['folders']):
|
||||||
|
@ -283,7 +299,9 @@ def run_module():
|
||||||
folder_config_devices = (
|
folder_config_devices = (
|
||||||
[d['deviceID'] for d in folder_config['devices']] if folder_config else []
|
[d['deviceID'] for d in folder_config['devices']] if folder_config else []
|
||||||
)
|
)
|
||||||
folder_config_wanted = create_folder(module.params, folder_config_devices)
|
folder_config_wanted = create_folder(
|
||||||
|
module.params, folder_config_devices, devices_mapping
|
||||||
|
)
|
||||||
|
|
||||||
if folder_config is None:
|
if folder_config is None:
|
||||||
config['folders'].append(folder_config_wanted)
|
config['folders'].append(folder_config_wanted)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user