Skip to main content
Glama
pod_link.go4.13 kB
package service import ( "fmt" "strings" "time" "github.com/weibaohui/kom/kom" "golang.org/x/net/context" v1 "k8s.io/api/core/v1" networkingv1 "k8s.io/api/networking/v1" ) var linkCacheTTL = 1 * time.Minute func (p *podService) LinksServices(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*v1.Service, error) { services, err := kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedService() return services, err } func (p *podService) LinksEndpoints(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*v1.Endpoints, error) { return kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedEndpoints() } func (p *podService) LinksPVC(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*v1.PersistentVolumeClaim, error) { return kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedPVC() } func (p *podService) LinksPV(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*v1.PersistentVolume, error) { return kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedPV() } func (p *podService) LinksIngress(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*networkingv1.Ingress, error) { return kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedIngress() } func (p *podService) LinksEnv(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*kom.Env, error) { env, err := kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedEnv() if err != nil { // error executing command: Internal error occurred: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec \"915a4933acbb460d0b1859831d8f392dc96ca1f91447a94dbc41962900b91281\": OCI runtime exec failed: exec failed: unable to start container process: exec: \"env\": executable file not found in $PATH: unknown // 提取executable file not found in $PATH // 展示为简短通用的错误 if strings.Contains(err.Error(), "executable file not found in $PATH") { return nil, fmt.Errorf("容器中无env命令") } else { return nil, err } } return env, nil } func (p *podService) LinksEnvFromPod(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*kom.Env, error) { env, err := kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedEnvFromPod() if err != nil { return nil, err } return env, nil } func (p *podService) LinksConfigMap(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*v1.ConfigMap, error) { configMap, err := kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedConfigMap() if err != nil { return nil, err } return configMap, nil } func (p *podService) LinksSecret(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*v1.Secret, error) { secret, err := kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedSecret() if err != nil { return nil, err } return secret, nil } func (p *podService) LinksNode(ctx context.Context, selectedCluster string, item *v1.Pod) ([]*kom.SelectedNode, error) { return kom.Cluster(selectedCluster).WithContext(ctx). Resource(&v1.Pod{}). Namespace(item.Namespace). Name(item.Name). WithCache(linkCacheTTL).Ctl().Pod().LinkedNode() }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server