Skip to content

Commit

Permalink
added list services
Browse files Browse the repository at this point in the history
  • Loading branch information
jasmingacic committed Jun 2, 2022
1 parent 8d939cb commit 71f6c89
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 37 deletions.
54 changes: 17 additions & 37 deletions server/go/api_services_service_impl.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@ package openapi
import (
"context"
"net/http"
"strings"

kusk "github.com/GIT_USER_ID/GIT_REPO_ID/kusk"
"github.com/kubeshop/kusk-gateway/pkg/spec"
)

// ServicesApiService is a service that implements the logic for the ServicesApiServicer
Expand Down Expand Up @@ -55,47 +53,29 @@ func (s *ServicesApiService) GetService(ctx context.Context, namespace string, n

// GetServices - Get a list of services
func (s *ServicesApiService) GetServices(ctx context.Context, namespace string) (ImplResponse, error) {
apis, err := s.kuskClient.GetApis(namespace)
services, err := s.kuskClient.ListServices(namespace)
if err != nil {
return Response(http.StatusInternalServerError, err), err
}
services := []ServiceItem{}
for _, api := range apis.Items {
parser := spec.NewParser(nil)

apiSpec, err := parser.ParseFromReader(strings.NewReader(api.Spec.Spec))

if err != nil {
return Response(http.StatusInternalServerError, nil), err
}

opts, err := spec.GetOptions(apiSpec)
if err != nil {
return Response(http.StatusInternalServerError, nil), err
toReturn := []ServiceItem{}
for _, svc := range services.Items {
anItem := ServiceItem{
Name: svc.Name,
Namespace: svc.Namespace,
ServiceType: string(svc.Spec.Type),
}

if opts.Upstream != nil && opts.Upstream.Service != nil {
svc, err := s.kuskClient.GetSvc(opts.Upstream.Service.Namespace, opts.Upstream.Service.Name)
status := "available"
if err != nil {
status = "unavailable"
}

ports := []ServicePortItem{}
for _, port := range svc.Spec.Ports {
ports = append(ports, ServicePortItem{
Port: port.Port,
Protocol: string(port.Protocol),
})
}

services = append(services, ServiceItem{
Name: opts.Upstream.Service.Name,
Namespace: opts.Upstream.Service.Namespace,
Status: status,
Ports: ports,
for _, p := range svc.Spec.Ports {
anItem.Ports = append(anItem.Ports, ServicePortItem{
Name: p.Name,
NodePort: p.NodePort,
Port: p.Port,
Protocol: string(p.Protocol),
TargetPort: p.TargetPort.StrVal,
})
}

toReturn = append(toReturn, anItem)
}
return Response(http.StatusOK, services), nil
return Response(http.StatusOK, toReturn), nil
}
12 changes: 12 additions & 0 deletions server/kusk/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ type Client interface {
DeleteStaticRoute(kuskv1.StaticRoute) error

GetSvc(namespace, name string) (*corev1.Service, error)
ListServices(namespace string) (*corev1.ServiceList, error)
ListNamespaces() (*corev1.NamespaceList, error)
}

Expand Down Expand Up @@ -148,6 +149,17 @@ func (k *kuskClient) GetSvc(namespace, name string) (*corev1.Service, error) {
return svc, nil
}

func (k *kuskClient) ListServices(namespace string) (*corev1.ServiceList, error) {
list := &corev1.ServiceList{}

if err := k.client.List(context.TODO(), list, &client.ListOptions{Namespace: namespace}); err != nil {
return nil, err
}

return list, nil

}

func (k *kuskClient) GetStaticRoute(namespace, name string) (*kuskv1.StaticRoute, error) {
staticRoute := &kuskv1.StaticRoute{}
if err := k.client.Get(context.TODO(), client.ObjectKey{Namespace: namespace, Name: name}, staticRoute); err != nil {
Expand Down
10 changes: 10 additions & 0 deletions server/kusk/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,16 @@ func TestGetSvc(t *testing.T) {
}
}

func TestListServices(t *testing.T) {
setup(t)
_, err := testClient.ListServices("default")
if err != nil {
t.Error(err)
t.Fail()
return
}
}

func TestCreateStaticRoute(t *testing.T) {
require := require.New(t)

Expand Down

0 comments on commit 71f6c89

Please sign in to comment.