Dapatkan data Openshift ConfigMap menggunakan python

王林
Lepaskan: 2024-02-22 12:31:11
ke hadapan
523 orang telah melayarinya

使用 python 获取 Openshift ConfigMap 数据

Kandungan soalan

Saya cuba menggunakan perpustakaan python openshift untuk mendapatkan data peta konfigurasi dalam projek. Saya berjaya mendapatkan nama peta konfigurasi tetapi saya boleh mencari fungsi atau contoh dalam dokumentasi untuk mengekstrak data. Adakah sesiapa yang menghadapi masalah ini atau tahu bagaimana untuk melakukannya?

Ini adalah kod yang saya gunakan untuk mendapatkan nama cm (mengembalikan kamus):

import openshift as oc

if __name__ == '__main__':
    project_selector = oc.selector('projects')
    projects = project_selector.objects()
    number_of_projects = len(projects)
    for project in projects:
        name = project.model.metadata.name
        oc.invoke('project', name)
        tokens = oc.invoke('get', ['configmaps']).actions()[0].as_dict()['out'].replace('\n', ' ').split(' ')
        configmap_data = [x for x in tokens if len(x) > 0 and not x.isupper()]
        print(configmap_data)
Salin selepas log masuk

Saya telah mencuba menggunakan oc.selector 并使用 with oc.selector(project_name): untuk mencuba dan mendapatkan beberapa data tetapi tidak dapat mencari cara untuk mendapatkannya.

Sila ambil perhatian bahawa saya tidak perlu menggunakan arahan oc cmd, saya perlu menggunakan python. Buat masa ini saya hanya memerlukan data dan lihat bagaimana untuk menukarnya kemudian.

Terima kasih.


Jawapan betul


Jika anda menggunakan oc.invoke, anda perlu lulus hujah baris arahan yang sesuai. Pertimbangkan perkara yang akan berlaku jika anda menjalankan arahan yang sama secara manual:

$ oc get configmaps
name                                                   data   age
coredns                                                1      54d
extension-apiserver-authentication                     6      54d
kube-apiserver-legacy-service-account-token-tracking   1      54d
kube-proxy                                             2      54d
kube-root-ca.crt                                       1      54d
kubeadm-config                                         1      54d
kubelet-config                                         1      54d
Salin selepas log masuk

Anda mendapat nama, tetapi bukan kandungannya. Jika anda mahukan kandungan, anda perlu memilih format output yang lebih sesuai, seperti -o json:

$ oc get configmaps kubelet-config -o json
{
    "apiversion": "v1",
    "data": {
        ...
    },
    "kind": "configmap",
    "metadata": {
        "name": "kubelet-config",
        "namespace": "kube-system",
    }
}
Salin selepas log masuk

Anda perlu memasukkan parameter yang sama dalam panggilan ke oc.invoke. Sesuatu seperti ini menunjukkan cara sesuatu berfungsi:

import openshift as oc
import json

project_selector = oc.selector('projects')
projects = project_selector.objects()
for project in projects:
    # get a list of configmap names
    configmaps = oc.invoke('get', ['-n', project.name(), '-o', 'name', 'configmaps'])

    # for each configmap, get the content
    for cm in configmaps.out().splitlines():
        out = oc.invoke('get', ['-n', project.name(), '-o', 'json', cm])
        manifest = json.loads(out.out())
        data = manifest['data']
        print(data)
Salin selepas log masuk

Ini berfungsi, tetapi jangan lakukannya.

Jelas sekali anda sudah tahu cara menggunakan pemilih kerana itulah cara anda mengulangi item anda. Anda harus menggunakan teknik yang sama untuk mengulang peta konfigurasi:

import openshift as oc

projects = oc.selector('projects')
for project in projects.objects():
    with oc.project(project.name()):
        configmaps = oc.selector('configmaps')
        for cm in configmaps.objects():
            data = cm.as_dict()['data']
            print(data)
Salin selepas log masuk

Ini banyak berdasarkan contoh terus dari dokumentasi. Lelaran configmaps.objects() untuk mendapatkan objek api bagi setiap peta konfigurasi. Anda boleh mengakses nama dan kandungan.

Atas ialah kandungan terperinci Dapatkan data Openshift ConfigMap menggunakan python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!