github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/providers/discovery/external/testdata/good.rb (about) 1 #!/usr/bin/env ruby 2 3 require "json" 4 require "pp" 5 6 def write_output(output) 7 File.open(ENV["CHORIA_EXTERNAL_REPLY"], "w") {|f| 8 f.puts(output.to_json) 9 } 10 exit 11 end 12 13 if ENV["CHORIA_EXTERNAL_PROTOCOL"] != "io.choria.choria.discovery.v1.external_request" 14 write_output({"error" => "invalid protocol"}) 15 exit 16 end 17 18 request = JSON.parse(File.read(ENV["CHORIA_EXTERNAL_REQUEST"])) 19 expected = { 20 "$schema" => "https://choria.io/schemas/choria/discovery/v1/external_request.json", 21 "options" => { 22 "foo" => "bar" 23 }, 24 "protocol" => "io.choria.choria.discovery.v1.external_request", 25 "filter" => { 26 "fact" => [{"fact" => "country", "operator"=>"==","value"=>"mt"}], 27 "cf_class"=>[], 28 "agent" => ["rpcutil"], 29 "compound" => [], 30 "identity" => [] 31 }, 32 "collective" => "ginkgo", 33 "timeout" => 2, 34 } 35 36 if request != expected 37 write_output({"error" => "invalid filter received: "+request.pretty_inspect}) 38 else 39 write_output({"protocol" => "io.choria.choria.discovery.v1.external_reply", "nodes" => ["one","two"]}) 40 end