func (d CinderDriver) getByName(name string) (volumes.Volume, error) { log.Debug("getVolByName: `", name, "`") opts := volumes.ListOpts{Name: name} vols := volumes.List(d.Client, opts) var vol volumes.Volume err := vols.EachPage(func(page pagination.Page) (bool, error) { vList, err := volumes.ExtractVolumes(page) if err != nil { log.Errorf("Get Volume Error: %s", err) return false, err } for _, v := range vList { log.Debugf("querying volume: %+v\n", v) if v.Name == name { vol = v log.Debug("Found Volume ID: ", vol.ID) return true, nil } } log.Error("Volume Not Found!") return false, errors.New("Volume Not Found") }) if err != nil { log.Errorf("Extract Volume Error: %s", err) return volumes.Volume{}, err } return vol, nil }
func (d CinderDriver) List(r volume.Request) volume.Response { log.Info("List volumes: ", r.Name) path := filepath.Join(d.Conf.MountPoint, r.Name) var vols []*volume.Volume pager := volumes.List(d.Client, volumes.ListOpts{}) pager.EachPage(func(page pagination.Page) (bool, error) { vlist, _ := volumes.ExtractVolumes(page) for _, v := range vlist { vols = append(vols, &volume.Volume{Name: v.Name, Mountpoint: path}) } return true, nil }) return volume.Response{Volumes: vols} }
func TestVolumes(t *testing.T) { client, err := newClient(t) th.AssertNoErr(t, err) cv, err := volumes.Create(client, &volumes.CreateOpts{ Size: 1, Name: "blockv2-volume", }).Extract() th.AssertNoErr(t, err) defer func() { err = volumes.WaitForStatus(client, cv.ID, "available", 60) th.AssertNoErr(t, err) err = volumes.Delete(client, cv.ID).ExtractErr() th.AssertNoErr(t, err) }() _, err = volumes.Update(client, cv.ID, &volumes.UpdateOpts{ Name: "blockv2-updated-volume", }).Extract() th.AssertNoErr(t, err) v, err := volumes.Get(client, cv.ID).Extract() th.AssertNoErr(t, err) t.Logf("Got volume: %+v\n", v) if v.Name != "blockv2-updated-volume" { t.Errorf("Unable to update volume: Expected name: blockv2-updated-volume\nActual name: %s", v.Name) } err = volumes.List(client, &volumes.ListOpts{Name: "blockv2-updated-volume"}).EachPage(func(page pagination.Page) (bool, error) { vols, err := volumes.ExtractVolumes(page) th.CheckEquals(t, 1, len(vols)) return true, err }) th.AssertNoErr(t, err) }