Skip to content

Commit 33b9212

Browse files
committed
chore: improve logging with get cluster
Signed-off-by: Eoghan Lawless <[email protected]>
1 parent 000a4c2 commit 33b9212

File tree

5 files changed

+33
-29
lines changed

5 files changed

+33
-29
lines changed

internal/cluster/cluster.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,36 @@ const (
1818
roleAll = "all"
1919
)
2020

21-
func Nodes(ctx context.Context, cli *k8s.Client, cluster *capi.Cluster) ([]api.NodeInfo, error) {
21+
func GetNodes(ctx context.Context, cli *k8s.Client, cluster *capi.Cluster) ([]api.NodeInfo, error) {
2222
nodes := []api.NodeInfo{}
2323

24-
machines, err := cli.Machines(ctx, cluster.Namespace, cluster.Name)
24+
machines, err := cli.GetMachines(ctx, cluster.Namespace, cluster.Name)
2525
if err != nil {
2626
return nodes, err
2727
}
2828

2929
for _, m := range machines {
30-
id, err := nodeId(ctx, cli, m)
30+
id, err := getNodeId(ctx, cli, m)
3131
if err != nil {
3232
return nodes, err
3333
}
3434
role := nodeRole(m)
35-
status := nodeStatus(m)
35+
status := getNodeStatus(m)
3636
nodes = append(nodes, api.NodeInfo{Id: &id, Role: &role, Status: &status})
3737
}
3838

3939
return nodes, nil
4040
}
4141

42-
func Template(c *capi.Cluster) string {
42+
func GetTemplate(c *capi.Cluster) string {
4343
if c == nil || c.Spec.Topology == nil {
4444
return ""
4545
}
4646

4747
return c.Spec.Topology.Class
4848
}
4949

50-
func nodeStatus(machine capi.Machine) api.StatusInfo {
50+
func getNodeStatus(machine capi.Machine) api.StatusInfo {
5151
translate := map[capi.MachinePhase]api.StatusInfoCondition{
5252
// MachinePhasePending is the first state a Machine is assigned by Cluster API Machine controller after being created.
5353
capi.MachinePhasePending: api.STATUSCONDITIONPROVISIONING,
@@ -77,7 +77,7 @@ func nodeStatus(machine capi.Machine) api.StatusInfo {
7777
return status
7878
}
7979

80-
func nodeId(ctx context.Context, cli *k8s.Client, machine capi.Machine) (string, error) {
80+
func getNodeId(ctx context.Context, cli *k8s.Client, machine capi.Machine) (string, error) {
8181
providerMachineName := machine.Spec.InfrastructureRef.Name
8282
providerMachineKind := machine.Spec.InfrastructureRef.Kind
8383
switch providerMachineKind {

internal/cluster/cluster_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func TestNodes(t *testing.T) {
9393
assert.NoError(t, err)
9494

9595
// test
96-
nodes, err := cluster.Nodes(context.Background(), cli, c)
96+
nodes, err := cluster.GetNodes(context.Background(), cli, c)
9797
assert.NoError(t, err)
9898
if diff := cmp.Diff(nodes, expectedNode); diff != "" {
9999
t.Errorf("Nodes() mismatch (-want +got):\n%s", diff)
@@ -104,7 +104,7 @@ func TestTemplate(t *testing.T) {
104104
expectedTemplate := "test-template"
105105
c := &capi.Cluster{Spec: capi.ClusterSpec{Topology: &capi.Topology{Class: expectedTemplate}}}
106106

107-
template := cluster.Template(c)
107+
template := cluster.GetTemplate(c)
108108
if template != expectedTemplate {
109109
t.Errorf("Expected %s, got %s", expectedTemplate, template)
110110
}

internal/k8s/client.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,8 @@ func (cli *Client) Template(ctx context.Context, namespace, name string) (ct.Clu
351351
return template, nil
352352
}
353353

354-
// Cluster returns the cluster with the given name in the given namespace
355-
func (cli *Client) Cluster(ctx context.Context, namespace, name string) (*capi.Cluster, error) {
354+
// GetCluster returns the cluster with the given name in the given namespace
355+
func (cli *Client) GetCluster(ctx context.Context, namespace, name string) (*capi.Cluster, error) {
356356
var cluster capi.Cluster
357357

358358
unstructuredCluster, err := cli.Dyn.Resource(clusterResourceSchema).Namespace(namespace).Get(ctx, name, metav1.GetOptions{})
@@ -371,8 +371,8 @@ func (cli *Client) Cluster(ctx context.Context, namespace, name string) (*capi.C
371371
return &cluster, nil
372372
}
373373

374-
// Machines returns the machine with the given name in the given namespace for the given cluster
375-
func (cli *Client) Machines(ctx context.Context, namespace, clusterName string) ([]capi.Machine, error) {
374+
// GetMachines returns the machine with the given name in the given namespace for the given cluster
375+
func (cli *Client) GetMachines(ctx context.Context, namespace, clusterName string) ([]capi.Machine, error) {
376376
var machines []capi.Machine
377377

378378
opts := metav1.ListOptions{LabelSelector: fmt.Sprintf("cluster.x-k8s.io/cluster-name=%v", clusterName)}

internal/rest/getv2clustersname.go

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ package rest
55
import (
66
"context"
77
"errors"
8+
"fmt"
89
"log/slog"
910
"regexp"
11+
"strings"
1012

1113
"github.com/open-edge-platform/cluster-manager/v2/internal/cluster"
1214
"github.com/open-edge-platform/cluster-manager/v2/internal/convert"
@@ -52,19 +54,17 @@ func (s *Server) GetV2ClustersName(ctx context.Context, request api.GetV2Cluster
5254

5355
cluster, err := s.getCluster(ctx, activeProjectID, name)
5456
if err != nil {
55-
errMsg := err.Error()
56-
if err.Error() == "cluster not found" {
57-
slog.Warn("cluster not found", "name", name)
57+
if strings.Contains(err.Error(), k8s.ErrClusterNotFound.Error()) {
5858
return api.GetV2ClustersName404JSONResponse{
5959
N404NotFoundJSONResponse: api.N404NotFoundJSONResponse{
60-
Message: &errMsg,
60+
Message: ptr(err.Error()),
6161
},
6262
}, nil
6363
}
6464
slog.Error("failed to get cluster", "name", name, "error", err)
6565
return api.GetV2ClustersName500JSONResponse{
6666
N500InternalServerErrorJSONResponse: api.N500InternalServerErrorJSONResponse{
67-
Message: &errMsg,
67+
Message: ptr(err.Error()),
6868
},
6969
}, nil
7070
}
@@ -78,38 +78,41 @@ func (s *Server) getCluster(ctx context.Context, activeProjectID, name string) (
7878

7979
cli, err := k8s.New(k8s.WithDynamicClient(s.k8sclient))
8080
if err != nil {
81-
return api.ClusterDetailInfo{}, errors.New("internal server error")
81+
slog.Error("failed to create k8s client", "error", err)
82+
return api.ClusterDetailInfo{}, fmt.Errorf("failed to create k8s client, err: %w", err)
8283
}
8384

84-
capiCluster, err := cli.Cluster(ctx, namespace, name)
85+
capiCluster, err := cli.GetCluster(ctx, namespace, name)
8586
if err != nil {
86-
if err == k8s.ErrClusterNotFound {
87-
return api.ClusterDetailInfo{}, errors.New("cluster not found")
88-
}
89-
return api.ClusterDetailInfo{}, errors.New("internal server error")
87+
slog.Error("failed to get cluster", "name", name, "error", err)
88+
return api.ClusterDetailInfo{}, fmt.Errorf("failed to get cluster, err: %w", err)
9089
}
9190
if capiCluster.Name == "" {
9291
return api.ClusterDetailInfo{}, errors.New("missing cluster name")
9392
}
93+
9494
// get machines associated with the cluster
9595
machines, err := fetchMachinesList(ctx, s, namespace, capiCluster.Name)
9696
if err != nil {
97+
// do we need to return error here?
9798
slog.Error("failed to fetch machines for cluster", "cluster", capiCluster.Name, "error", err)
9899
}
99100

100101
labels := labels.Filter(capiCluster.Labels)
101102
unstrucutreLabels := convert.MapStringToAny(labels)
102103

103-
nodes, err := cluster.Nodes(ctx, cli, capiCluster)
104+
nodes, err := cluster.GetNodes(ctx, cli, capiCluster)
104105
if err != nil {
105-
return api.ClusterDetailInfo{}, err
106+
slog.Error("failed to get nodes", "cluster", capiCluster.Name, "error", err)
107+
return api.ClusterDetailInfo{}, fmt.Errorf("failed to get nodes, err: %w", err)
106108
}
107109

108-
template := cluster.Template(capiCluster)
110+
template := cluster.GetTemplate(capiCluster)
109111
lp, errs := getClusterLifecyclePhase(capiCluster)
110112
if len(errs) > 0 {
111113
slog.Debug("errors while building cluster lifecycle phase", "cluster", capiCluster.Name, "errors", errs)
112114
}
115+
113116
clusterDetailInfo := api.ClusterDetailInfo{
114117
Name: &capiCluster.Name,
115118
ProviderStatus: getProviderStatus(capiCluster),
@@ -124,7 +127,8 @@ func (s *Server) getCluster(ctx context.Context, activeProjectID, name string) (
124127
}
125128

126129
if err := validateClusterDetail(clusterDetailInfo); err != nil {
127-
return api.ClusterDetailInfo{}, errors.New("internal server error")
130+
slog.Error("failed to validate cluster detail", "cluster", capiCluster.Name, "error", err)
131+
return api.ClusterDetailInfo{}, fmt.Errorf("failed to validate cluster detail, err: %w", err)
128132
}
129133

130134
return clusterDetailInfo, nil

internal/rest/getv2clustersname_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ func TestGetV2ClustersName404(t *testing.T) {
379379
// check the response type and message
380380
resp, ok := response.(api.GetV2ClustersName404JSONResponse)
381381
require.True(t, ok, "GetV2ClustersName() response type = %T, want api.GetV2ClustersName404JSONResponse", response)
382-
require.Equal(t, "cluster not found", *resp.N404NotFoundJSONResponse.Message, "GetV2ClustersName() message = %v, want %v", *resp.N404NotFoundJSONResponse.Message, "cluster not found")
382+
require.Equal(t, "failed to get cluster, err: cluster not found", *resp.N404NotFoundJSONResponse.Message, "GetV2ClustersName() message = %v, want %v", *resp.N404NotFoundJSONResponse.Message, "cluster not found")
383383
})
384384
}
385385

0 commit comments

Comments
 (0)