public void ListSubvolumes()
        {
            HttpMockServer.RecordsDirectory = GetSessionsDirectoryPath();
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                var netAppMgmtClient = NetAppTestUtilities.GetNetAppManagementClient(context, new RecordedDelegatingHandler {
                    StatusCodeToReturn = HttpStatusCode.OK
                });

                // create a volume, get all and check
                var resource = ResourceUtils.CreateVolume(netAppMgmtClient, enableSubvolumes: EnableSubvolumes.Enabled);
                //Assert.Equal(ResourceUtils.defaultExportPolicy.ToString(), resource.ExportPolicy.ToString());
                //Assert.Null(resource.Tags);
                // check DP properties exist but unassigned because
                // dataprotection volume was not created
                Assert.Null(resource.VolumeType);
                Assert.Null(resource.DataProtection);

                var volumesBefore = netAppMgmtClient.Volumes.List(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1);
                Assert.Single(volumesBefore);

                // create subvolume
                SubvolumeInfo subvolumeInfo = new SubvolumeInfo();
                subvolumeInfo.Path = "/subvolume1";
                subvolumeInfo.Size = 5;

                var subvol = netAppMgmtClient.Subvolumes.Create(subvolumeInfo, ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1, "subvolume1");
                Assert.NotNull(subvol);
                var getSubVolume = netAppMgmtClient.Subvolumes.Get(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1, "subvolume1");
                Assert.NotNull(getSubVolume);

                // List subvolumes
                var getSubVolumesList = netAppMgmtClient.Subvolumes.ListByVolume(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1);
                Assert.NotNull(getSubVolumesList);
                Assert.Single(getSubVolumesList);

                // create subvolume2
                SubvolumeInfo subvolumeInfo2 = new SubvolumeInfo();
                subvolumeInfo2.Path = "/subvolume2";
                subvolumeInfo2.Size = 5;

                var subvol2 = netAppMgmtClient.Subvolumes.Create(subvolumeInfo2, ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1, "subvolume2");
                Assert.NotNull(subvol2);
                var getSubVolume2 = netAppMgmtClient.Subvolumes.Get(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1, "subvolume2");
                Assert.NotNull(getSubVolume2);

                // List subvolumes
                getSubVolumesList = netAppMgmtClient.Subvolumes.ListByVolume(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1);
                Assert.NotNull(getSubVolumesList);
                Assert.Equal(2, getSubVolumesList.Count());

                // cleanup
                netAppMgmtClient.Subvolumes.Delete(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1, "subvolume2");
                netAppMgmtClient.Subvolumes.Delete(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1, "subvolume1");
                netAppMgmtClient.Volumes.Delete(ResourceUtils.resourceGroup, ResourceUtils.accountName1, ResourceUtils.poolName1, ResourceUtils.volumeName1);
                ResourceUtils.DeletePool(netAppMgmtClient);
                ResourceUtils.DeleteAccount(netAppMgmtClient);
            }
        }
 /// <summary>
 /// Create or clone a new subvolume
 /// </summary>
 /// <remarks>
 /// Creates a subvolume in the path or clones the subvolume mentioned in the
 /// parentPath
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='body'>
 /// Subvolume object supplied in the body of the operation.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='accountName'>
 /// The name of the NetApp account
 /// </param>
 /// <param name='poolName'>
 /// The name of the capacity pool
 /// </param>
 /// <param name='volumeName'>
 /// The name of the volume
 /// </param>
 /// <param name='subvolumeName'>
 /// The name of the subvolume.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <SubvolumeInfo> BeginCreateAsync(this ISubvolumesOperations operations, SubvolumeInfo body, string resourceGroupName, string accountName, string poolName, string volumeName, string subvolumeName, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.BeginCreateWithHttpMessagesAsync(body, resourceGroupName, accountName, poolName, volumeName, subvolumeName, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Create or clone a new subvolume
 /// </summary>
 /// <remarks>
 /// Creates a subvolume in the path or clones the subvolume mentioned in the
 /// parentPath
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='body'>
 /// Subvolume object supplied in the body of the operation.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group.
 /// </param>
 /// <param name='accountName'>
 /// The name of the NetApp account
 /// </param>
 /// <param name='poolName'>
 /// The name of the capacity pool
 /// </param>
 /// <param name='volumeName'>
 /// The name of the volume
 /// </param>
 /// <param name='subvolumeName'>
 /// The name of the subvolume.
 /// </param>
 public static SubvolumeInfo BeginCreate(this ISubvolumesOperations operations, SubvolumeInfo body, string resourceGroupName, string accountName, string poolName, string volumeName, string subvolumeName)
 {
     return(operations.BeginCreateAsync(body, resourceGroupName, accountName, poolName, volumeName, subvolumeName).GetAwaiter().GetResult());
 }