func GetTestStorageAccount(t *testing.T, client management.Client) storage.StorageServiceResponse { t.Log("Retrieving storage account") sc := storage.NewClient(client) var sa storage.StorageServiceResponse ssl, err := sc.ListStorageServices() if err != nil { t.Fatal(err) } rnd := rand.New(rand.NewSource(time.Now().UnixNano())) if len(ssl.StorageServices) == 0 { t.Log("No storage accounts found, creating a new one") lc := location.NewClient(client) ll, err := lc.ListLocations() if err != nil { t.Fatal(err) } loc := ll.Locations[rnd.Intn(len(ll.Locations))].Name t.Logf("Location for new storage account: %s", loc) name := GenerateName() op, err := sc.CreateStorageService(storage.StorageAccountCreateParameters{ ServiceName: name, Label: base64.StdEncoding.EncodeToString([]byte(name)), Location: loc, AccountType: storage.AccountTypeStandardLRS}) if err != nil { t.Fatal(err) } if err := client.WaitForOperation(op, nil); err != nil { t.Fatal(err) } sa, err = sc.GetStorageService(name) } else { sa = ssl.StorageServices[rnd.Intn(len(ssl.StorageServices))] } t.Logf("Selected storage account '%s' in location '%s'", sa.ServiceName, sa.StorageServiceProperties.Location) return sa }
// IsRoleSizeAvailableInLocation retrieves all available sizes in the specified // location and returns whether that the provided roleSizeName is part of that list. func IsRoleSizeAvailableInLocation(managementclient management.Client, location, roleSizeName string) (bool, error) { if location == "" { return false, fmt.Errorf(errParamNotSpecified, "location") } if roleSizeName == "" { return false, fmt.Errorf(errParamNotSpecified, "roleSizeName") } locationClient := lc.NewClient(managementclient) locationInfo, err := getLocation(locationClient, location) if err != nil { return false, err } for _, availableRoleSize := range locationInfo.VirtualMachineRoleSizes { if availableRoleSize == roleSizeName { return true, nil } } return false, nil }