Skip to content

Commit 58c20ff

Browse files
committed
fix: validate gridNet in NewClient and add logging for state management
1 parent 1ba2e43 commit 58c20ff

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

backend/internal/deployment/kubedeployer/client.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package kubedeployer
22

33
import (
4+
"fmt"
45
"kubecloud/internal/infrastructure/gridclient"
56

67
sdktrace "go.opentelemetry.io/otel/sdk/trace"
@@ -12,10 +13,11 @@ type Client struct {
1213

1314
// NewClient creates a new Client instance
1415
func NewClient(mnemonic, gridNet string, debug bool, tp *sdktrace.TracerProvider) (*Client, error) {
15-
var opts []gridclient.ClientOpts
16-
if gridNet != "" {
17-
opts = append(opts, gridclient.WithNetwork(gridNet))
16+
if gridNet == "" {
17+
return nil, fmt.Errorf("gridNet is required and cannot be empty")
1818
}
19+
var opts []gridclient.ClientOpts
20+
opts = append(opts, gridclient.WithNetwork(gridNet))
1921
if debug {
2022
opts = append(opts, gridclient.WithDebug())
2123
}

backend/internal/deployment/statemanager/gridclient_state.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package statemanager
22

33
import (
44
"kubecloud/internal/deployment/kubedeployer"
5+
"kubecloud/internal/infrastructure/logger"
56

67
"github.com/xmonader/ewf"
78
)
@@ -10,12 +11,16 @@ const gridClientStateKey = "gridclient_state"
1011

1112
// SaveGridClientState saves the GridClient state to the workflow state
1213
func SaveGridClientState(workflowState ewf.State, kubeClient *kubedeployer.Client) {
14+
log := logger.ForOperation("statemanager", "save_gridclient_state")
15+
1316
if kubeClient == nil || kubeClient.GridClient == nil {
17+
log.Warn().Msg("kubeClient or GridClient is nil, skipping state save")
1418
return
1519
}
1620

1721
stateData, err := kubeClient.GridClient.GetState()
1822
if err != nil {
23+
log.Warn().Err(err).Msg("Failed to get GridClient state")
1924
return
2025
}
2126

backend/internal/infrastructure/gridclient/grid_client.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"kubecloud/internal/infrastructure/logger"
1212
"math"
1313
"net/http"
14+
"sync"
1415
"time"
1516

1617
"github.com/cosmos/go-bip39"
@@ -79,6 +80,7 @@ type GridClient interface {
7980
type gridClient struct {
8081
gridClient *deployer.TFPluginClient
8182
systemMnemonic string
83+
mu sync.RWMutex
8284
}
8385

8486
var _ GridClient = (*gridClient)(nil)

backend/internal/infrastructure/gridclient/grid_client_state.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ type gridClientState struct {
1515

1616
// GetState returns the current GridClient state as JSON bytes
1717
func (s *gridClient) GetState() ([]byte, error) {
18+
s.mu.RLock()
19+
defer s.mu.RUnlock()
20+
1821
if s.gridClient.State == nil {
1922
return nil, fmt.Errorf("gridclient state is nil")
2023
}
@@ -39,6 +42,9 @@ func (s *gridClient) GetState() ([]byte, error) {
3942

4043
// RestoreState restores the GridClient state from JSON bytes
4144
func (s *gridClient) RestoreState(stateData []byte) error {
45+
s.mu.Lock()
46+
defer s.mu.Unlock()
47+
4248
if s.gridClient.State == nil {
4349
return fmt.Errorf("gridclient state is nil")
4450
}

0 commit comments

Comments
 (0)