Skip to content

Commit

Permalink
Jlopezbarb/fix stack endpoints (#1961)
Browse files Browse the repository at this point in the history
* Retrieve endpoints from ingresses

Signed-off-by: Javier López Barba <javier@okteto.com>

* Run in vanilla clusters

Signed-off-by: Javier López Barba <javier@okteto.com>

* Not show anything if no endpoints available

Signed-off-by: Javier López Barba <javier@okteto.com>
  • Loading branch information
jLopezbarb committed Nov 15, 2021
1 parent 4d62948 commit 63d3164
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 30 deletions.
7 changes: 2 additions & 5 deletions cmd/stack/deploy.go
Expand Up @@ -23,7 +23,6 @@ import (
"github.com/okteto/okteto/pkg/cmd/stack"
"github.com/okteto/okteto/pkg/log"
"github.com/okteto/okteto/pkg/model"
"github.com/okteto/okteto/pkg/okteto"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -65,10 +64,8 @@ func Deploy(ctx context.Context) *cobra.Command {
if err == nil {
log.Success("Stack '%s' successfully deployed", s.Name)
}
if okteto.Context().IsOkteto {
if err := stack.ListEndpoints(ctx, s, ""); err != nil {
return err
}
if err := stack.ListEndpoints(ctx, s, ""); err != nil {
return err
}

return err
Expand Down
39 changes: 14 additions & 25 deletions pkg/cmd/stack/endpoints.go
Expand Up @@ -15,46 +15,35 @@ package stack

import (
"context"
"encoding/json"
"fmt"
"sort"
"strings"

"github.com/okteto/okteto/pkg/k8s/ingresses"
"github.com/okteto/okteto/pkg/log"
"github.com/okteto/okteto/pkg/model"
"github.com/okteto/okteto/pkg/okteto"
)

func ListEndpoints(ctx context.Context, stack *model.Stack, output string) error {
oktetoClient, err := okteto.NewOktetoClient()
c, _, err := okteto.GetK8sClient()
if err != nil {
return err
return fmt.Errorf("failed to load your local Kubeconfig: %s", err)
}
endpointList, err := oktetoClient.ListStackEndpoints(ctx, stack)
iClient, err := ingresses.GetClient(ctx, c)
if err != nil {
return fmt.Errorf("failed to get preview environments: %s", err)
return err
}

switch output {
case "json":
bytes, err := json.MarshalIndent(endpointList, "", " ")
if err != nil {
return err
}
fmt.Println(string(bytes))
default:
if len(endpointList) == 0 {
log.Information("There are no available endpoints for stack '%s'\n", stack.Name)
} else {
endpoints := make([]string, 0)
for _, endpoint := range endpointList {
endpoints = append(endpoints, endpoint.URL)
}
sort.Slice(endpoints, func(i, j int) bool {
return len(endpoints[i]) < len(endpoints[j])
})
log.Information("Endpoints available:\n - %s\n", strings.Join(endpoints, "\n - "))
}
endpointList, err := iClient.GetEndpointsBySelector(ctx, stack.Namespace, fmt.Sprintf("%s=%s", model.StackNameLabel, stack.Name))
if err != nil {
return err
}
if len(endpointList) > 0 {
sort.Slice(endpointList, func(i, j int) bool {
return len(endpointList[i]) < len(endpointList[j])
})
log.Information("Endpoints available:\n - %s\n", strings.Join(endpointList, "\n - "))
}
return nil
}
31 changes: 31 additions & 0 deletions pkg/k8s/ingresses/crud.go
Expand Up @@ -133,3 +133,34 @@ func (iClient *Client) Destroy(ctx context.Context, name, namespace string) erro
}
return nil
}

func (iClient *Client) GetEndpointsBySelector(ctx context.Context, namespace, labels string) ([]string, error) {
result := make([]string, 0)
if iClient.isV1 {
iList, err := iClient.c.NetworkingV1().Ingresses(namespace).List(ctx, metav1.ListOptions{LabelSelector: labels})
if err != nil {
return nil, err
}
for i := range iList.Items {
for _, rule := range iList.Items[i].Spec.Rules {
for _, path := range rule.IngressRuleValue.HTTP.Paths {
result = append(result, fmt.Sprintf("https://%s%s", rule.Host, path.Path))
}
}
}
return result, nil
}

iList, err := iClient.c.NetworkingV1beta1().Ingresses(namespace).List(ctx, metav1.ListOptions{LabelSelector: labels})
if err != nil {
return nil, err
}
for i := range iList.Items {
for _, rule := range iList.Items[i].Spec.Rules {
for _, path := range rule.IngressRuleValue.HTTP.Paths {
result = append(result, fmt.Sprintf("https://%s%s", rule.Host, path.Path))
}
}
}
return result, nil
}

0 comments on commit 63d3164

Please sign in to comment.