【发布时间】:2019-09-08 17:40:48
【问题描述】:
我正在尝试使用 ruamel python 更新 yaml 文件。
proc=subprocess.Popen(['kubectl','get','pod','web3','-o','yaml','--export'], stdout=subprocess.PIPE)
rein=proc.stdout.read()
result, indent, block_seq_indent = ruamel.yaml.util.load_yaml_guess_indent(rein, preserve_quotes=True)
到目前为止我已经尝试过:
result['spec'].append('nodeSelector')
给出错误:
result['spec'].append('nodeSelector')
AttributeError: 'CommentedMap' object has no attribute 'append'
也试过这样:
result['spec']['nodeSelector']['kubernetes.io/hostname']='kubew1'
给:
result['spec']['nodeSelector']['kubernetes.io/hostname']='kubew1'
File "/usr/local/lib/python3.6/dist-packages/ruamel/yaml/comments.py", line 752, in __getitem__
return ordereddict.__getitem__(self, key)
KeyError: 'nodeSelector'
我的初始 Yaml 文件是:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
app: demo
name: web
name: web3
selfLink: /api/v1/namespaces/default/pods/web3
spec:
containers:
- image: aexlab/flask-sample-one
imagePullPolicy: Always
name: web
ports:
- containerPort: 5000
name: http
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-7bcc9
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
我想在“规范”中添加的预期字段是:
nodeSelector:
kubernetes.io/hostname: kubew1
任何想法如何使用 ruamel 库来实现这一点。
【问题讨论】:
标签: yaml pyyaml ruamel.yaml