标签: jsonnet

如何在 jsonnet 中 printf ?

有没有办法打印 jsonnet 中的对象?这主要用于调试目的。

我正在用来error打印对象,但这会终止程序执行。

local obj = [
{
  myKey: 2,
}];
error 'Printing' + std.toString(obj)
Run Code Online (Sandbox Code Playgroud)

输出:

RUNTIME ERROR: Printing[{"myKey": 2}]
    snippet:6:1-37  
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?

jsonnet

7
推荐指数
1
解决办法
8442
查看次数

在 jsonnet 中导入 YAML

有没有办法.yaml在 jsonnet 中导入文件?

我发现 jsonnet 支持导入.json并且也有本机importstr()功能,但看起来不支持.yaml?

我想要做:

local foo = import "foo.yaml";
local bar = foo.bar;
Run Code Online (Sandbox Code Playgroud)

jsonnet

6
推荐指数
1
解决办法
3952
查看次数

如何在jsonnet中将字符串转换为整数?

我有一个字符串,其中包含Jsonnet变量中的数字.如何将其转换为整数?

json jsonnet

5
推荐指数
2
解决办法
622
查看次数

如何从bash调用参数化的Jsonnet?

我无法理解如何最好地参数化Jsonnet文件,以便我可以从bash和另一个Jsonnet文件调用相同的文件.

假设我有一个名为template.jsonnet的简单模板:

{
  // Required arguments
  name:: error "'name' must be specified",
  port:: error "'port' must be specified",

  ...,
}
Run Code Online (Sandbox Code Playgroud)

我可以很容易地将它合并到另一个Jsonnet文件中,并提供其所需的参数值:

