Skip to content

Commit

Permalink
test to debug
Browse files Browse the repository at this point in the history
  • Loading branch information
rashed-k committed Mar 20, 2024
1 parent 8066037 commit 87d46a4
Showing 1 changed file with 49 additions and 27 deletions.
76 changes: 49 additions & 27 deletions api/plugins/action/deploy_target_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,31 +90,53 @@ def run(self, tmp=None, task_vars=None):
return result

def determine_required_updates(existing_configs, desired_configs):
addition_required = []
deletion_required = []
grouped_configs = {}

for config in existing_configs:
key = (config['branches'], config['pullrequests'], str(config['deployTarget']['id']), str(config['weight']))
if key not in grouped_configs:
grouped_configs[key] = []
grouped_configs[key].append(config)


for desired in desired_configs:
key = (desired['branches'], desired['pullrequests'], str(desired['deployTarget']), str(desired['weight']))
if key not in grouped_configs:
addition_required = []
deletion_required = []

# Step 1: Group existing configurations by key attributes
grouped_configs = {}
for config in existing_configs:
key = (config['branches'], config['pullrequests'], str(config['deployTarget']['id']), str(config['weight']))
if key not in grouped_configs:
grouped_configs[key] = []
grouped_configs[key].append(config)
print("Grouped existing configurations by branches, pullrequests, deployTarget ID, and weight.")

# Step 2: Identify duplicates and mark older ones for deletion
for key, configs in grouped_configs.items():
if len(configs) > 1:
sorted_configs = sorted(configs, key=lambda x: x['id'], reverse=True)
newest_config = sorted_configs[0]
for config in sorted_configs[1:]:
deletion_required.append(config['id'])
print(f"Marked older duplicate configurations for deletion based on key {key}, keeping newest configuration with ID {newest_config['id']}.")
grouped_configs[key] = [newest_config]

# Adjusted logic for handling additions and deletions
for desired in desired_configs:
key = (desired['branches'], desired['pullrequests'], str(desired['deployTarget']), str(desired['weight']))
if key not in grouped_configs:
addition_required.append(desired)
print(f"Marked new configuration for addition: {desired}.")
else:
existing_config = grouped_configs[key][0]
if (existing_config['pullrequests'] != desired['pullrequests'] or
str(existing_config['deployTarget']['id']) != str(desired['deployTarget']) or
str(existing_config['weight']) != str(desired['weight'])):
desired['_existing_id'] = existing_config['id']
addition_required.append(desired)


for configs in grouped_configs.values():
for config in configs:
if not any(
config['branches'] == desired['branches'] and
str(config['deployTarget']['id']) == str(desired['deployTarget']) and
config['pullrequests'] == desired['pullrequests'] and
str(config['weight']) == str(desired['weight'])
for desired in desired_configs):
deletion_required.append(config['id'])

return addition_required, deletion_required
print(f"Marked configuration for update/addition: {desired}.")

# Check for configurations that are not present in desired configs
for configs in grouped_configs.values():
for config in configs:
if not any(
config['branches'] == desired['branches'] and
str(config['deployTarget']['id']) == str(desired['deployTarget']) and
config['pullrequests'] == desired['pullrequests'] and
str(config['weight']) == str(desired['weight'])
for desired in desired_configs):
deletion_required.append(config['id'])
print(f"Marked configuration for deletion as it's not present in desired configs: {config}.")

return addition_required, deletion_required

0 comments on commit 87d46a4

Please sign in to comment.