とある道化の悪戯記録:2016年12月クリップピクスリスログウィキプロフ誰得情報メイン。OpenStackとかが中心。アドベントカレンダー22日目のエントリとなります。申込んだのはいいけどネタはない。ネタができるのを待っていたらいつまでも書けない。Orderと遊戯王デュエルリンクスとシャドウバースに追われる日々で何のネタも!浮かびませんでした!!OpenStack擬人化?あれから1年経ってるけど何もしてないです!!!多分今後もやりません!!!!!鉄板の鰻ネタ?書く前にまず、鰻が食べたいです。阿部さんネタ?それはアッードベントカレンダーですね。...とまぁ最悪ネタに走ってしまおうと思ってましたが特に面白いことは浮かばなかったので超初心者でも書けるネタにします。APIを使おうというわけでAPIの使い方でも触れてお茶を濁します。おいておいて、もうちょっとちゃんと扱います。python-openstackclientをインストールしてopenstackって打ったあとhelpとか実行すれば使い方出てくるよ!以上終(略)...なんですが、クライアントのインストールが面倒というケースが多々あると思います。手間はかけてもいいけど、ライブラリを汚したくない勝手にclientを入れられない共有サーバだけどAPI疎通テストしたいそんな事より鰻が食べたいなどなど、python-xxxxxclientでは対応できないケースもあります。そんなわけで今回はcurlとjqを使った方法にします。jqを入れられないケースはあるかもしれませんが、所詮パーサなのでそこは違う手段で頑張って、どうぞ人間が読んで解釈する、いわばお前がパーサになるんだよ!!でも良いかと思います。APIを使っていてhttpベースで操作できる認証情報は直接リクエストに入れず、認証時に発行されたトークンをヘッダに入れるという理由で、まずはトークンの取得が必要になります。認証情報の入ったリクエストデータをサーバに送るサーバからのレスポンスの中にトークンがあるので以後の処理で使用する1のためのサンプルを載せます。v3からはHTTPヘッダに含まれます。v2は既に非推奨なのでここではv3用の例となります。tokenの取得方法は何パターンかあるようですがProjectを明記しているscopedのリクエストになります。$projectはそれぞれ自分のものに読み替えてください)tokenデータがHTTPヘッダに入る関係上、-iオプションを付けているのと独自CA局でのHTTPSな場合もあるので-kオプションも入れてます。レスポンスデータに、サービスカタログの情報もあるため一時ファイルに保存して、必要なものを取り出すという作りにしても良いでしょう。パースの際にjqが役立ちます。xxxxxxとして設定されているためTOKEN=xxxxxxみたいにシェルの変数に設定することでその後の処理に使いやすくできます。"http://host:port/お目当てのpath"のように実行していきます。URLの取得を行います。.[]."url"Jqについてはjqコマンドが便利な件を参考にさせていただきました。ようにして条件に合致するものを取り出します。APIのリファレンスを見てお目当てのURLに好きなリクエストを送るだけです。補完された状態で取得できます。その後の処理に使いやすいように以下のように設定します。取得できるので以下のようにします。"$OBJECT_STORAGE_URL/$container"/$object(オブジェクトの内容が標準出力に表示されるのでファイルとして保存するにはcurlのオプションやリダイレクトを使う。)結論APIリファレンスからリクエストに必要な情報を調べ、レスポンスデータのjsonの構造を見て必要な情報を取り出して...と、中々地道な作業が必要になります。cal[i][j]%>">。