Как заменить значения из одного файла yaml в другой? - PullRequest
2 голосов
/ 12 мая 2019

Я пытаюсь заменить некоторые значения из определенных полей из одного файла YAML в другой.

У меня есть две разные структуры папок.

├── helm -> root folder
    ├── accounting-pl.yaml
    ├── Chart.yaml
        ├── charts
        ├── templates
        │   ├── NOTES.txt
        │   ├── _helpers.tpl
        │   ├── deployment.yaml
        │   ├── ingress.yaml
        │   ├── service.yaml
        │   └── tests
        │       └── test-connection.yaml
        └── values.yaml
    └── unplse
        ├── Chart.yaml
        ├── charts
        ├── templates
        │   ├── NOTES.txt
        │   ├── _helpers.tpl
        │   ├── deployment.yaml
        │   ├── ingress.yaml
        │   ├── service.yaml
        │   └── tests
        │       └── test-connection.yaml
        └── values.yaml
    ....... and so son

и

├── yaml -> root folder
    ├── accounting-pl.yaml
    ├── bi-client-svc.yaml
    ├── bi-cltscreen.yaml
    ├── bi-cnsm-lispl.yaml
    ├── bi-cnsm-unpl.yaml
    ├── bi-cons-unpl.yaml
    ├── bi-consumers.yaml
    ├── bi-data-svc.yaml
    ├── bi-datareten.yaml
    ├── clapserver.yaml
    ├── client.yaml
    ├── cn-p24.yaml
    ├── cn-payu.yaml
    ├── consent.yaml
    ├── debt-coll-pl.yaml
    ├── document.yaml
    ├── ds-falcon-bare.yaml
    ├── ds-slackme.yaml
    ├── ds-ss-m0563c0.yaml
    ├── ds-ss-m18d452.yaml
    ├── ds-ss-m1d681c.yaml
    ├── ds-ss-m30b4b3.yaml
    ├── ds-ss-m459e80.yaml
    ├── ds-ss-m48a063.yaml
    ├── ds-ss-m50eacc.yaml
    ├── ds-ss-m57043d.yaml
    ├── ds-ss-m5fb04b.yaml
    ├── ds-ss-m69bc21.yaml
    ├── ds-ss-m6edd4b.yaml
    ├── ds-ss-m706b21.yaml
    ├── ds-ss-m7fb269.yaml
    ├── ds-ss-m802936.yaml
    ├── ds-ss-m8aa1c3.yaml

внутри файла values.yaml есть поле replicaCount: 1, внутри каждого из этих файлов YAML, например ds-ss-m7fb269.yaml (внутри корневой папки yaml), есть поле desiredCount: x

Как я могуполучить значение этого поля desiredCount и вставить в replicaCount?Например, replicaCount: 44

Я перепробовал много вещей, но потерпел неудачу во всех из них.
Это то, что я пробовал до сих пор.

def get_replicaCount():
    for root, dir, files in os.walk('.', topdown=False):
        for name in files:
            if name == "values.yaml":
                with open(os.path.join(root, name), 'rt') as helm:
                    try:
                        lyamls = yaml.safe_load(helm)
                        print(lyamls['replicaCount'])
                    except Exception as err:
                       print(err)

он печатает все значения replicaCount

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

... и т. Д.

def get_desiredCount():
    for i in os.listdir(path):
        with open('yaml/' + i, 'r') as f:
            loaded = yaml.safe_load(f)
            print(loaded['service']['desiredCount'])

получить все значения desiredCount и распечатать их.

4
3
9
12
and so son...

Как заменить эти значения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...