// CreateVolumeType will create a volume type with a random name. An error will // be returned if the volume type was unable to be created. func CreateVolumeType(t *testing.T, client *gophercloud.ServiceClient) (*volumetypes.VolumeType, error) { volumeTypeName := tools.RandomString("ACPTTEST", 16) t.Logf("Attempting to create volume type: %s", volumeTypeName) createOpts := volumetypes.CreateOpts{ Name: volumeTypeName, ExtraSpecs: map[string]interface{}{ "capabilities": "ssd", "priority": 3, }, } volumeType, err := volumetypes.Create(client, createOpts).Extract() if err != nil { return volumeType, err } return volumeType, nil }
func TestCreate(t *testing.T) { th.SetupHTTP() defer th.TeardownHTTP() th.Mux.HandleFunc("/types", func(w http.ResponseWriter, r *http.Request) { th.TestMethod(t, r, "POST") th.TestHeader(t, r, "X-Auth-Token", client.TokenID) th.TestHeader(t, r, "Content-Type", "application/json") th.TestHeader(t, r, "Accept", "application/json") th.TestJSONRequest(t, r, ` { "volume_type": { "name": "vol-type-001" } } `) w.Header().Add("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) fmt.Fprintf(w, ` { "volume_type": { "name": "vol-type-001", "id": "d32019d3-bc6e-4319-9c1d-6722fc136a22" } } `) }) options := &volumetypes.CreateOpts{Name: "vol-type-001"} n, err := volumetypes.Create(client.ServiceClient(), options).Extract() th.AssertNoErr(t, err) th.AssertEquals(t, n.Name, "vol-type-001") th.AssertEquals(t, n.ID, "d32019d3-bc6e-4319-9c1d-6722fc136a22") }