現在、awspecの各リソースタイプは、リソースの特定にIDか、タグの Name
を利用しているます。
しかし、「サーバはペットから家畜へ」と言われるようにAWS上のリソースに名前がつくことのほうが少なくなっているようです。
awspecでもIssueが上がっています。
awspecとしてはリソースを一意に特定してテストするコンセプトは重要だ思っているので、(そのコンセプトは変えずに)例えば “IDを特定するためのヘルパー” を提供しようと考えています。
ヘルパー名は仮ですが、ec2リソースタイプに対して ec2_filter
というヘルパーを用意した場合、以下のような使い方ができるようにしたいのです。
describe ec2(ec2_filter(tags: {'TagKey' => 'TagValue'})) do it { sholud be_running } end describe ec2(tags: {'TagKey' => 'TagValue'}) do # work ec2_filter() inside it { sholud be_running } end
ec2_filter(tags: {'TagKey' => 'TagValue'}).each |id| describe ec2(id) do it { sholud be_running } end end ec2_filter(asg: 'my-asg').each |id| describe ec2(id) do it { sholud be_running } end end
何に悩んでいるのか
ヘルパーの命名規則(名前)です。
- おそらく各リソースに対して専用のリソースが必要
finder
という名前は既に利用- 1つのリソースを特定するために使ったり、複数のリソースのIDを取得するために使ったりしたい
どうしたものか。。。