{
  local template = = import "./template.jsonnet";

  template + {
    name:: "service",
    port:: 8080,
}
Run Code Online (Sandbox Code Playgroud)

我正在努力确定我可以template.jsonnet从bash 调用以获得相同结果的预期方式.

我可以使用,--ext-str但似乎需要std.extVar(x)

GitHub 问题表明它--tla-code可能是std.extVar()的替代品,但我不明白如何根据我的需要使用它.

后续问题是:如何对参数这是一个数组:

{
  local template = = import "./template.jsonnet";

  template + {
    name:: "service",
    port:: [8080,8081,8082],
}
Run Code Online (Sandbox Code Playgroud)

jsonnet

5
推荐指数
1
解决办法
1557
查看次数

如何从 Python 导入正确调用 jsonnet

我正在使用 jsonnet 构建将由 Python 代码使用的 json 对象,使用bindings从 Python 调用 jsonnet 。我想设置我的目录结构,以便 jsonnet 文件位于与运行 Python 代码的位置相关的一个或多个子目录中,例如:

foo.py jsonnet/ jsonnet/bar.jsonnet jsonnet/baz.libsonnet

运行foo.py然后应该能够使用_jsonnet.evaluate_snippet()从文件中读取的字符串jsonnet/,从jsonnet/. 做到这一点的最佳方法是什么?

python python-import jsonnet

5
推荐指数
1
解决办法
4497
查看次数

如何在 ksonnet/jsonnet 中写入多行值

我想用多行创建一个 kubernetes 配置映射,比如这种 yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nifi-bootstrap
data:
  run.sh: |-
    echo "Waiting to run nslookup..."
    sleep 30
Run Code Online (Sandbox Code Playgroud)

我应该如何在原型的部分函数中编写它?

    parts:: {
        bootstrap(p):: {
            apiVersion: 'v1',
            kind: 'ConfigMap',
            metadata: {
                name: p.name + '-bootstrap',
                labels: {
                    app: p.app,
                    release: p.release,
                },
            },
            data: {
                'run.sh': "|-
line 1 
line 2
line 3
"
Run Code Online (Sandbox Code Playgroud)

但它会像这样生成 yaml:(ks 显示默认值):

apiVersion: v1
data:
  run.sh: "|-\nline 1 \nline 2\nline 3\n"
kind: ConfigMap
Run Code Online (Sandbox Code Playgroud)

我想挂载此配置映射并将其作为脚本运行,但我怀疑此输出是否有效。关于如何在 ksonnet/jsonnet 中生成多行值的任何想法?

kubernetes jsonnet ksonnet

5
推荐指数
1
解决办法
2506
查看次数

使用 jsonnet 更新现有数组元素

我正在使用 jsonnet 读取由数组组成的值。我想修改该数组中的第一个元素以添加一个值。数据结构如下所示:

{
   "my_value": [
      {
         "env": "something"
      },
      {
         "var": "bar"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我想为my_value[0]. 我如何在 jsonnet 中引用它?

jsonnet

5
推荐指数
2
解决办法
4515
查看次数

Grafana 面板 JSON 到 Jsonnet?

我能够生成面板 JSON 来配置 Grafana 仪表板,如下所示:

jsonnet -J ~/grafana/grafonnet-lib mydash.jsonnet > mydash.json
Run Code Online (Sandbox Code Playgroud)

不过,我喜欢在 Grafana 本身中操作和编辑生成的仪表板。

我绝对感到困惑和沮丧的是,一旦我通过调整 Grafana 的设置等方式在 Grafana 中进行了 UI 更改……如何将其返回Jsonnet 中?现在对我来说这是一次超级尴尬的开发经历。我导出面板 JSON 并在单独的窗口中打开源 Jsonnet,并认真尝试移植我的更改。

当您在 JSON 中可能遇到以下情况时,这尤其令人痛苦:

      "sparkline": {
              "fillColor": "rgba(31, 118, 189, 0.18)",
              "full": true,
              "lineColor": "rgb(31, 120, 193)",
              "show": true
      },
Run Code Online (Sandbox Code Playgroud)

您需要手动转换为 Jsonnet/Graffonet-lib:

sparklineShow=true,
sparklineFull=true,
colorBackground=true,
Run Code Online (Sandbox Code Playgroud)

我是否缺少技巧或工作流程?

grafana jsonnet

5
推荐指数
1
解决办法
2163
查看次数

Jsonnet 中的 + 运算符和 std.mergePatch 有什么区别?

Jsonnetstd.mergePatch实现了RFC7396,但在我幼稚的测试中,我没有发现它的行为方式和+操作符之间有什么不同;例如,+操作符尊重x+语法。std.mergePatch在 Jsonnet本身中实现的,这似乎暗示它与+运算符不同,我假设它是内置的。

这两种合并方式的语义有什么不同?

merge operators jsonnet

5
推荐指数
1
解决办法
674
查看次数

jsonnet条件生成字段

我怎样才能在 jsonnet 中得到这样的东西?

{
    if 1 == 1 then
      store: true
}
Run Code Online (Sandbox Code Playgroud)

当我使用 jsonnet 运行它时,出现以下错误:

STATIC ERROR: a.jsonnet:2:9-11: unexpected: if while parsing field definition
Run Code Online (Sandbox Code Playgroud)

我想生成这样的 json,仅作为示例,但在评估一些条件时:

{
  "store": true
}
Run Code Online (Sandbox Code Playgroud)

jsonnet

5
推荐指数
1
解决办法
9920
查看次数

如何在jsonnet中附加现有对象?

如何附加到现有列表?

这是无效的:

local list = ['a', 'b', 'c'];

local list = list + ['e'];
Run Code Online (Sandbox Code Playgroud)

jsonnet ksonnet

4
推荐指数
1
解决办法
2623
查看次数

Jsonnet 键中的字符串插值

我想知道在使用 jsonnet 时是否可以在键中插入字符串?

例如,我想做这样的事情:

{
 std.format("Hello %03d", 12): "milk"
}
Run Code Online (Sandbox Code Playgroud)

但它导致

STATIC ERROR: arith.jsonnet:2:5: expected token OPERATOR but got "."

我知道“密钥”本身是有效的,因为如果我不使用插值,它就可以正常工作,即

{
    "milk": std.format("Hello %03d", 12),
    "Hello 12": "milk"
}
Run Code Online (Sandbox Code Playgroud)

产生:

{
  "Hello 12": "milk",
  "milk": "Hello 012"
}
Run Code Online (Sandbox Code Playgroud)

看起来我也不能在键中使用变量,因为它们被解析为一个字符串(而不是变量的值) - 任何建议将不胜感激。

json jsonnet

2
推荐指数
1
解决办法
2159
查看次数

如何访问导入对象的所有字段?

$ cat foo.libsonnet
{
    local foo = 99,
    bar: [ foo, 101 ]
}
$ cat baz.jsonnet
{
    local foo = import 'foo.libsonnet',
    baz: [foo.foo, foo.bar]
}
$ jsonnet baz.jsonnet
RUNTIME ERROR: field does not exist: foo
        baz.jsonnet:3:11-18     thunk <array_element>
        baz.jsonnet:3:10-28     object <anonymous>
        During manifestation
Run Code Online (Sandbox Code Playgroud)

在这个例子中,很容易访问bar的字段foo。有什么办法可以baz.jsonnet访问当地人吗foo.libsonnet

如果答案是否定的,我应该如何实现foobaz以便我可以访问in Both和 also in 的foo字段?foo.libsonnetfoo.libsonnetbaz.jsonnet

jsonnet

0
推荐指数
1
解决办法
1072
查看次数

标签 统计

jsonnet ×13

json ×2

ksonnet ×2

grafana ×1

kubernetes ×1

merge ×1

operators ×1

python ×1

python-import ×1