diff --git a/internal/cmd/cluster/create.go b/internal/cmd/cluster/create.go index d7bf717..f05cbc5 100644 --- a/internal/cmd/cluster/create.go +++ b/internal/cmd/cluster/create.go @@ -144,6 +144,7 @@ qcloud cluster create --cloud-provider hybrid --cloud-region my-env --cpu 4 --ra cloudProvider, &cloudRegion, packageValue, + multiAz, ) if err != nil { return nil, err diff --git a/internal/cmd/cluster/create_test.go b/internal/cmd/cluster/create_test.go index 573b3e4..db2c03a 100644 --- a/internal/cmd/cluster/create_test.go +++ b/internal/cmd/cluster/create_test.go @@ -234,6 +234,38 @@ func TestCreateCluster_PackageByName(t *testing.T) { assert.Equal(t, "pkg-uuid-123", req.GetCluster().GetConfiguration().GetPackageId()) } +func TestCreateCluster_PackageByNameMultiAZ(t *testing.T) { + env := testutil.NewTestEnv(t) + + env.BookingServer.ListPackagesCalls.Returns(&bookingv1.ListPackagesResponse{ + Items: []*bookingv1.Package{ + {Id: "pkg-multiaz", Name: "starter", MultiAz: true}, + }, + }, nil) + env.Server.CreateClusterCalls.Returns(&clusterv1.CreateClusterResponse{ + Cluster: &clusterv1.Cluster{Id: "cluster-named-multiaz-pkg"}, + }, nil) + + _, _, err := testutil.Exec(t, env, + "cluster", "create", + "--name", "my-cluster", + "--cloud-provider", "aws", + "--cloud-region", "us-east-1", + "--package", "starter", + "--multi-az", + ) + require.NoError(t, err) + + req, ok := env.Server.CreateClusterCalls.Last() + require.True(t, ok) + assert.Equal(t, "pkg-multiaz", req.GetCluster().GetConfiguration().GetPackageId()) + + listReq, ok := env.BookingServer.ListPackagesCalls.Last() + require.True(t, ok) + require.NotNil(t, listReq.MultiAz) + assert.True(t, *listReq.MultiAz) +} + func TestCreateCluster_PackageNameNotFound(t *testing.T) { env := testutil.NewTestEnv(t) diff --git a/internal/cmd/clusterutil/resolve.go b/internal/cmd/clusterutil/resolve.go index 555d789..a54f81d 100644 --- a/internal/cmd/clusterutil/resolve.go +++ b/internal/cmd/clusterutil/resolve.go @@ -112,13 +112,19 @@ func ResolvePackageByName( accountID, cloudProvider string, cloudRegion *string, name string, + multiAz bool, ) (*bookingv1.Package, error) { - resp, err := booking.ListPackages(ctx, &bookingv1.ListPackagesRequest{ + req := &bookingv1.ListPackagesRequest{ AccountId: accountID, CloudProviderId: cloudProvider, CloudProviderRegionId: cloudRegion, Statuses: []bookingv1.PackageStatus{bookingv1.PackageStatus_PACKAGE_STATUS_ACTIVE}, - }) + } + if multiAz { + req.MultiAz = new(true) + } + + resp, err := booking.ListPackages(ctx, req) if err != nil { return nil, fmt.Errorf("failed to list packages: %w", err) }