yaocloud / yao

Yet Another OpenStack API wrapper
MIT License
35 stars 12 forks source link

Yao::Tenant の servers インスタンスメソッドが動作しない問題を修正します #144

Closed takaishi closed 5 years ago

takaishi commented 5 years ago

https://github.com/yaocloud/yao/commit/91e2eeb332c1173f46917bc102bf9faf35474d25 の変更により、Yao::Tenantの servers インスタンスメソッドが空配列を返すようになったためこれを修正します。

原因ですが、HavanaのAPIでインスタンス一覧を取得する際、 all_tenants オプションがない場合 project_idで正しく絞り込めない…というものです。

Yao::Server.list(project_id: id)

all_tenants を有効にすることでテナントに所属するインスタンス一覧が返ってきます。

Yao::Server.list(all_tenants: 1, project_id: id)
takaishi commented 5 years ago

タイトルと概要がPRの趣旨とずれていたので修正しました。

この修正はYao::Tenantのインスタンスメソッドの修正で、adminではない場合Yao::Tenantの取得ができません。そのためall_tenantsを使っても問題はないと判断しました。また、もともとall_tenantsを使っていたのを使わなくなったために発生したバグであることからもall_tenantsを使うことは問題ないかと思います。

Yao::Projectについてもall_tenantsを追加していますが、これは openstack server list でテナントを指定した場合にall_tenantsが使われているためそれに揃える目的があります。

buty4649 commented 5 years ago

ありがとうございます。そして、私が勘違いしていたのですが、 project_id(tenant_id) はall_tenantsが指定されている場合のみ動くようです。 なので、提案していただいた内容でも全く問題なかったです :bowing_man:

This filter only works when the all_tenants filter is also specified.

https://docs.openstack.org/api-ref/compute/?expanded=list-servers-detail,list-servers-detailed-detail#list-servers-detailed

takaishi commented 5 years ago

おーっ、そういう制限があるのですねえ。ありがとうございます!