У меня есть два массива с описаниями приложений:
source_array:
- status: Active
AppName": "Application 1"
version: "0.1.1"
metadata: ""
- status": "Active"
AppName: "Application 2"
version: "0.2.2"
metadata: "ID123"
- status: "Active"
AppName: "Application 3"
version: "0.3.3"
metadata: ""
И:
target_array:
- status: "Active"
AppName: "Application 1"
version: "0.1.1"
metadata: ""
- status: "Active"
AppName: "Application 2"
version: "0.2.2"
metadata: "ID321"
- status: "Active",
AppName: "Application 3"
version: "0.3.0"
metadata: ""
Мне нужно сравнить эти два массива на основе поля версии.Так, например, желаемый результат должен быть:
[{
"status": "Active",
"AppName": "Application 3",
"version": "0.3.0",
"metadata": ""
}]
Я пытался использовать разностный фильтр, но он также возвращает второй элемент - так как он имеет разные метаданные
- name: Comparing arrays
set_fact:
delta: "{{ source_array | difference(target_array) }}"
И у меня неверный результат:
[{
"status": "Active",
"AppName": "Application 2",
"version": "0.2.2",
"metadata": "ID123"
},
{
"status": "Active",
"AppName": "Application 3",
"version": "0.3.3",
"metadata": ""
},
{
"status": "Active",
"AppName": "Application 2",
"version": "0.2.2",
"metadata": "ID321"
},
{
"status": "Active",
"AppName": "Application 3",
"version": "0.3.0",
"metadata": ""
}]
Любая помощь будет высоко оценена!