Skip to content

Commit 482ddef

Browse files
committed
Saving temporary changes
1 parent d066507 commit 482ddef

File tree

2 files changed

+106
-53
lines changed

2 files changed

+106
-53
lines changed

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/GetAzureBackupJob.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,17 @@ public class GetAzureBackupJob : AzureBackupVaultCmdletBase
3333
[ValidateNotNullOrEmpty]
3434
public string JobId { get; set; }
3535

36-
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterJobHelpMessage)]
36+
[Parameter(Mandatory = true, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterJobHelpMessage)]
3737
[ValidateNotNull]
3838
public AzureBackupJob Job { get; set; }
3939

4040
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterStartTimeHelpMessage)]
4141
[ValidateNotNull]
42-
public DateTime? StartTime { get; set; }
42+
public DateTime? From { get; set; }
4343

4444
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterEndTimeHelpMessage)]
4545
[ValidateNotNull]
46-
public DateTime? EndTime { get; set; }
46+
public DateTime? To { get; set; }
4747

4848
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.JobFilterStatusHelpMessage)]
4949
[ValidateSet("Cancelled", "Cancelling", "Completed", "CompletedWithWarnings", "Failed", "InProgress")]
@@ -80,56 +80,56 @@ public override void ExecuteCmdlet()
8080
}
8181

8282
// validations
83-
if (!StartTime.HasValue)
83+
if (!From.HasValue)
8484
{
8585
WriteDebug("Setting StartTime to min value.");
86-
StartTime = new DateTime();
87-
StartTime = DateTime.MinValue;
86+
From = new DateTime();
87+
From = DateTime.MinValue;
8888
}
8989

90-
if (EndTime.HasValue && EndTime.Value <= StartTime.Value)
90+
if (To.HasValue && To.Value <= From.Value)
9191
{
9292
throw new Exception("StartTime should be greater than EndTime.");
9393
}
9494
else
9595
{
96-
if (StartTime != DateTime.MinValue)
96+
if (From != DateTime.MinValue)
9797
{
9898
WriteDebug("End time not set. Setting it to current time.");
99-
EndTime = DateTime.Now;
99+
To = DateTime.Now;
100100
}
101101
else
102102
{
103103
WriteDebug("Setting EndTime to min value.");
104-
EndTime = new DateTime();
105-
EndTime = DateTime.MinValue;
104+
To = new DateTime();
105+
To = DateTime.MinValue;
106106
}
107107
}
108108

109-
StartTime = TimeZoneInfo.ConvertTimeToUtc(StartTime.Value);
110-
EndTime = TimeZoneInfo.ConvertTimeToUtc(EndTime.Value);
109+
From = TimeZoneInfo.ConvertTimeToUtc(From.Value);
110+
To = TimeZoneInfo.ConvertTimeToUtc(To.Value);
111111

