Skip to content

Commit f3ae59c

Browse files
committed
Support Incremental Copy
1 parent 000093e commit f3ae59c

12 files changed

+945
-32
lines changed

src/Storage/Azure.Storage.psd1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ CmdletsToExport = 'Get-AzureStorageTable', 'New-AzureStorageTableSASToken',
113113
'Remove-AzureStorageContainer',
114114
'Remove-AzureStorageContainerStoredAccessPolicy',
115115
'Set-AzureStorageContainerStoredAccessPolicy',
116-
'Start-AzureStorageBlobCopy', 'Stop-AzureStorageBlobCopy'
116+
'Start-AzureStorageBlobCopy',
117+
'Start-AzureStorageBlobIncrementalCopy',
118+
'Stop-AzureStorageBlobCopy'
117119

118120
# Variables to export from this module
119121
# VariablesToExport = @()

src/Storage/ChangeLog.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
- Additional information about change #1
1919
-->
2020
## Current Release
21-
21+
* Upgrade to Azure Storage Client Library 8.1.1 and Azure Storage DataMovement Library 0.5.1
22+
* Add a new cmdlet to support blob Incremental Copy feature
23+
- Start-AzureStorageBlobIncrementalCopy
2224
## Version 2.8.0
2325

2426
## Version 2.7.0

src/Storage/Commands.Storage.Test/Service/MockStorageBlobManagement.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ public void SetContainerPermissions(CloudBlobContainer container, BlobContainerP
232232
/// <param name="options">Blob request options</param>
233233
/// <param name="operationContext">Operation context</param>
234234
/// <returns>Return an CloudBlob if the specific blob exists on azure, otherwise return null</returns>
235-
public CloudBlob GetBlobReferenceFromServer(CloudBlobContainer container, string blobName, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
235+
public CloudBlob GetBlobReferenceFromServer(CloudBlobContainer container, string blobName, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, DateTimeOffset? snapshotTime = null)
236236
{
237237
string containerName = container.Name;
238238

@@ -695,6 +695,11 @@ public string GetStorageAccountSASToken(SharedAccessAccountPolicy sharedAccessAc
695695
throw new NotImplementedException();
696696
}
697697

698+
public Task<string> StartIncrementalCopyAsync(CloudPageBlob blob, CloudPageBlob source, AccessCondition destAccessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
699+
{
700+
throw new NotImplementedException();
701+
}
702+
698703
/// <summary>
699704
/// The storage context
700705
/// </summary>

src/Storage/Commands.Storage/Blob/Cmdlet/StartAzureStorageBlobCopy.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,16 @@ public class StartAzureStorageBlobCopy : StorageDataMovementCmdletBase, IModuleA
8787
/// </summary>
8888
private const string UriParameterSet = "UriPipeline";
8989

90-
[Alias("SrcICloudBlob", "SrcCloudBlob", "ICloudBlob")]
90+
[Alias("SrcICloudBlob", "SrcCloudBlob", "ICloudBlob", "SourceICloudBlob", "SourceCloudBlob")]
9191
[Parameter(HelpMessage = "CloudBlob Object", Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = BlobParameterSet)]
9292
[Parameter(HelpMessage = "CloudBlob Object", Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = BlobToBlobParameterSet)]
9393
public CloudBlob CloudBlob { get; set; }
9494

95+
[Alias("SourceCloudBlobContainer")]
9596
[Parameter(HelpMessage = "CloudBlobContainer Object", Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = ContainerParameterSet)]
9697
public CloudBlobContainer CloudBlobContainer { get; set; }
9798

99+
[Alias("SourceBlob")]
98100
[Parameter(HelpMessage = "Blob name", ParameterSetName = ContainerParameterSet, Mandatory = true, Position = 0)]
99101
[Parameter(HelpMessage = "Blob name", ParameterSetName = ContainerNameParameterSet, Mandatory = true, Position = 0)]
100102
public string SrcBlob
@@ -104,6 +106,7 @@ public string SrcBlob
104106
}
105107
private string BlobName = String.Empty;
106108

109+
[Alias("SourceContainer")]
107110
[Parameter(HelpMessage = "Source Container name", Mandatory = true, ParameterSetName = ContainerNameParameterSet)]
108111
[ValidateNotNullOrEmpty]
109112
public string SrcContainer
@@ -113,34 +116,40 @@ public string SrcContainer
113116
}
114117
private string ContainerName = String.Empty;
115118

119+
[Alias("SourceShareName")]
116120
[Parameter(HelpMessage = "Source share name", Mandatory = true, ParameterSetName = ShareNameParameterSet)]
117121
[ValidateNotNullOrEmpty]
118122
public string SrcShareName { get; set; }
119123

124+
[Alias("SourceShare")]
120125
[Parameter(HelpMessage = "Source share", Mandatory = true, ParameterSetName = ShareParameterSet)]
121126
[ValidateNotNull]
122127
public CloudFileShare SrcShare { get; set; }
123128

129+
[Alias("SourceDir")]
124130
[Parameter(HelpMessage = "Source file directory", Mandatory = true, ParameterSetName = DirParameterSet)]
125131
[ValidateNotNull]
126132
public CloudFileDirectory SrcDir { get; set; }
127133

134+
[Alias("SourceFilePath")]
128135
[Parameter(HelpMessage = "Source file path", Mandatory = true, ParameterSetName = ShareNameParameterSet)]
129136
[Parameter(HelpMessage = "Source file path", Mandatory = true, ParameterSetName = ShareParameterSet)]
130137
[Parameter(HelpMessage = "Source file path", Mandatory = true, ParameterSetName = DirParameterSet)]
131138
[ValidateNotNullOrEmpty]
132139
public string SrcFilePath { get; set; }
133140

141+
[Alias("SourceFile")]
134142
[Parameter(HelpMessage = "Source file", Mandatory = true, ValueFromPipeline = true, ParameterSetName = FileParameterSet)]
135143
[Parameter(HelpMessage = "Source file", Mandatory = true, ValueFromPipeline = true, ParameterSetName = FileToBlobParameterSet)]
136144
[ValidateNotNull]
137145
public CloudFile SrcFile { get; set; }
138146

139-
[Alias("SrcUri")]
147+
[Alias("SrcUri", "SourceUri")]
140148
[Parameter(HelpMessage = "Source blob uri", Mandatory = true,
141149
ValueFromPipelineByPropertyName = true, ParameterSetName = UriParameterSet)]
142150
public string AbsoluteUri { get; set; }
143151

152+
[Alias("DestinationContainer")]
144153
[Parameter(HelpMessage = "Destination container name", Mandatory = true, ParameterSetName = ContainerNameParameterSet)]
145154
[Parameter(HelpMessage = "Destination container name", Mandatory = true, ParameterSetName = UriParameterSet)]
146155
[Parameter(HelpMessage = "Destination container name", Mandatory = true, ParameterSetName = BlobParameterSet)]
@@ -151,6 +160,7 @@ public string SrcContainer
151160
[Parameter(HelpMessage = "Destination container name", Mandatory = true, ParameterSetName = FileParameterSet)]
152161
public string DestContainer { get; set; }
153162

163+
[Alias("DestinationBlob")]
154164
[Parameter(HelpMessage = "Destination blob name", Mandatory = true, ParameterSetName = UriParameterSet)]
155165
[Parameter(HelpMessage = "Destination blob name", Mandatory = false, ParameterSetName = ContainerNameParameterSet)]
156166
[Parameter(HelpMessage = "Destination blob name", Mandatory = false, ParameterSetName = BlobParameterSet)]
@@ -161,12 +171,12 @@ public string SrcContainer
161171
[Parameter(HelpMessage = "Destination blob name", Mandatory = false, ParameterSetName = FileParameterSet)]
162172
public string DestBlob { get; set; }
163173

164-
[Alias("DestICloudBlob")]
174+
[Alias("DestICloudBlob", "DestinationCloudBlob", "DestinationICloudBlob")]
165175
[Parameter(HelpMessage = "Destination CloudBlob object", Mandatory = true, ParameterSetName = BlobToBlobParameterSet)]
166176
[Parameter(HelpMessage = "Destination CloudBlob object", Mandatory = true, ParameterSetName = FileToBlobParameterSet)]
167177
public CloudBlob DestCloudBlob { get; set; }
168178

169-
[Alias("SrcContext")]
179+
[Alias("SrcContext", "SourceContext")]
170180
[Parameter(HelpMessage = "Source Azure Storage Context Object", ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = ContainerNameParameterSet)]
171181
[Parameter(HelpMessage = "Source Azure Storage Context Object", ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = BlobParameterSet)]
172182
[Parameter(HelpMessage = "Source Azure Storage Context Object", ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = BlobToBlobParameterSet)]
@@ -179,6 +189,7 @@ public string SrcContainer
179189
[Parameter(HelpMessage = "Source Azure Storage Context Object", ParameterSetName = UriParameterSet)]
180190
public override AzureStorageContext Context { get; set; }
181191

192+
[Alias("DestinationContext")]
182193
[Parameter(HelpMessage = "Destination Storage context object", Mandatory = false)]
183194
public AzureStorageContext DestContext { get; set; }
184195

0 commit comments

Comments
 (0)