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