في الوقت الحالي ، لا يمكن استخدام وظيفة الخريطة إلا على النحو التالي:
[{'path':'/var/file1', 'mtime': '123', 'mode': '600',...},{'path':'/var/file2', 'mtime': '123', 'mode': 644, ...}]|map(attribute='path')
مع عودة
['/var/file1', '/var/file2']
(محرر المستندات: http://jinja.pocoo.org/docs/dev/templates/#map)
أريد أن أقترح السماح بهذا:
[{'path':'/var/file1', 'mtime': '123', 'mode': '600',...},{'path':'/var/file2', 'mtime': '123', 'mode': 644, ...}]|map(attribute=['path', 'mtime'])
أو
[{'path':'/var/file1', 'mtime': '123', 'mode': '600',...},{'path':'/var/file2', 'mtime': '123', 'mode': 644, ...}]|map(attributes=['path', 'mtime'])
الذي يجب أن يعود
[{'path':'/var/file1', 'mtime': '123'},{'path':'/var/file2', 'mtime': '123'}]
يمكنك بالفعل معرفة ما هو مفيد من أجل: معالجة قائمة الإملاءات بحيث تحتفظ هذه الإملاءات بمجموعة محدودة من السمات فقط.
سوف أحب هذه الميزة.
لست واضحًا لماذا هذا مطلوب في القوالب. مجرد تكرار القواميس واستخدام السمات التي تحتاجها سيحقق نفس الشيء. إذا كنت بحاجة إلى بيانات مختلفة ، فمن الأفضل القيام بهذا التلاعب في Python قبل التقديم. يمكن أن أرى استخدامًا لإرجاع المجموعات.
إذا كان أي شخص لا يزال بحاجة إلى هذا ، فيمكنك استخدام الكود التالي (ضع playbooks/filter_plugins/mapattributes.py
):
#!/usr/bin/env python
class FilterModule(object):
def filters(self):
return { 'mapattributes': self.mapattributes }
def mapattributes(self, list_of_dicts, list_of_keys):
l = []
for di in list_of_dicts:
newdi = { }
for key in list_of_keys:
newdi[key] = di[key]
l.append(newdi)
return l
استخدم عبر:
ansible_mounts | mapattributes(['mount', 'size_total', 'size_available',])
لماذا تم إغلاق هذه المشكلة ولم يتم تنفيذ حل Nee6ione رسميًا؟ سيكون الأمر أبسط بكثير إذا تم دعمه بدون أي مكونات إضافية
التعليق الأكثر فائدة
إذا كان أي شخص لا يزال بحاجة إلى هذا ، فيمكنك استخدام الكود التالي (ضع
playbooks/filter_plugins/mapattributes.py
):استخدم عبر: