diff --git a/e2e/atlas_clusters_test.go b/e2e/atlas_clusters_test.go index fe5e95a047..e8f9d0efd4 100644 --- a/e2e/atlas_clusters_test.go +++ b/e2e/atlas_clusters_test.go @@ -142,11 +142,13 @@ func TestAtlasClusters(t *testing.T) { } }) + clusterFileName := fmt.Sprintf("e2e-cluster-%v", r.Uint32()) t.Run("Create via file", func(t *testing.T) { cmd := exec.Command(cliPath, atlasEntity, clustersEntity, "create", + clusterFileName, "--file=create_cluster_test.json") cmd.Env = os.Environ() resp, err := cmd.CombinedOutput() @@ -161,11 +163,34 @@ func TestAtlasClusters(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - ensureCluster(t, cluster, clusterName, "4.0", 10) + ensureCluster(t, cluster, clusterFileName, "4.0", 10) }) - t.Run("Delete", func(t *testing.T) { - cmd := exec.Command(cliPath, atlasEntity, clustersEntity, "delete", "TestMultiRegionCluster", "--force") + t.Run("Update via file", func(t *testing.T) { + cmd := exec.Command(cliPath, + atlasEntity, + clustersEntity, + "update", + clusterFileName, + "--file=update_cluster_test.json") + cmd.Env = os.Environ() + resp, err := cmd.CombinedOutput() + + if err != nil { + t.Fatalf("unexpected error: %v, resp: %v", err, string(resp)) + } + + cluster := new(mongodbatlas.Cluster) + err = json.Unmarshal(resp, cluster) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + ensureCluster(t, cluster, clusterFileName, "4.0", 25) + }) + + t.Run("Delete file creation", func(t *testing.T) { + cmd := exec.Command(cliPath, atlasEntity, clustersEntity, "delete", clusterFileName, "--force") cmd.Env = os.Environ() resp, err := cmd.CombinedOutput() @@ -173,7 +198,7 @@ func TestAtlasClusters(t *testing.T) { t.Fatalf("unexpected error: %v, resp: %v", err, string(resp)) } - expected := fmt.Sprintf("Cluster '%s' deleted\n", "TestMultiRegionCluster") + expected := fmt.Sprintf("Cluster '%s' deleted\n", clusterFileName) if string(resp) != expected { t.Errorf("got=%#v\nwant=%#v\n", string(resp), expected) } diff --git a/e2e/create_cluster_test.json b/e2e/create_cluster_test.json index c92199f1e6..d220dab185 100644 --- a/e2e/create_cluster_test.json +++ b/e2e/create_cluster_test.json @@ -1,6 +1,5 @@ { - "name": "TestMultiRegionCluster", - "diskSizeGB": 25, + "diskSizeGB": 10, "numShards": 1, "providerSettings": { "providerName": "GCP", @@ -31,5 +30,5 @@ }, "zoneName" : "Zone 1" } ], - "backupEnabled": true + "backupEnabled": false } diff --git a/e2e/update_cluster_test.json b/e2e/update_cluster_test.json new file mode 100644 index 0000000000..3fbeb2dc1d --- /dev/null +++ b/e2e/update_cluster_test.json @@ -0,0 +1,3 @@ +{ + "diskSizeGB": 25 +} diff --git a/internal/cli/atlas_clusters_create.go b/internal/cli/atlas_clusters_create.go index 77c4e5d05f..a200e32f7b 100644 --- a/internal/cli/atlas_clusters_create.go +++ b/internal/cli/atlas_clusters_create.go @@ -82,6 +82,11 @@ func (opts *atlasClustersCreateOpts) newCluster() (*atlas.Cluster, error) { cluster.ClusterType = replicaSet opts.applyOpts(cluster) } + + if opts.name != "" { + cluster.Name = opts.name + } + cluster.GroupID = opts.ProjectID() return cluster, nil } @@ -91,7 +96,6 @@ func (opts *atlasClustersCreateOpts) applyOpts(out *atlas.Cluster) { out.BackupEnabled = &opts.backup out.DiskSizeGB = &opts.diskSizeGB out.MongoDBMajorVersion = opts.mdbVersion - out.Name = opts.name out.ProviderSettings = opts.newProviderSettings() out.ReplicationSpecs = []atlas.ReplicationSpec{replicationSpec} } @@ -159,6 +163,8 @@ func AtlasClustersCreateBuilder() *cobra.Command { if len(args) == 0 { return errMissingClusterName } + } + if len(args) != 0 { opts.name = args[0] } return opts.init() diff --git a/internal/cli/atlas_clusters_update.go b/internal/cli/atlas_clusters_update.go index 419319686c..258afae043 100644 --- a/internal/cli/atlas_clusters_update.go +++ b/internal/cli/atlas_clusters_update.go @@ -71,6 +71,9 @@ func (opts *atlasClustersUpdateOpts) cluster() (*atlas.Cluster, error) { if opts.filename != "" { cluster = new(atlas.Cluster) err = file.Load(opts.fs, opts.filename, cluster) + if opts.name != "" { + cluster.Name = opts.name + } } else { cluster, err = opts.store.Cluster(opts.projectID, opts.name) } @@ -112,10 +115,10 @@ func AtlasClustersUpdateBuilder() *cobra.Command { Example: ` mongocli atlas cluster update myCluster --projectId=1 --instanceSize M2 --mdbVersion 4.2 --diskSizeGB 2`, Args: cobra.MaximumNArgs(1), PreRunE: func(cmd *cobra.Command, args []string) error { - if opts.filename == "" { - if len(args) == 0 { - return errMissingClusterName - } + if opts.filename == "" && len(args) == 0 { + return errMissingClusterName + } + if len(args) != 0 { opts.name = args[0] } return opts.init()