112112
// if user hasn't specified any filters, then default filter fetches
113113
// all jobs that were created in last 24 hours.
114-
if (StartTime == DateTime.MinValue && EndTime == DateTime.MinValue &&
114+
if (From == DateTime.MinValue && To == DateTime.MinValue &&
115115
Operation == string.Empty && Status == string.Empty &&
116116
Type == string.Empty && JobId == string.Empty)
117117
{
118-
StartTime = DateTime.UtcNow.AddDays(-1);
119-
EndTime = DateTime.UtcNow;
118+
From = DateTime.UtcNow.AddDays(-1);
119+
To = DateTime.UtcNow;
120120
}
121121

122-
WriteDebug("StartTime filter is: " + System.Uri.EscapeDataString(StartTime.Value.ToString("yyyy-MM-dd hh:mm:ss tt")));
123-
WriteDebug("EndTime filter is: " + System.Uri.EscapeDataString(EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss tt")));
122+
WriteDebug("StartTime filter is: " + System.Uri.EscapeDataString(From.Value.ToString("yyyy-MM-dd hh:mm:ss tt")));
123+
WriteDebug("EndTime filter is: " + System.Uri.EscapeDataString(To.Value.ToString("yyyy-MM-dd hh:mm:ss tt")));
124124
WriteDebug("Operation filter is: " + Operation);
125125
WriteDebug("Status filter is: " + Status);
126126
WriteDebug("Type filter is: " + Type);
127127
WriteDebug("JobID filter is: " + JobId);
128128

129129
JobQueryParameter queryParams = new JobQueryParameter()
130130
{
131-
StartTime = StartTime.Value.ToString("yyyy-MM-dd hh:mm:ss tt"),
132-
EndTime = EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss tt"),
131+
StartTime = From.Value.ToString("yyyy-MM-dd hh:mm:ss tt"),
132+
EndTime = To.Value.ToString("yyyy-MM-dd hh:mm:ss tt"),
133133
Operation = Operation,
134134
Status = Status,
135135
Type = Type,

src/ResourceManager/AzureBackup/Commands.AzureBackup/Cmdlets/Jobs/WaitAzureBackupJob.cs

Lines changed: 86 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,62 +26,110 @@ public class WaitAzureBackupJob : AzureBackupVaultCmdletBase
2626
{
2727
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.WaitJobFilterJobIdHelpMessage, ValueFromPipeline = true)]
2828
[ValidateNotNull]
29-
public List<string> JobID { get; set; }
29+
public object JobID { get; set; }
3030

3131
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.WaitJobFilterJobHelpMessage, ValueFromPipeline = true)]
3232
[ValidateNotNullOrEmpty]
33-
public List<AzureBackupJob> Job { get; set; }
33+
public object Job { get; set; }
3434

3535
[Parameter(Mandatory = false, HelpMessage = AzureBackupCmdletHelpMessage.WaitJobFilterTimeoutHelpMessage)]
3636
[ValidateRange(1, Int64.MaxValue)]
3737
public long? TimeOut { get; set; }
3838

3939
public override void ExecuteCmdlet()
4040
{
41-
// ValidateNotNullNotEmpty makes sure that there exists at least one element
42-
this.ResourceGroupName = Job[0].ResourceGroupName;
43-
this.ResourceName = Job[0].ResourceName;
41+
List<string> specifiedJobs = new List<string>();
4442

45-
base.ExecuteCmdlet();
46-
47-
ExecutionBlock(() =>
43+
if (Job != null)
4844
{
49-
List<string> specifiedJobs = new List<string>();
45+
WriteDebug("Job is Powershell: " + (Job is PSObject));
46+
WriteDebug("Job type: " + Job.GetType());
5047

51-
if (!TimeOut.HasValue)
48+
if ((Job is PSObject) && (((PSObject)Job).ImmediateBaseObject is List<AzureBackupJob>))
5249
{
53-
TimeOut = new long();
54-
TimeOut = Int64.MaxValue;
50+
WriteDebug("Type of input paramter is List<AzureBackupJob>");
51+
foreach (AzureBackupJob jobToWait in ((Job as PSObject).ImmediateBaseObject as List<AzureBackupJob>))
52+
{
53+
this.ResourceGroupName = jobToWait.ResourceGroupName;
54+
this.ResourceName = jobToWait.ResourceName;
55+
this.Location = jobToWait.Location;
56+
57+
specifiedJobs.Add(jobToWait.InstanceId);
58+
}
5559
}
60+
else if (Job is List<AzureBackupJob>)
61+
{
62+
WriteDebug("Type of input paramter is List<AzureBackupJob> second case");
63+
foreach (AzureBackupJob jobToWait in (Job as List<AzureBackupJob>))
64+
{
65+
this.ResourceGroupName = jobToWait.ResourceGroupName;
66+
this.ResourceName = jobToWait.ResourceName;
67+
this.Location = jobToWait.Location;
5668

57-
//if (JobID != null && Job != null)
58-
//{
59-
// foreach(string job in JobID)
60-
// {
61-
// WriteDebug("JobID: " + job);
62-
// }
63-
// foreach (AzureBackupJob job in Job)
64-
// {
65-
// WriteDebug("Job: " + job.InstanceId);
66-
// }
67-
// throw new Exception("Please use either JobID filter or Job filter but not both.");
68-
//}
69-
70-
if(Job != null)
69+
specifiedJobs.Add(jobToWait.InstanceId);
70+
}
71+
}
72+
else if ((Job is PSObject) && (((PSObject)Job).ImmediateBaseObject is AzureBackupJob))
7173
{
72-
foreach(AzureBackupJob inpJob in Job)
74+
AzureBackupJob azureJob = ((Job as PSObject).ImmediateBaseObject as AzureBackupJob);
75+
this.ResourceGroupName = azureJob.ResourceGroupName;
76+
this.ResourceName = azureJob.ResourceName;
77+
this.Location = azureJob.Location;
78+
79+
specifiedJobs.Add(azureJob.InstanceId);
80+
}
81+
else if (Job is AzureBackupJob)
82+
{
83+
this.ResourceName = (Job as AzureBackupJob).ResourceName;
84+
this.ResourceGroupName = (Job as AzureBackupJob).ResourceGroupName;
85+
this.Location = (Job as AzureBackupJob).Location;
86+
87+
specifiedJobs.Add((Job as AzureBackupJob).InstanceId);
88+
}
89+
}
90+
else
91+
{
92+
if ((JobID is PSObject) && (((PSObject)JobID).ImmediateBaseObject is List<string>))
93+
{
94+
foreach (string idOfJobToWait in ((JobID as PSObject).ImmediateBaseObject as List<string>))
7395
{
74-
specifiedJobs.Add(inpJob.InstanceId);
96+
WriteDebug("Type of JobID filter is List<string>.");
97+
specifiedJobs.Add(idOfJobToWait);
7598
}
7699
}
77-
else
100+
else if (JobID is List<string>)
78101
{
79-
foreach(string jobID in JobID)
102+
foreach (string idOfJobToWait in (JobID as List<string>))
80103
{
81-
specifiedJobs.Add(jobID);
104+
WriteDebug("Type of JobID filter is List<string>.");
105+
specifiedJobs.Add(idOfJobToWait);
82106
}
83107
}
108+
else if ((JobID is PSObject) && (((PSObject)JobID).ImmediateBaseObject is string))
109+
{
110+
WriteDebug("Type of JobID filter is string.");
111+
specifiedJobs.Add((JobID as PSObject).ImmediateBaseObject as string);
112+
}
113+
else if (JobID is string)
114+
{
115+
WriteDebug("Type of JobID filter is string.");
116+
specifiedJobs.Add(JobID as string);
117+
}
118+
}
119+
120+
WriteDebug("Number of jobs to wait on: " + specifiedJobs.Count);
121+
122+
base.ExecuteCmdlet();
123+
124+
ExecutionBlock(() =>
125+
{
126+
if (!TimeOut.HasValue)
127+
{
128+
TimeOut = new long();
129+
TimeOut = Int64.MaxValue;
130+
}
84131

132+
List<string> pendingJobs = new List<string>(specifiedJobs);
85133
DateTime waitingStartTime = DateTime.UtcNow;
86134

87135
while (true)
@@ -94,11 +142,16 @@ public override void ExecuteCmdlet()
94142

95143
bool areJobsRunning = false;
96144

97-
foreach (string jobId in specifiedJobs)
145+
for (int i = 0; i < pendingJobs.Count; i++)
98146
{
99-
Mgmt.Job retrievedJob = AzureBackupClient.Job.GetAsync(jobId, GetCustomRequestHeaders(), CmdletCancellationToken).Result.Job;
147+
Mgmt.Job retrievedJob = AzureBackupClient.Job.GetAsync(pendingJobs[i], GetCustomRequestHeaders(), CmdletCancellationToken).Result.Job;
100148
if (AzureBackupJobHelper.IsJobRunning(retrievedJob.Status))
101149
areJobsRunning = true;
150+
else
151+
{
152+
pendingJobs.RemoveAt(i);
153+
i--;
154+
}
102155
}
103156

104157
if (!areJobsRunning)

0 commit comments

Comments
 (0)