Tidak jelas bagi saya bagaimana menjalankan Contoh Sederhana dari Taman Bermain Agen Kebijakan Terbuka dari CLI.

play.rego

package play
default hello = false

hello {
    m := input.message
    m == "world"
}

input.json

{
    "message": "world"
}

Saya mencoba menggunakan:

opa eval -i input.json -d play.rego "data.play.hello"

Tapi, saya tidak bisa mendapatkan hasil ini

{
    "hello": true
}

Sayangnya, saya mendapatkan ini: :(

{
  "result": [
    {
      "expressions": [
        {
          "value": true,
          "text": "data.play.hello",
          "location": {
            "row": 1,
            "col": 1
          }
        }
      ]
    }
  ]
}

Saya pikir orang lain mungkin merasa berguna untuk memahami cara menjalankan contoh ini dari CLI, jadi saya harus bertanya.

2
user284503 12 Mei 2021, 10:40

1 menjawab

Jawaban Terbaik

Itu pertanyaan yang bagus! Kecuali "evaluasi pilihan" dipilih, Rego Playground selalu mengevaluasi seluruh kebijakan, yaitu semua aturan yang disertakan. Saat Anda membuat kueri kebijakan menggunakan opa eval, Anda dapat memilih untuk melakukan hal yang sama, atau seperti yang Anda lakukan dalam contoh Anda - kueri hanya satu aturan untuk nilainya.

Jika Anda mengubah kueri dari "data.play.hello" menjadi hanya "data.play", itu akan mengevaluasi kebijakan lengkap seperti taman bermain:

$ opa eval -i input.json -d play.rego "data.play"
{
  "result": [
    {
      "expressions": [
        {
          "value": {
            "hello": true
          },
          "text": "data.play",
          "location": {
            "row": 1,
            "col": 1
          }
        }
      ]
    }
  ]
}

Jika Anda hanya ingin menampilkan keluaran aktual tanpa semua detail di sekitarnya, Anda dapat menggunakan salah satu opsi pemformatan yang tersedia untuk opa eval seperti --format raw:

$ opa eval --format raw -i input.json -d play.rego "data.play"
{"hello":true}
2
Devoops 12 Mei 2021, 08:10