在此上下文中不允许YAML映射值

时间:2015-07-09 09:28:15

标签: yaml

我正在尝试以这种格式配置YAML文件:

jobs:
 - name: A
   - schedule: "0 0/5 * 1/1 * ? *"
   - type: mongodb.cluster
    - config:
       - host: mongodb://localhost:27017/admin?replicaSet=rs
       - minSecondaries: 2
       - minOplogHours: 100
       - maxSecondaryDelay: 120
 - name: B
   - schedule: "0 0/5 * 1/1 * ? *"
   - type: mongodb.cluster
    - config:
       - host: mongodb://localhost:27017/admin?replicaSet=rs
       - minSecondaries: 2
       - minOplogHours: 100
       - maxSecondaryDelay: 120

我的想法是我可以读取job元素中的内容,并有一系列可以解析的不同作业配置。

然而,yamllint.com告诉我,由于mapping values are not allowed in this context at line 2 line 2jobs:行,这是非法的YAML。

我做错了什么?

2 个答案:

答案 0 :(得分:50)

这是有效的YAML:

else if (command == 's')
{
    print("Total (pass / fail) so far:\nAzuview:%f(%f/0)\nBublon:%f(%f/0)    \nCryztal:%f(%f/0)\n", a+b+c, a+b+c, d+e+f, d+e+f, g+h+i, g+h+i);
}

请注意,每个' - '在序列中启动 new 元素。此外,地图中键的缩进应完全相同

答案 1 :(得分:1)

序列的元素需要在同一级别缩进。假设您想要两个具有有序键值对列表的作业(A和B),您应该使用:

jobs:
 - - name: A
   - schedule: "0 0/5 * 1/1 * ? *"
   - - type: mongodb.cluster
     - config:
       - host: mongodb://localhost:27017/admin?replicaSet=rs
       - minSecondaries: 2
       - minOplogHours: 100
       - maxSecondaryDelay: 120
 - - name: B
   - schedule: "0 0/5 * 1/1 * ? *"
   - - type: mongodb.cluster
     - config:
       - host: mongodb://localhost:27017/admin?replicaSet=rs
       - minSecondaries: 2
       - minOplogHours: 100
       - maxSecondaryDelay: 120

将(单个条目)映射的序列转换为@Tsyvarrev所做的映射也是可能的,但会使您失去排序。