Skip to content

Commit ef4fbe3

Browse files
authored
Merge pull request Azure#11366 from LijuanZ/lijzha/updateCreateRun
DataFactory: Add optional parameters to Invoke-AzDataFactoryV2Pipeline to support rerun
2 parents 8ce70c7 + b16dbc9 commit ef4fbe3

File tree

5 files changed

+94
-3
lines changed

5 files changed

+94
-3
lines changed

src/DataFactory/DataFactoryV2.Test/ScenarioTests/RunTests.ps1

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,33 @@ function Test-Run
5252
# Trying get pipeline run.
5353
Get-AzDataFactoryV2PipelineRun -ResourceGroupName $rgname -DataFactoryName $dfname -PipelineRunId $Run
5454
Get-AzDataFactoryV2PipelineRun -DataFactory $df -PipelineRunId $Run
55+
56+
# Wait run to finish before rerun
57+
if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback) {
58+
Start-Sleep -s 120
59+
}
60+
61+
# Trying rerun the pipeline run
62+
$Rerun = Invoke-AzDataFactoryV2Pipeline -ResourceGroupName $rgname -PipelineName $pipelineName -DataFactoryName $dfname -ReferencePipelineRunId $Run -IsRecovery
63+
Get-AzDataFactoryV2PipelineRun -DataFactory $df -PipelineRunId $Rerun
64+
65+
# Wait run to finish before rerun
66+
if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback) {
67+
Start-Sleep -s 120
68+
}
69+
70+
# Trying rerun from activity MyCopyActivity_1_0
71+
$RerunFromActivity = Invoke-AzDataFactoryV2Pipeline -ResourceGroupName $rgname -PipelineName $pipelineName -DataFactoryName $dfname -ReferencePipelineRunId $Run -IsRecovery -StartActivityName MyCopyActivity_1_0
72+
Get-AzDataFactoryV2PipelineRun -DataFactory $df -PipelineRunId $RerunFromActivity
73+
74+
# Wait run to finish before rerun
75+
if ([Microsoft.Azure.Test.HttpRecorder.HttpMockServer]::Mode -ne [Microsoft.Azure.Test.HttpRecorder.HttpRecorderMode]::Playback) {
76+
Start-Sleep -s 120
77+
}
78+
79+
# Trying rerun from failed activity
80+
$RerunFromFailedActivity = Invoke-AzDataFactoryV2Pipeline -ResourceGroupName $rgname -PipelineName $pipelineName -DataFactoryName $dfname -ReferencePipelineRunId $Run -IsRecovery -StartFromFailure
81+
Get-AzDataFactoryV2PipelineRun -DataFactory $df -PipelineRunId $RerunFromActivity
5582
}
5683
finally
5784
{

src/DataFactory/DataFactoryV2/Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
-->
2020
## Upcoming Release
2121
* Update ADF .Net SDK version to 4.8.0
22+
* Add optional parameters to Invoke-AzDataFactoryV2Pipeline command to support rerun
2223

2324
## Version 1.6.1
2425
* Update ADF .Net SDK version to 4.7.0

src/DataFactory/DataFactoryV2/Constants.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,14 @@ internal static class Constants
182182

183183
public const string HelpParameterFileForRun = "The name of the file with parameters for pipeline run.";
184184

185+
public const string HelpReferencePipelineRunIdForRun = "The pipeline run ID for rerun. If run ID is specified, the parameters of the specified run will be used to create a new run.";
186+
187+
public const string HelpIsRecoveryForRun = "Recovery mode flag. If recovery mode is set to true, the specified referenced pipeline run and the new run will be grouped under the same groupId.";
188+
189+
public const string HelpStartActivityNameForRun = "In recovery mode, the rerun will start from this activity. If not specified, all activities will run.";
190+
191+
public const string HelpStartFromFailureForRun = "Start rerun from failed activities flag. In recovery mode, if specified, the rerun will start from failed activities.";
192+
185193
public const string HelpQueryParametersForRun = "Query parameters for pipeline run.";
186194

187195
public const string HelpRunStartedAfter = "The time at or after which the pipeline run started to execute in ISO8601 format.";

src/DataFactory/DataFactoryV2/Models/DataFactoryClient.Pipelines.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,10 @@ public virtual List<PSPipeline> ListPipelines(AdfEntityFilterOptions filterOptio
100100
return pipelines;
101101
}
102102

103-
public virtual string CreatePipelineRun(string resourceGroupName, string dataFactoryName, string pipelineName, Dictionary<string, object> paramDictionary)
103+
public virtual string CreatePipelineRun(string resourceGroupName, string dataFactoryName, string pipelineName, Dictionary<string, object> paramDictionary, string referencePipelineRunId, bool? isRecovery, string startActivityName, bool? startFromFailure)
104104
{
105-
CreateRunResponse response = this.DataFactoryManagementClient.Pipelines.CreateRun(resourceGroupName, dataFactoryName, pipelineName, parameters: paramDictionary);
105+
CreateRunResponse response = this.DataFactoryManagementClient.Pipelines.CreateRun(resourceGroupName, dataFactoryName, pipelineName, parameters: paramDictionary,
106+
referencePipelineRunId: referencePipelineRunId, isRecovery: isRecovery, startActivityName: startActivityName, startFromFailure: startFromFailure);
106107

107108
return response.RunId;
108109
}

src/DataFactory/DataFactoryV2/Runs/InvokeAzureDataFactoryPipelineCommand.cs

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,48 @@ public class InvokeAzureDataFactoryPipelineCommand : DataFactoryBaseCmdlet
7272
[ValidateNotNullOrEmpty]
7373
public string ParameterFile { get; set; }
7474

75+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterFile, Position = 4, Mandatory = false, ValueFromPipelineByPropertyName = true,
76+
HelpMessage = Constants.HelpReferencePipelineRunIdForRun)]
77+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterObject, Position = 4, Mandatory = false, ValueFromPipelineByPropertyName = true,
78+
HelpMessage = Constants.HelpReferencePipelineRunIdForRun)]
79+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterObject, Position = 2, Mandatory = false, ValueFromPipelineByPropertyName = true,
80+
HelpMessage = Constants.HelpReferencePipelineRunIdForRun)]
81+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterFile, Position = 2, Mandatory = false, ValueFromPipelineByPropertyName = true,
82+
HelpMessage = Constants.HelpReferencePipelineRunIdForRun)]
83+
[ValidateNotNullOrEmpty]
84+
public string ReferencePipelineRunId { get; set; }
85+
86+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterFile, Position = 5, Mandatory = false, ValueFromPipelineByPropertyName = true,
87+
HelpMessage = Constants.HelpIsRecoveryForRun)]
88+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterObject, Position = 5, Mandatory = false, ValueFromPipelineByPropertyName = true,
89+
HelpMessage = Constants.HelpIsRecoveryForRun)]
90+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterObject, Position = 3, Mandatory = false, ValueFromPipelineByPropertyName = true,
91+
HelpMessage = Constants.HelpIsRecoveryForRun)]
92+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterFile, Position = 3, Mandatory = false, ValueFromPipelineByPropertyName = true,
93+
HelpMessage = Constants.HelpIsRecoveryForRun)]
94+
public SwitchParameter IsRecovery { get; set; }
95+
96+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterFile, Position = 6, Mandatory = false, ValueFromPipelineByPropertyName = true,
97+
HelpMessage = Constants.HelpStartActivityNameForRun)]
98+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterObject, Position = 6, Mandatory = false, ValueFromPipelineByPropertyName = true,
99+
HelpMessage = Constants.HelpStartActivityNameForRun)]
100+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterObject, Position = 4, Mandatory = false, ValueFromPipelineByPropertyName = true,
101+
HelpMessage = Constants.HelpStartActivityNameForRun)]
102+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterFile, Position = 4, Mandatory = false, ValueFromPipelineByPropertyName = true,
103+
HelpMessage = Constants.HelpStartActivityNameForRun)]
104+
[ValidateNotNullOrEmpty]
105+
public string StartActivityName { get; set; }
106+
107+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterFile, Position = 7, Mandatory = false, ValueFromPipelineByPropertyName = true,
108+
HelpMessage = Constants.HelpStartFromFailureForRun)]
109+
[Parameter(ParameterSetName = ParameterSetNames.ByFactoryNameByParameterObject, Position = 7, Mandatory = false, ValueFromPipelineByPropertyName = true,
110+
HelpMessage = Constants.HelpStartFromFailureForRun)]
111+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterObject, Position = 5, Mandatory = false, ValueFromPipelineByPropertyName = true,
112+
HelpMessage = Constants.HelpStartFromFailureForRun)]
113+
[Parameter(ParameterSetName = ParameterSetNames.ByPipelineObjectByParameterFile, Position = 5, Mandatory = false, ValueFromPipelineByPropertyName = true,
114+
HelpMessage = Constants.HelpStartFromFailureForRun)]
115+
public SwitchParameter StartFromFailure { get; set; }
116+
75117
public override void ExecuteCmdlet()
76118
{
77119
if (ParameterSetName.Equals(ParameterSetNames.ByPipelineObjectByParameterFile, StringComparison.OrdinalIgnoreCase)
@@ -103,7 +145,19 @@ public override void ExecuteCmdlet()
103145
paramDictionary = ReadParametersFromJson();
104146
}
105147

106-
WriteObject(DataFactoryClient.CreatePipelineRun(ResourceGroupName, DataFactoryName, PipelineName, paramDictionary));
148+
bool? isRecovery = null;
149+
bool? startFromFailure = null;
150+
if (IsRecovery.IsPresent)
151+
{
152+
isRecovery = true;
153+
154+
if (StartFromFailure.IsPresent)
155+
{
156+
startFromFailure = true;
157+
}
158+
}
159+
160+
WriteObject(DataFactoryClient.CreatePipelineRun(ResourceGroupName, DataFactoryName, PipelineName, paramDictionary, ReferencePipelineRunId, isRecovery, StartActivityName, startFromFailure));
107161
}
108162

109163
private Dictionary<string, object> ReadParametersFromJson()

0 commit comments

Comments
 (0)