This is my python code:
statuses = [ {'id': '1', 'plan_id': '124124124', 'ip': '1.1.1.1', 'name': 'Saeed1', 'status': 'active'}, {'id': '2', 'plan_id': '124224124', 'ip': '2.2.2.2', 'name': 'Saeed2', 'status': 'suspended'}, {'id': '3', 'plan_id': '164124124', 'ip': '3.3.3.3', 'name': 'Saeed3', 'status': 'suspended'}, {'id': '4', 'plan_id': '164124124', 'ip': '4.4.4.4', 'name': 'Saeed4', 'status': 'suspended'}, {'id': '5', 'plan_id': '124124124', 'ip': '5.5.5.5', 'name': 'Saeed51', 'status': 'active'},]all_servers = [ {'id': '1', 'name': 'Saeed1', 'addresses': {'External_Network': [{'addr': '1.1.1.1'}]}, 'plan': 'planA', 'status': 'suspended'}, {'id': '2', 'name': 'Saeed2', 'addresses': {'External_Network': [{'addr': '6.6.6.6'}]}, 'plan': 'planB', 'status': 'suspended'}, {'id': '3', 'name': 'Saeed3', 'addresses': {'External_Network': [{'addr': '3.3.3.3'}]}, 'plan': 'planG', 'status': 'active'}, {'id': '4', 'name': 'Saeed4', 'addresses': {}, 'plan': 'planC', 'status': 'active'}, {'id': '5', 'name': 'Saeed5', 'addresses': {'External_Network': [{'addr': '8.8.8.8'}]}, 'plan': 'planA', 'status': 'suspended'},]all_plans = [ {'name': 'planA', 'id': '124124124'}, {'name': 'planB', 'id': '124224124'}, {'name': 'planC', 'id': '164124124'}, {'name': 'planG', 'id': '174124124'},]tmp = []final = []for status in statuses: for server in all_servers: for plan in all_plans: if status['id'] == server['id'] and status['id'] not in tmp: tmp.append(status['id']) if (status['plan_id'] != plan['id']) and (plan['name'] != server['plan']): final.append({'name': status['name'], 'code': 'plan_mismatch'}) if 'External_Network' not in server['addresses']: final.append({'name': server['name'], 'code': 'has no ip'}) else: for addr in server['addresses']['External_Network']: if addr['addr'] != status['ip']: final.append({'name': status['name'], 'code': 'ip_mismatch'}) if status['status'] != server['status']: final.append({'name': status['name'], 'code': 'status_mismatch'}) if status['name'] != server['name']: final.append({'name': status['name'], 'code': 'names_mismatch'})
This is the logic I'm having:
from `statuses` and `all_servers`, first check if `id` matches, then do this:1) if `status['plan_id'] != plan['id']` and also `plan['name'] != all['plan']`, print plan_mismatch2)+ if `status['name'] != all['name']`, print names_mismatch.3)+ if status['ip'] != all['addresses']['External_Network']['addr'], print ip_mismatch.4)+ if status['status'] != all['status'], print status_mismatch.
Based on the current final
list, these are the issues that shouldn't be here, but I don't know why:
- {'name': 'Saeed2', 'code': 'plan_mismatch'}
- {'name': 'Saeed4', 'code': 'plan_mismatch'}
All of the bugs to be printed should be these:
- Saeed1 status_mismatch
- Saeed2 ip_mismatch
- Saeed3 plan_mismatch
- Saeed3 status_mismatch
- Saeed4 has no ip
- Saeed4 status_mismatch
- Saeed51 name_mismatch
- Saeed51 ip_mismatch
- Saeed51 status_mismatch