Skip to content

Commit 5e940b8

Browse files
authored
Sent SDU to CanIUse rpc (#1383)
* feat: show warning when using DEFANG_PULUMI_DIR on Playground * feat: sent SDU to CanIUse rpc * Update src/pkg/cli/client/playground.go
1 parent 90e0edc commit 5e940b8

File tree

9 files changed

+971
-932
lines changed

9 files changed

+971
-932
lines changed

src/cmd/cli/command/cd.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ var cdDestroyCmd = &cobra.Command{
4646
return err
4747
}
4848

49-
err = canIUseProvider(cmd.Context(), provider, projectName)
49+
err = canIUseProvider(cmd.Context(), provider, projectName, 0)
5050
if err != nil {
5151
return err
5252
}
@@ -72,7 +72,7 @@ var cdDownCmd = &cobra.Command{
7272
return err
7373
}
7474

75-
err = canIUseProvider(cmd.Context(), provider, projectName)
75+
err = canIUseProvider(cmd.Context(), provider, projectName, 0)
7676
if err != nil {
7777
return err
7878
}
@@ -98,7 +98,7 @@ var cdRefreshCmd = &cobra.Command{
9898
return err
9999
}
100100

101-
err = canIUseProvider(cmd.Context(), provider, projectName)
101+
err = canIUseProvider(cmd.Context(), provider, projectName, 0)
102102
if err != nil {
103103
return err
104104
}
@@ -124,7 +124,7 @@ var cdCancelCmd = &cobra.Command{
124124
return err
125125
}
126126

127-
err = canIUseProvider(cmd.Context(), provider, projectName)
127+
err = canIUseProvider(cmd.Context(), provider, projectName, 0)
128128
if err != nil {
129129
return err
130130
}
@@ -164,7 +164,7 @@ var cdListCmd = &cobra.Command{
164164
}
165165

166166
if remote {
167-
err = canIUseProvider(cmd.Context(), provider, "")
167+
err = canIUseProvider(cmd.Context(), provider, "", 0)
168168
if err != nil {
169169
return err
170170
}
@@ -193,7 +193,7 @@ var cdPreviewCmd = &cobra.Command{
193193
return err
194194
}
195195

196-
err = canIUseProvider(cmd.Context(), provider, project.Name)
196+
err = canIUseProvider(cmd.Context(), provider, project.Name, 1) // 1 SDU for BYOC preview
197197
if err != nil {
198198
return err
199199
}

src/cmd/cli/command/commands.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@ var deleteCmd = &cobra.Command{
821821
return err
822822
}
823823

824-
err = canIUseProvider(cmd.Context(), provider, projectName)
824+
err = canIUseProvider(cmd.Context(), provider, projectName, 0)
825825
if err != nil {
826826
return err
827827
}
@@ -1121,10 +1121,11 @@ func newProvider(ctx context.Context, loader cliClient.Loader) (cliClient.Provid
11211121
return cli.NewProvider(ctx, providerID, client)
11221122
}
11231123

1124-
func canIUseProvider(ctx context.Context, provider cliClient.Provider, projectName string) error {
1124+
func canIUseProvider(ctx context.Context, provider cliClient.Provider, projectName string, serviceCount int) error {
11251125
canUseReq := defangv1.CanIUseRequest{
1126-
Project: projectName,
1127-
Provider: providerID.Value(),
1126+
Project: projectName,
1127+
Provider: providerID.Value(),
1128+
ServiceCount: int32(serviceCount), // #nosec G115 - service count will not overflow int32
11281129
}
11291130

11301131
resp, err := client.CanIUse(ctx, &canUseReq)

src/cmd/cli/command/commands_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ func TestGetProvider(t *testing.T) {
495495
t.Errorf("getProvider() failed: %v", err)
496496
}
497497

498-
err = canIUseProvider(ctx, p, "project")
498+
err = canIUseProvider(ctx, p, "project", 0)
499499
if err != nil {
500500
t.Errorf("CanIUseProvider() failed: %v", err)
501501
}
@@ -528,7 +528,7 @@ func TestGetProvider(t *testing.T) {
528528
t.Errorf("getProvider() failed: %v", err)
529529
}
530530

531-
err = canIUseProvider(ctx, p, "project")
531+
err = canIUseProvider(ctx, p, "project", 0)
532532
if err != nil {
533533
t.Errorf("CanIUseProvider() failed: %v", err)
534534
}

src/cmd/cli/command/compose.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func makeComposeUpCmd() *cobra.Command {
100100
}
101101

102102
// Check if the user has permission to use the provider
103-
err = canIUseProvider(ctx, provider, project.Name)
103+
err = canIUseProvider(ctx, provider, project.Name, len(project.Services))
104104
if err != nil {
105105
return err
106106
}
@@ -366,7 +366,7 @@ func makeComposeDownCmd() *cobra.Command {
366366
return err
367367
}
368368

369-
err = canIUseProvider(cmd.Context(), provider, projectName)
369+
err = canIUseProvider(cmd.Context(), provider, projectName, 0)
370370
if err != nil {
371371
return err
372372
}

src/pkg/cli/client/playground.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"errors"
66
"io"
7+
"os"
78

89
"github.com/DefangLabs/defang/src/pkg/term"
910
"github.com/DefangLabs/defang/src/pkg/types"
@@ -19,6 +20,9 @@ type PlaygroundProvider struct {
1920
var _ Provider = (*PlaygroundProvider)(nil)
2021

2122
func (g *PlaygroundProvider) Deploy(ctx context.Context, req *defangv1.DeployRequest) (*defangv1.DeployResponse, error) {
23+
if os.Getenv("DEFANG_PULUMI_DIR") != "" {
24+
return nil, errors.New("DEFANG_PULUMI_DIR is set, but not supported by the Playground provider")
25+
}
2226
return getMsg(g.GetController().Deploy(ctx, connect.NewRequest(req)))
2327
}
2428

src/pkg/mcp/tools/deploy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func setupDeployTool(s *server.MCPServer, cluster string, providerId cliClient.P
7575
return mcp.NewToolResultErrorFromErr("Failed to get new provider", err), err
7676
}
7777

78-
err = canIUseProvider(ctx, client, project.Name, provider)
78+
err = canIUseProvider(ctx, client, project.Name, provider, len(project.Services))
7979
if err != nil {
8080
term.Error("Failed to use provider", "error", err)
8181
return mcp.NewToolResultErrorFromErr("Failed to use provider", err), err

src/pkg/mcp/tools/destroy.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func setupDestroyTool(s *server.MCPServer, cluster string, providerId cliClient.
7070
return mcp.NewToolResultErrorFromErr("Failed to load project name", err), err
7171
}
7272

73-
err = canIUseProvider(ctx, client, projectName, provider)
73+
err = canIUseProvider(ctx, client, projectName, provider, 0)
7474
if err != nil {
7575
term.Error("Failed to use provider", "error", err)
7676
return mcp.NewToolResultErrorFromErr("Failed to use provider", err), err
@@ -97,15 +97,16 @@ func setupDestroyTool(s *server.MCPServer, cluster string, providerId cliClient.
9797
})
9898
}
9999

100-
func canIUseProvider(ctx context.Context, grpcClient cliClient.FabricClient, projectName string, provider cliClient.Provider) error {
100+
func canIUseProvider(ctx context.Context, grpcClient cliClient.FabricClient, projectName string, provider cliClient.Provider, serviceCount int) error {
101101
info, err := provider.AccountInfo(ctx)
102102
if err != nil {
103103
return err
104104
}
105105

106106
canUseReq := defangv1.CanIUseRequest{
107-
Project: projectName,
108-
Provider: info.Provider.Value(),
107+
Project: projectName,
108+
Provider: info.Provider.Value(),
109+
ServiceCount: int32(serviceCount), // #nosec G115 - service count will not overflow int32
109110
}
110111
term.Debug("Function invoked: client.CanIUse")
111112
resp, err := grpcClient.CanIUse(ctx, &canUseReq)

0 commit comments

Comments
 (0)