Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 18 additions & 4 deletions app/namespace.go
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,20 @@ func (c *NamespaceClient) getNamespaceCloudApi(namespace string) (*cloudNamespac
return res.Namespace, nil
}

func (c *NamespaceClient) getNamespaceCapacityInfoCloudApi(namespace string) (*cloudNamespace.NamespaceCapacityInfo, error) {
res, err := c.cloudAPIClient.GetNamespaceCapacityInfo(c.ctx, &cloudservice.GetNamespaceCapacityInfoRequest{
Namespace: namespace,
})
if err != nil {
return nil, err
}
if res.GetCapacityInfo() == nil || res.GetCapacityInfo().Namespace == "" {
// this should never happen, the server should return an error when the namespace capacity info is not found or invalid
return nil, fmt.Errorf("invalid namespace capacity info returned by server")
}
return res.CapacityInfo, nil
}

// TODO: deprecate this and use getNamespaceCloudApi everywhere
func (c *NamespaceClient) getNamespace(namespace string) (*namespace.Namespace, error) {
res, err := c.client.GetNamespace(c.ctx, &namespaceservice.GetNamespaceRequest{
Expand Down Expand Up @@ -1912,22 +1926,22 @@ func NewNamespaceCommand(getNamespaceClientFn GetNamespaceClientFn) (CommandOut,
},
{
Name: "capacity",
Usage: "Manage namespace capacity settings",
Usage: "Manage namespace capacity",
Aliases: []string{"cap"},
Subcommands: []*cli.Command{
{
Name: "get",
Usage: "Get namespace capacity settings",
Usage: "Get namespace capacity information",
Aliases: []string{"g"},
Flags: []cli.Flag{
NamespaceFlag,
},
Action: func(ctx *cli.Context) error {
n, err := c.getNamespaceCloudApi(ctx.String(NamespaceFlagName))
capacityInfo, err := c.getNamespaceCapacityInfoCloudApi(ctx.String(NamespaceFlagName))
if err != nil {
return err
}
return PrintProto(n.GetCapacity())
return PrintProto(capacityInfo)
},
},
{
Expand Down
35 changes: 28 additions & 7 deletions app/namespace_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3302,16 +3302,17 @@ func (s *NamespaceTestSuite) TestGetNamespaceCapacity() {
expectErr bool
}{
{
name: "get namespace capacity - success",
name: "get namespace capacity - provisioned mode",
args: []string{"namespace", "capacity", "get", "--namespace", "ns1"},
mock: func() {
s.mockCloudApiClient.EXPECT().
GetNamespace(gomock.Any(), &cloudservice.GetNamespaceRequest{
GetNamespaceCapacityInfo(gomock.Any(), &cloudservice.GetNamespaceCapacityInfoRequest{
Namespace: "ns1",
}).Return(&cloudservice.GetNamespaceResponse{
Namespace: &cloudNamespace.Namespace{
Namespace: "ns1",
Capacity: &cloudNamespace.Capacity{
}).Return(&cloudservice.GetNamespaceCapacityInfoResponse{
CapacityInfo: &cloudNamespace.NamespaceCapacityInfo{
Namespace: "ns1",
HasLegacyLimits: false,
CurrentCapacity: &cloudNamespace.Capacity{
CurrentMode: &cloudNamespace.Capacity_Provisioned_{
Provisioned: &cloudNamespace.Capacity_Provisioned{
CurrentValue: 16.0,
Expand All @@ -3322,13 +3323,33 @@ func (s *NamespaceTestSuite) TestGetNamespaceCapacity() {
}, nil).Times(1)
},
},
{
name: "get namespace capacity - on demand mode",
args: []string{"namespace", "capacity", "get", "--namespace", "ns2"},
mock: func() {
s.mockCloudApiClient.EXPECT().
GetNamespaceCapacityInfo(gomock.Any(), &cloudservice.GetNamespaceCapacityInfoRequest{
Namespace: "ns2",
}).Return(&cloudservice.GetNamespaceCapacityInfoResponse{
CapacityInfo: &cloudNamespace.NamespaceCapacityInfo{
Namespace: "ns2",
HasLegacyLimits: false,
CurrentCapacity: &cloudNamespace.Capacity{
CurrentMode: &cloudNamespace.Capacity_OnDemand_{
OnDemand: &cloudNamespace.Capacity_OnDemand{},
},
},
},
}, nil).Times(1)
},
},
{
name: "get namespace capacity - fail",
args: []string{"namespace", "capacity", "get", "--namespace", "ns1"},
expectErr: true,
mock: func() {
s.mockCloudApiClient.EXPECT().
GetNamespace(gomock.Any(), &cloudservice.GetNamespaceRequest{
GetNamespaceCapacityInfo(gomock.Any(), &cloudservice.GetNamespaceCapacityInfoRequest{
Namespace: "ns1",
}).Return(nil, errors.New("some error")).Times(1)
},
Expand Down