gpt4 book ai didi

go - 使用 Openshift/Client-go 进行 Openshift API 查询

转载 作者:行者123 更新时间:2023-12-01 21:09:35 25 4
gpt4 key购买 nike

我试图在 openshift/client-go 的帮助下列出 openshift 中的所有构建配置


import (
"context"
"flag"
"fmt"
"os"
"path/filepath"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/clientcmd"

buildv1 "github.com/openshift/client-go/build/clientset/versioned/typed/build/v1"
)

func main() {
err := start()
if err != nil {
fmt.Fprintf(os.Stderr, "error: %v", err)
os.Exit(1)
}
}

func start() error {
var kubeconfig *string
if home := homeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
flag.Parse()

// use the current context in kubeconfig
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
return err
}

buildV1Client, err := buildv1.NewForConfig(config)
if err != nil {
return err
}

namespace := "testproject"
// get all builds
builds, err := buildV1Client.Builds(namespace).List(context.TODO(), metav1.ListOptions{})
if err != nil {
return err
}
fmt.Printf("There are %d builds in project %s\n", len(builds.Items), namespace)
// List names of all builds
for i, build := range builds.Items {
fmt.Printf("index %d: Name of the build: %s", i, build.Name)
}
return nil
}

func homeDir() string {
if h := os.Getenv("HOME"); h != "" {
return h
}
return os.Getenv("USERPROFILE") // windows
}

我已经通过 glide 获得了所有依赖项。 glide.yaml glide update -v

package: .
import:
- package: github.com/openshift/client-go
subpackages:
- build/clientset/versioned/typed/build/v1
- package: k8s.io/apimachinery
subpackages:
- pkg/apis/meta/v1
- package: k8s.io/client-go
subpackages:
- tools/clientcmd

我看到我的所有软件包都是 vendor 的一部分。但我无法将类型更改为 vendor 配置。

go run main.go
# command-line-arguments
./main.go:39:44: cannot use config (type *"k8s.io/client-go/rest".Config) as type *"github.com/openshift/client-go/vendor/k8s.io/client-go/rest".Config in argument to "github.com/openshift/client-go/build/clientset/versioned/typed/build/v1".NewForConfig
./main.go:46:88: cannot use "k8s.io/apimachinery/pkg/apis/meta/v1".ListOptions literal (type "k8s.io/apimachinery/pkg/apis/meta/v1".ListOptions) as type "github.com/openshift/client-go/vendor/k8s.io/apimachinery/pkg/apis/meta/v1".ListOptions in argument to buildV1Client.Builds(namespace).List

我已经删除了当前目录中的 vendor 目录,并确保 gopath 具有所有必需的依赖项作为替代尝试,但这不起作用。我还尝试链接 ~/go/src/github.com/openshift/client-go/vendor/* vendor ,但这似乎不起作用。

我也尝试了解决方案List Openshift objects via Go client API 。这不起作用。

最佳答案

滑动有点outdated截至撰写本文时。它的最后一次发布是 2019 年 7 月 10 日。

自版本 1.11 起,Golang 提出了名为 go modules 的 native 包管理。这已成为管理依赖关系的更优选方式。这就是管理您的 vendor 目录的内容,也是 github.com/openshift/client-go 使用的内容。我还假设您从 this main.go file 开始.

因为 github.com/openshift/client-go 下的所有内容都已管理依赖项。我推荐🎬:

go get github.com/openshift/client-go
cd $GOPATH/src/github.com/mygihubusername/myrepo
cp -R ../../openshift/client-go/* .
# put main.go here with your code or any of the subdirectories
# cd subdir 👈 if you put the main.go file under a subdir.
go build -o buildclient .
# clean up any files you don't need
# create github repo
git add *
git commit -m 'My first commit'
git push origin master

对我有用。 ✌️

关于go - 使用 Openshift/Client-go 进行 Openshift API 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62998245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com