Esempio n. 1
0
			BeforeEach(func() {
				fakeFs.WriteFileError = errors.New("fake-write-error")
			})

			It("returns an error", func() {
				_, err := manager.Create(diskPool, "fake-vm-cid")
				Expect(err).To(HaveOccurred())
				Expect(err.Error()).To(ContainSubstring("fake-write-error"))
			})
		})
	})

	Describe("FindCurrent", func() {
		Context("when disk already exists in disk repo", func() {
			BeforeEach(func() {
				diskRecord, err := diskRepo.Save("fake-existing-disk-cid", 1024, biproperty.Map{})
				Expect(err).ToNot(HaveOccurred())

				err = diskRepo.UpdateCurrent(diskRecord.ID)
				Expect(err).ToNot(HaveOccurred())
			})

			It("returns the existing disk", func() {
				disks, err := manager.FindCurrent()
				Expect(err).ToNot(HaveOccurred())
				Expect(disks).To(HaveLen(1))
				Expect(disks[0].CID()).To(Equal("fake-existing-disk-cid"))
			})
		})

		Context("when disk does not exists in disk repo", func() {
Esempio n. 2
0
				It("ignores VMNotFound errors", func() {
					mockCloud.EXPECT().DeleteVM("fake-vm-cid").Return(bicloud.NewCPIError("delete_vm", bicloud.CmdError{
						Type:    bicloud.VMNotFoundError,
						Message: "fake-vm-not-found-message",
					}))

					err := deployment.Delete(fakeStage)
					Expect(err).ToNot(HaveOccurred())
				})
			})
		})

		Context("when a current disk exists", func() {
			BeforeEach(func() {
				deploymentStateService.Save(biconfig.DeploymentState{})
				diskRecord, err := diskRepo.Save("fake-disk-cid", 100, nil)
				Expect(err).ToNot(HaveOccurred())
				diskRepo.UpdateCurrent(diskRecord.ID)
			})

			It("deletes the disk", func() {
				mockCloud.EXPECT().DeleteDisk("fake-disk-cid")

				err := deployment.Delete(fakeStage)
				Expect(err).ToNot(HaveOccurred())
			})

			Context("when current disk has been deleted manually (outside of bosh)", func() {
				It("deletes the disk (to ensure related resources are released by the CPI)", func() {
					mockCloud.EXPECT().DeleteDisk("fake-disk-cid")
Esempio n. 3
0
			mockBlobstore = mock_blobstore.NewMockBlobstore(mockCtrl)

			deploymentManagerFactory := NewManagerFactory(vmManagerFactory, instanceManagerFactory, diskManagerFactory, stemcellManagerFactory, mockDeploymentFactory)
			deploymentManager = deploymentManagerFactory.NewManager(mockCloud, mockAgentClient, mockBlobstore)
		})

		Context("no orphan disk or stemcell records exist", func() {
			var (
				currentDiskRecord     biconfig.DiskRecord
				currentStemcellRecord biconfig.StemcellRecord
			)

			BeforeEach(func() {
				var err error
				currentDiskRecord, err = diskRepo.Save("fake-disk-cid", 100, nil)
				Expect(err).ToNot(HaveOccurred())
				err = diskRepo.UpdateCurrent(currentDiskRecord.ID)
				Expect(err).ToNot(HaveOccurred())

				currentStemcellRecord, err = stemcellRepo.Save("fake-stemcell-name", "fake-stemcell-version", "fake-stemcell-cid")
				Expect(err).ToNot(HaveOccurred())
				err = stemcellRepo.UpdateCurrent(currentStemcellRecord.ID)
				Expect(err).ToNot(HaveOccurred())
			})

			It("does not delete anything", func() {
				err := deploymentManager.Cleanup(fakeStage)
				Expect(err).ToNot(HaveOccurred())

				diskRecord, found, err := diskRepo.FindCurrent()
Esempio n. 4
0
		})
	})

	Describe("Delete", func() {
		It("deletes disk from cloud", func() {
			err := disk.Delete()
			Expect(err).ToNot(HaveOccurred())
			Expect(fakeCloud.DeleteDiskInputs).To(Equal([]fakebicloud.DeleteDiskInput{
				{
					DiskCID: "fake-disk-cid",
				},
			}))
		})

		It("deletes disk from repo", func() {
			_, err := diskRepo.Save("fake-disk-cid", 1024, diskCloudProperties)
			Expect(err).ToNot(HaveOccurred())

			err = disk.Delete()
			Expect(err).ToNot(HaveOccurred())
			diskRecords, err := diskRepo.All()
			Expect(diskRecords).To(BeEmpty())
		})

		Context("when deleted disk is the current disk", func() {
			BeforeEach(func() {
				diskRecord, err := diskRepo.Save("fake-disk-cid", 1024, diskCloudProperties)
				Expect(err).ToNot(HaveOccurred())

				err = diskRepo.UpdateCurrent(diskRecord.ID)
				Expect(err).ToNot(HaveOccurred())