syncthing_folder: Keep existing device ordering

Keep the existing list of devices if it contains the expected
devices.  This change fixes the current/expected configurations
comparison on devices ordering.
This commit is contained in:
Borjan Tchakaloff 2021-01-01 16:38:50 +01:00
parent 11282b098e
commit 1b2952c1a6

View File

@ -177,11 +177,25 @@ 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): def create_folder(params, current_device_ids):
folder = { # Collect wanted devices to share folder with.
# Note that the sequence ordering matters, so we stick with lists
# instead of sets.
device_ids = (
current_device_ids if set(current_device_ids) == set(params['devices'])
else params['devices']
)
devices = [
{
'deviceID': device_id,
'introducedBy': '',
} for device_id in device_ids
]
return {
'autoNormalize': True, 'autoNormalize': True,
'copiers': 0, 'copiers': 0,
'devices': [], 'devices': devices,
'disableSparseFiles': False, 'disableSparseFiles': False,
'disableTempIndexes': False, 'disableTempIndexes': False,
'filesystemType': 'basic', 'filesystemType': 'basic',
@ -214,15 +228,6 @@ def create_folder(params):
'weakHashThresholdPct': 25 'weakHashThresholdPct': 25
} }
# Collect wanted devices to share folder with
for device_id in params['devices']:
folder['devices'].append({
'deviceID': device_id,
'introducedBy': '',
})
return folder
def run_module(): def run_module():
# module arguments # module arguments
module_args = url_argument_spec() module_args = url_argument_spec()
@ -275,7 +280,8 @@ def run_module():
break break
else: else:
folder_config = get_folder_config(module.params['id'], config) folder_config = get_folder_config(module.params['id'], config)
folder_config_wanted = create_folder(module.params) folder_config_devices = [d['deviceID'] for d in folder_config['devices']]
folder_config_wanted = create_folder(module.params, folder_config_devices)
if folder_config is None: if folder_config is None:
config['folders'].append(folder_config_wanted) config['folders'].append(folder_config_wanted)