diff --git a/pkg/apis/pravega/v1beta1/pravega.go b/pkg/apis/pravega/v1beta1/pravega.go index e2bf0ef7e..d7c234f36 100644 --- a/pkg/apis/pravega/v1beta1/pravega.go +++ b/pkg/apis/pravega/v1beta1/pravega.go @@ -383,6 +383,21 @@ func (s *PravegaSpec) withDefaults() (changed bool) { s.Options = map[string]string{} } + if s.Options["bookkeeper.ensemble.size"] == "" { + changed = true + s.Options["bookkeeper.ensemble.size"] = "3" + } + + if s.Options["bookkeeper.write.quorum.size"] == "" { + changed = true + s.Options["bookkeeper.write.quorum.size"] = "3" + } + + if s.Options["bookkeeper.ack.quorum.size"] == "" { + changed = true + s.Options["bookkeeper.ack.quorum.size"] = "3" + } + if s.ControllerJvmOptions == nil { changed = true s.ControllerJvmOptions = []string{} diff --git a/pkg/apis/pravega/v1beta1/pravegacluster_types.go b/pkg/apis/pravega/v1beta1/pravegacluster_types.go index 8f9332e79..e47ee2f78 100644 --- a/pkg/apis/pravega/v1beta1/pravegacluster_types.go +++ b/pkg/apis/pravega/v1beta1/pravegacluster_types.go @@ -905,6 +905,10 @@ func (p *PravegaCluster) ValidateCreate() error { if err != nil { return err } + err = p.ValidateBookkeperSettings() + if err != nil { + return err + } return nil } @@ -923,6 +927,10 @@ func (p *PravegaCluster) ValidateUpdate(old runtime.Object) error { if err != nil { return err } + err = p.ValidateBookkeperSettings() + if err != nil { + return err + } return nil } @@ -1296,6 +1304,72 @@ func (p *PravegaCluster) ValidateSegmentStoreMemorySettings() error { return nil } +// ValidateBookkeeperSettings checks that the value passed for the options bookkeeper.ensemble.size (E) bookkeeper.write.quorum.size (W) +// and bookkeeper.ack.quorum.size (A) adheres to the following rule, E >= W >= A. +// The method also checks for the option bookkeeper.write.quorum.racks.minimumCount.enable which should be set to false when bookkeeper.ensemble.size is 1. +// Note: The default value of E , W and A is 3. +func (p *PravegaCluster) ValidateBookkeperSettings() error { + // Intializing ensemble size, write quorum size and ack quorum size to default value of 3 + ensembleSizeInt, writeQuorumSizeInt, ackQuorumSizeInt := 3, 3, 3 + var err error + + ensembleSize := p.Spec.Pravega.Options["bookkeeper.ensemble.size"] + writeQuorumSize := p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] + ackQuorumSize := p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] + writeQuorumRacks := p.Spec.Pravega.Options["bookkeeper.write.quorum.racks.minimumCount.enable"] + + if len(ensembleSize) > 0 { + ensembleSizeInt, err = strconv.Atoi(ensembleSize) + if err != nil { + return fmt.Errorf("Cannot convert ensemble size from string to integer: %v", err) + } + } + + if len(writeQuorumSize) > 0 { + writeQuorumSizeInt, err = strconv.Atoi(writeQuorumSize) + if err != nil { + return fmt.Errorf("Cannot convert write quorum size from string to integer: %v", err) + } + } + + if len(ackQuorumSize) > 0 { + ackQuorumSizeInt, err = strconv.Atoi(ackQuorumSize) + if err != nil { + return fmt.Errorf("Cannot convert ack quorum size from string to integer: %v", err) + } + } + + if writeQuorumRacks != "true" && writeQuorumRacks != "false" && writeQuorumRacks != "" { + return fmt.Errorf("bookkeeper.write.quorum.racks.minimumCount.enable can be only set to \"true\" \"false\" or \"\"") + } + + if writeQuorumRacks == "true" && ensembleSizeInt == 1 { + return fmt.Errorf("bookkeeper.write.quorum.racks.minimumCount.enable should be set to false if bookkeeper.ensemble.size is 1") + } + + if ensembleSizeInt < writeQuorumSizeInt { + if ensembleSize == "" { + return fmt.Errorf("The value provided for the option bookkeeper.write.quorum.size should be less than or equal to the value of option bookkeeper.ensemble.size (default is 3)") + } + if writeQuorumSize == "" { + return fmt.Errorf("The value provided for the option bookkeeper.ensemble.size should be greater than or equal to the value of option bookkeeper.write.quorum.size (default is 3)") + } + return fmt.Errorf("The value provided for the option bookkeeper.write.quorum.size should be less than or equal to the value of option bookkeeper.ensemble.size") + } + + if writeQuorumSizeInt < ackQuorumSizeInt { + if writeQuorumSize == "" { + return fmt.Errorf("The value provided for the option bookkeeper.ack.quorum.size should be less than or equal to the value of option bookkeeper.write.quorum.size (default is 3)") + } + if ackQuorumSize == "" { + return fmt.Errorf("The value provided for the option bookkeeper.write.quorum.size should be greater than or equal to the value of option bookkeeper.ack.quorum.size (default is 3)") + } + return fmt.Errorf("The value provided for the option bookkeeper.ack.quorum.size should be less than or equal to the value of option bookkeeper.write.quorum.size") + } + + return nil +} + //to return name of segmentstore based on the version func (p *PravegaCluster) StatefulSetNameForSegmentstore() string { if util.IsVersionBelow(p.Spec.Version, "0.7.0") { diff --git a/pkg/apis/pravega/v1beta1/pravegacluster_types_test.go b/pkg/apis/pravega/v1beta1/pravegacluster_types_test.go index 8563727aa..02a2eef4b 100644 --- a/pkg/apis/pravega/v1beta1/pravegacluster_types_test.go +++ b/pkg/apis/pravega/v1beta1/pravegacluster_types_test.go @@ -857,4 +857,216 @@ var _ = Describe("PravegaCluster Types Spec", func() { }) }) }) + + Context("Validate Bookie Settings", func() { + var ( + p *v1beta1.PravegaCluster + ) + + BeforeEach(func() { + p = &v1beta1.PravegaCluster{ + ObjectMeta: metav1.ObjectMeta{ + Name: "default", + }, + } + p.WithDefaults() + }) + + Context("Validating with correct values for Ensemble Size, Write Quorum size and Ack quorum size", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "3" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + err = p.ValidateBookkeperSettings() + }) + + It("Should return nil", func() { + Ω(err).Should(BeNil()) + }) + }) + + Context("Invalid Value for Enseble size", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3.4" + err = p.ValidateBookkeperSettings() + }) + + It("Should return error", func() { + Ω(strings.ContainsAny(err.Error(), "Cannot convert ensemble size from string to integer")).Should(Equal(true)) + }) + }) + + Context("Invalid Value for Write Quorum size", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "3##4" + err = p.ValidateBookkeperSettings() + }) + + It("Should return error", func() { + Ω(strings.ContainsAny(err.Error(), "Cannot convert write quorum size from string to integer")).Should(Equal(true)) + }) + }) + + Context("Invalid Value for Ack Quorum size", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "2!342" + err = p.ValidateBookkeperSettings() + }) + + It("Should return error", func() { + Ω(strings.ContainsAny(err.Error(), "Cannot convert ack quorum size from string to integer")).Should(Equal(true)) + }) + }) + + Context("Validating with Ensemble Size < Write Quorum Size", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "4" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "The value provided for the option bookkeeper.write.quorum.size should be less than or equal to the value of option bookkeeper.ensemble.size")).Should(Equal(true)) + }) + }) + + Context("Validating with Ensemble size <=2 and Write quorum size is set to default", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "2" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "The value provided for the option bookkeeper.ensemble.size should be greater than or equal to the value of option bookkeeper.write.quorum.size (default is 3)")).Should(Equal(true)) + }) + }) + + Context("Validating with Write quorum size > 3 and Ensemble size is set to default", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "4" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "The value provided for the option bookkeeper.write.quorum.size should be less than or equal to the value of option bookkeeper.ensemble.size (default is 3)")).Should(Equal(true)) + }) + }) + + Context("Validating whether minimum racks count is set to true false or \"\"", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.write.quorum.racks.minimumCount.enable"] = "True" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "bookkeeper.write.quorum.racks.minimumCount.enable can be only set to \"true\" \"false\" or \"\"")).Should(Equal(true)) + }) + }) + + Context("Validating with Enseble Size set to 1 and minimum count enabled is set to true", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "1" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "" + p.Spec.Pravega.Options["bookkeeper.write.quorum.racks.minimumCount.enable"] = "true" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "bookkeeper.write.quorum.racks.minimumCount.enable should be set to false if bookkeeper.ensemble.size is 1")).Should(Equal(true)) + }) + }) + + Context("Validating with Write quorum size < Acq quorum size", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "4" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "4" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "5" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "The value provided for the option bookkeeper.ack.quorum.size should be less than or equal to the value of option bookkeeper.write.quorum.size")).Should(Equal(true)) + }) + }) + + Context("Validating with Write quorum size <=2 and Acq quorum size is set to default", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "2" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "The value provided for the option bookkeeper.write.quorum.size should be greater than or equal to the value of option bookkeeper.ack.quorum.size (default is 3)")).Should(Equal(true)) + }) + }) + + Context("Validating with Ack quorum size > 3 and Write quorum size is set to default", func() { + var ( + err error + ) + + BeforeEach(func() { + p.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + p.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "" + p.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "4" + err = p.ValidateBookkeperSettings() + }) + + It("should return error", func() { + Ω(strings.ContainsAny(err.Error(), "The value provided for the option bookkeeper.ack.quorum.size should be less than or equal to the value of option bookkeeper.write.quorum.size (default is 3)")).Should(Equal(true)) + }) + }) + }) }) diff --git a/test/e2e/webhook_test.go b/test/e2e/webhook_test.go index b88c76d42..01520b452 100644 --- a/test/e2e/webhook_test.go +++ b/test/e2e/webhook_test.go @@ -171,6 +171,115 @@ func testWebhook(t *testing.T) { err = pravega_e2eutil.DeletePravegaCluster(t, f, ctx, pravega) g.Expect(err).NotTo(HaveOccurred()) + err = pravega_e2eutil.WaitForPravegaClusterToTerminate(t, f, ctx, pravega) + g.Expect(err).NotTo(HaveOccurred()) + + //creating the setup for running the bookkeeper validation check + err = pravega_e2eutil.InitialSetup(t, f, ctx, namespace) + g.Expect(err).NotTo(HaveOccurred()) + + invalidEnsembleSize := pravega_e2eutil.NewDefaultCluster(namespace) + invalidEnsembleSize.WithDefaults() + invalidEnsembleSize.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3.4" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, invalidEnsembleSize) + g.Expect(err).To(HaveOccurred(), "Invalid value for option bookkeeper.ensemble.size") + g.Expect(err.Error()).To(ContainSubstring("Cannot convert ensemble size from string to integer")) + + invalidWriteQuorumSize := pravega_e2eutil.NewDefaultCluster(namespace) + invalidWriteQuorumSize.WithDefaults() + invalidWriteQuorumSize.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "3!4!" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, invalidWriteQuorumSize) + g.Expect(err).To(HaveOccurred(), "Invalid value for option bookkeeper.write.quorum.size") + g.Expect(err.Error()).To(ContainSubstring("Cannot convert write quorum size from string to integer")) + + invalidAckQuorumSize := pravega_e2eutil.NewDefaultCluster(namespace) + invalidAckQuorumSize.WithDefaults() + invalidAckQuorumSize.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "!44" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, invalidAckQuorumSize) + g.Expect(err).To(HaveOccurred(), "Invalid value for option bookkeeper.ack.quorum.size") + g.Expect(err.Error()).To(ContainSubstring("Cannot convert ack quorum size from string to integer")) + + invalidMinimumRacksCountEnable := pravega_e2eutil.NewDefaultCluster(namespace) + invalidMinimumRacksCountEnable.WithDefaults() + invalidMinimumRacksCountEnable.Spec.Pravega.Options["bookkeeper.write.quorum.racks.minimumCount.enable"] = "True" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, invalidMinimumRacksCountEnable) + g.Expect(err).To(HaveOccurred(), "Invalid value for option bookkeeper.write.quorum.racks.minimumCount.enable") + g.Expect(err.Error()).To(ContainSubstring("bookkeeper.write.quorum.racks.minimumCount.enable can be only set to \"true\" \"false\" or \"\"")) + + ensembleSizeToOneAndRacksMinimumCountToTrue := pravega_e2eutil.NewDefaultCluster(namespace) + ensembleSizeToOneAndRacksMinimumCountToTrue.WithDefaults() + ensembleSizeToOneAndRacksMinimumCountToTrue.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "1" + ensembleSizeToOneAndRacksMinimumCountToTrue.Spec.Pravega.Options["bookkeeper.write.quorum.racks.minimumCount.enable"] = "true" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, ensembleSizeToOneAndRacksMinimumCountToTrue) + g.Expect(err).To(HaveOccurred(), "Minimum Racks count should not be set to true when ensemble size is 1") + g.Expect(err.Error()).To(ContainSubstring("bookkeeper.write.quorum.racks.minimumCount.enable should be set to false if bookkeeper.ensemble.size is 1")) + + ensembleSizeLessThanWriteQuorumSize := pravega_e2eutil.NewDefaultCluster(namespace) + ensembleSizeLessThanWriteQuorumSize.WithDefaults() + ensembleSizeLessThanWriteQuorumSize.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + ensembleSizeLessThanWriteQuorumSize.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "4" + ensembleSizeLessThanWriteQuorumSize.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, ensembleSizeLessThanWriteQuorumSize) + g.Expect(err).To(HaveOccurred(), "Ensemble size should be greater than write quorum size") + g.Expect(err.Error()).To(ContainSubstring("The value provided for the option bookkeeper.write.quorum.size should be less than or equal to the value of option bookkeeper.ensemble.size")) + + ensembleSizeLessThanEqualToTwoWriteQuorumSizeSetToDefault := pravega_e2eutil.NewDefaultCluster(namespace) + ensembleSizeLessThanEqualToTwoWriteQuorumSizeSetToDefault.WithDefaults() + ensembleSizeLessThanEqualToTwoWriteQuorumSizeSetToDefault.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "2" + ensembleSizeLessThanEqualToTwoWriteQuorumSizeSetToDefault.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "" + ensembleSizeLessThanEqualToTwoWriteQuorumSizeSetToDefault.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, ensembleSizeLessThanEqualToTwoWriteQuorumSizeSetToDefault) + g.Expect(err).To(HaveOccurred(), "Ensemble size should be greater than the default value of write quorum size") + g.Expect(err.Error()).To(ContainSubstring("The value provided for the option bookkeeper.ensemble.size should be greater than or equal to the value of option bookkeeper.write.quorum.size (default is 3)")) + + ensembleSizeSetToDefaultWriteQuorumSizeGreaterThanThree := pravega_e2eutil.NewDefaultCluster(namespace) + ensembleSizeSetToDefaultWriteQuorumSizeGreaterThanThree.WithDefaults() + ensembleSizeSetToDefaultWriteQuorumSizeGreaterThanThree.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "" + ensembleSizeSetToDefaultWriteQuorumSizeGreaterThanThree.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "4" + ensembleSizeSetToDefaultWriteQuorumSizeGreaterThanThree.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, ensembleSizeSetToDefaultWriteQuorumSizeGreaterThanThree) + g.Expect(err).To(HaveOccurred(), "The value for write quorum size should be less than default value of ensemble size") + g.Expect(err.Error()).To(ContainSubstring("The value provided for the option bookkeeper.write.quorum.size should be less than or equal to the value of option bookkeeper.ensemble.size (default is 3)")) + + writeQuorumSizeLessThanAckQuorumSize := pravega_e2eutil.NewDefaultCluster(namespace) + writeQuorumSizeLessThanAckQuorumSize.WithDefaults() + writeQuorumSizeLessThanAckQuorumSize.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + writeQuorumSizeLessThanAckQuorumSize.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "2" + writeQuorumSizeLessThanAckQuorumSize.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "3" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, writeQuorumSizeLessThanAckQuorumSize) + g.Expect(err).To(HaveOccurred(), "The value for write quorum size should be greater than or equal to ack quorum size") + g.Expect(err.Error()).To(ContainSubstring("The value provided for the option bookkeeper.ack.quorum.size should be less than or equal to the value of option bookkeeper.write.quorum.size")) + + writeQuorumSizeLessThanEqualToTwoAckQuorumSizeSetToDefault := pravega_e2eutil.NewDefaultCluster(namespace) + writeQuorumSizeLessThanEqualToTwoAckQuorumSizeSetToDefault.WithDefaults() + writeQuorumSizeLessThanEqualToTwoAckQuorumSizeSetToDefault.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + writeQuorumSizeLessThanEqualToTwoAckQuorumSizeSetToDefault.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "2" + writeQuorumSizeLessThanEqualToTwoAckQuorumSizeSetToDefault.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, writeQuorumSizeLessThanEqualToTwoAckQuorumSizeSetToDefault) + g.Expect(err).To(HaveOccurred(), "Write quorum size should be greater than the default value of ack quorum size") + g.Expect(err.Error()).To(ContainSubstring("The value provided for the option bookkeeper.write.quorum.size should be greater than or equal to the value of option bookkeeper.ack.quorum.size (default is 3)")) + + writeQuorumSizeSetToDefaultAckQuorumSizeGreaterThanThree := pravega_e2eutil.NewDefaultCluster(namespace) + writeQuorumSizeSetToDefaultAckQuorumSizeGreaterThanThree.WithDefaults() + writeQuorumSizeSetToDefaultAckQuorumSizeGreaterThanThree.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "3" + writeQuorumSizeSetToDefaultAckQuorumSizeGreaterThanThree.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "" + writeQuorumSizeSetToDefaultAckQuorumSizeGreaterThanThree.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "4" + _, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, writeQuorumSizeSetToDefaultAckQuorumSizeGreaterThanThree) + g.Expect(err).To(HaveOccurred(), "The value for ack quorum size should be less than default value of write quorum size") + g.Expect(err.Error()).To(ContainSubstring("The value provided for the option bookkeeper.ack.quorum.size should be less than or equal to the value of option bookkeeper.write.quorum.size (default is 3)")) + + validBookkeeperSettings := pravega_e2eutil.NewDefaultCluster(namespace) + validBookkeeperSettings.WithDefaults() + validBookkeeperSettings.Spec.Pravega.Options["bookkeeper.ensemble.size"] = "4" + validBookkeeperSettings.Spec.Pravega.Options["bookkeeper.write.quorum.size"] = "3" + validBookkeeperSettings.Spec.Pravega.Options["bookkeeper.ack.quorum.size"] = "2" + pravega, err = pravega_e2eutil.CreatePravegaCluster(t, f, ctx, validBookkeeperSettings) + g.Expect(err).NotTo(HaveOccurred()) + + // Deleting the bookkeeper validation check cluster + err = pravega_e2eutil.DeletePravegaCluster(t, f, ctx, pravega) + g.Expect(err).NotTo(HaveOccurred()) + // No need to do cleanup since the cluster CR has already been deleted doCleanup = false