| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- package client
- import (
- "context"
- "fmt"
- "io"
- "os"
- "github.com/fatih/color"
- "github.com/porter-dev/porter/api/types"
- v1 "k8s.io/api/batch/v1"
- )
- // GetK8sNamespaces gets a namespaces list in a k8s cluster
- func (c *Client) GetK8sNamespaces(
- ctx context.Context,
- projectID uint,
- clusterID uint,
- ) (*types.ListNamespacesResponse, error) {
- resp := &types.ListNamespacesResponse{}
- err := c.getRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces",
- projectID, clusterID,
- ),
- nil,
- resp,
- )
- return resp, err
- }
- // CreateNewK8sNamespace creates a new namespace in a k8s cluster
- func (c *Client) CreateNewK8sNamespace(
- ctx context.Context,
- projectID uint,
- clusterID uint,
- name string,
- ) (*types.NamespaceResponse, error) {
- resp := &types.NamespaceResponse{}
- err := c.postRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/create",
- projectID, clusterID,
- ),
- &types.CreateNamespaceRequest{
- Name: name,
- },
- resp,
- )
- return resp, err
- }
- func (c *Client) GetKubeconfig(
- ctx context.Context,
- projectID uint,
- clusterID uint,
- localKubeconfigPath string,
- ) (*types.GetTemporaryKubeconfigResponse, error) {
- resp := &types.GetTemporaryKubeconfigResponse{}
- if localKubeconfigPath != "" {
- color.New(color.FgBlue).Printf("using local kubeconfig: %s\n", localKubeconfigPath)
- if _, err := os.Stat(localKubeconfigPath); !os.IsNotExist(err) {
- file, err := os.Open(localKubeconfigPath)
- if err != nil {
- return nil, err
- }
- data, err := io.ReadAll(file)
- if err != nil {
- return nil, err
- }
- resp.Kubeconfig = append(resp.Kubeconfig, data...)
- return resp, nil
- }
- }
- color.New(color.FgBlue).Println("using remote kubeconfig")
- err := c.getRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/kubeconfig",
- projectID, clusterID,
- ),
- nil,
- resp,
- )
- return resp, err
- }
- func (c *Client) GetEnvGroup(
- ctx context.Context,
- projectID, clusterID uint,
- namespace string,
- req *types.GetEnvGroupRequest,
- ) (*types.GetEnvGroupResponse, error) {
- resp := &types.GetEnvGroupResponse{}
- err := c.getRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/%s/envgroup",
- projectID, clusterID,
- namespace,
- ),
- req,
- resp,
- )
- return resp, err
- }
- func (c *Client) CreateEnvGroup(
- ctx context.Context,
- projectID, clusterID uint,
- namespace string,
- req *types.CreateEnvGroupRequest,
- ) (*types.EnvGroup, error) {
- resp := &types.EnvGroup{}
- err := c.postRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/%s/envgroup/create",
- projectID, clusterID,
- namespace,
- ),
- req,
- resp,
- )
- return resp, err
- }
- func (c *Client) CloneEnvGroup(
- ctx context.Context,
- projectID, clusterID uint,
- namespace string,
- req *types.CloneEnvGroupRequest,
- ) (*types.EnvGroup, error) {
- resp := &types.EnvGroup{}
- err := c.postRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/%s/envgroup/clone",
- projectID, clusterID,
- namespace,
- ),
- req,
- resp,
- )
- return resp, err
- }
- func (c *Client) GetRelease(
- ctx context.Context,
- projectID, clusterID uint,
- namespace, name string,
- ) (*types.GetReleaseResponse, error) {
- resp := &types.GetReleaseResponse{}
- err := c.getRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0",
- projectID, clusterID,
- namespace, name,
- ),
- nil,
- resp,
- )
- return resp, err
- }
- func (c *Client) GetJobs(
- ctx context.Context,
- projectID, clusterID uint,
- namespace, name string,
- ) ([]v1.Job, error) {
- respArr := make([]v1.Job, 0)
- resp := &respArr
- err := c.getRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/jobs",
- projectID, clusterID,
- namespace, name,
- ),
- nil,
- resp,
- )
- return *resp, err
- }
- // GetK8sAllPods gets all pods for a given release
- func (c *Client) GetK8sAllPods(
- ctx context.Context,
- projectID, clusterID uint,
- namespace, name string,
- ) (*types.GetReleaseAllPodsResponse, error) {
- resp := &types.GetReleaseAllPodsResponse{}
- err := c.getRequest(
- fmt.Sprintf(
- "/projects/%d/clusters/%d/namespaces/%s/releases/%s/0/pods/all",
- projectID, clusterID,
- namespace, name,
- ),
- nil,
- resp,
- )
- return resp, err
- }
|