has_key()はやめる

Ansibleのカスタムフィルターを作成した時のこと。
listの各要素(dict)について、プロパティの値に応じて返す/返さないことをしようとしたとき
has_key()でキーの有無を確認したところ、Pythonインタプリタ上ではOK、Ansible上でモジュールエラーになることが発生。
システムのPython自体は2.7、AnsibleはPython3.6で動いているあたりから気がつけばよかったが…

Python 3.xからはdict.has_key()がなくなり、key in dictで存在チェックをする必要がある。
https://stackoverflow.com/questions/33727149/dict-object-has-no-attribute-has-key

has_key()を使う癖を直さないと。

そして作ろうとしていたカスタムフィルタは実はJinja2に既にあったという。
https://stackoverflow.com/questions/31895602/ansible-filter-a-list-by-its-attributes
http://jinja.pocoo.org/docs/dev/templates/#selectattr

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です