예제 #1
0
func getAllocatedInfo(repo *redis.RemoteRepository) (Allocated, error) {
	allocated := Allocated{}

	allocatedInstances, err := repo.AllInstances()
	if err != nil {
		return allocated, err
	}

	for _, instance := range allocatedInstances {
		bindingIDs, err := repo.BindingsForInstance(instance.ID)
		if err != nil {
			return allocated, err
		}

		c := Cluster{
			ID:    instance.ID,
			Hosts: []string{instance.Host},
		}

		for _, id := range bindingIDs {
			c.Bindings = append(c.Bindings, Binding{ID: id})
		}

		allocated.Clusters = append(allocated.Clusters, c)
	}

	allocated.Count = len(allocatedInstances)

	return allocated, nil
}
			Context("when it cannot persist the state to the state file", func() {
				BeforeEach(func() {
					os.Remove(statefilePath)
					os.Mkdir(statefilePath, 0644)
				})

				AfterEach(func() {
					os.RemoveAll(statefilePath)
				})

				It("does not bind", func() {
					_, err := repo.Bind("foo", "bar-binding")
					Expect(err).To(HaveOccurred())

					bindings, err := repo.BindingsForInstance("foo")
					Expect(err).ToNot(HaveOccurred())

					Expect(len(bindings)).To(Equal(0))
				})
			})
		})

		Describe("#Unbind", func() {
			Context("when the binding exists", func() {
				BeforeEach(func() {
					_, err := repo.Bind("foo", "foo-binding")
					Expect(err).ToNot(HaveOccurred())
				})

				It("returns successfully", func() {