tl;dr
@inokara @matsumotory mruby界隈に名を轟かすチャンスです!
— Uchio KONDO (@udzura) November 6, 2015
— MATSUMOTO, Ryosuke (@matsumotory) November 6, 2015
上記のような振りを頂戴したので、mruby 界に名を轟かす為にもうすぐ初老を迎えるという勢いでConsul HTTP API の mruby クライアントを作り始めた。
mgem-list への登録済み、尚、全てのエンドポイントはサポートしていない(引き続き追加していく予定)。
memo
サポートしている Endpoint
現時点では以下の Endpoint をサポート。
各種パラメータについても引き続き追加してくつもり。
example
localhost にてノード一台で構成されている Consul クラスタがある場合、以下のようなコードを用意する。
# HTTP API のエンドポイントを指定 config = { :host => "127.0.0.1", :port => "8500", } # Key / Value 用のインスタンスを作成 kv = Consul::Kv.new(config) puts "put: #{kv.put("foo", "bar")['body']}" puts "get: #{kv.get("foo")['body']}" puts "delete: #{kv.del("foo")['body']}" # Status 用のインスタンスを作成 status = Consul::Status.new(config) puts "leader: #{status.leader['body']}" puts "peers: #{status.peers['body']}" # Health Check 用のインスタンスを作成 health = Consul::Health.new(config) puts "node: #{health.node("localhost")['body']}" puts "checks: #{health.checks("your_service")['body']}" puts "service: #{health.service("your_service")['body']}" puts "state: #{health.state("any")['body']}"
以下のように実行する。
$ bin/mruby example.rb
以下のように出力される。
put: true get: [{"CreateIndex":523,"ModifyIndex":523,"LockIndex":0,"Key":"foo","Flags":0,"Value":"YmFy"}] delete: true leader: "10.0.2.xx:8300" peers: ["10.0.2.xx:8300"] node: [{"Node":"localhost","CheckID":"serfHealth","Name":"Serf Health Status","Status":"passing","Notes":"","Output":"Agent alive and reachable","ServiceID":"","ServiceName":""}] checks: [] service: [] state: [{"Node":"localhost","CheckID":"serfHealth","Name":"Serf Health Status","Status":"passing","Notes":"","Output":"Agent alive and reachable","ServiceID":"","ServiceName":""}]
おわり
todo
- サポートする Endpoint の追加
- 各種 Endpoint のパラメータの追加
- テスト(テスト用ダミーデータを用意する方法を調べる)
お礼
振りを下さった @matsumotory さん、@udzura さん、有難うございますm(__)m