Skip to content

Commit 870ce47

Browse files
committed
Adding Time Zone support for Get and New schedule cmdlets
1 parent 8b24c2b commit 870ce47

File tree

5 files changed

+69
-24
lines changed

5 files changed

+69
-24
lines changed

src/ResourceManager/Automation/Commands.Automation/Cmdlet/NewAzureAutomationSchedule.cs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ public NewAzureAutomationSchedule()
8484
[ValidateRange(1, byte.MaxValue)]
8585
public byte HourInterval { get; set; }
8686

87+
/// <summary>
88+
/// Gets or sets the schedule time zone.
89+
/// </summary>
90+
[Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "The schedule time zone.")]
91+
public string TimeZone { get; set; }
92+
8793
/// <summary>
8894
/// Execute this cmdlet.
8995
/// </summary>
@@ -95,25 +101,26 @@ protected override void AutomationProcessRecord()
95101
Name = this.Name,
96102
StartTime = this.StartTime,
97103
Description = this.Description,
98-
ExpiryTime = this.ExpiryTime
104+
ExpiryTime = this.ExpiryTime,
105+
TimeZone = this.TimeZone,
99106
};
100107

101-
if (this.ParameterSetName == AutomationCmdletParameterSets.ByOneTime)
102-
{
103-
schedule.Frequency = ScheduleFrequency.Onetime;
104-
}
105-
else if (this.ParameterSetName == AutomationCmdletParameterSets.ByDaily)
106-
{
107-
schedule.Frequency = ScheduleFrequency.Day;
108-
schedule.Interval = this.DayInterval;
109-
}
110-
else if (this.ParameterSetName == AutomationCmdletParameterSets.ByHourly)
108+
switch (this.ParameterSetName)
111109
{
112-
schedule.Frequency = ScheduleFrequency.Hour;
113-
schedule.Interval = this.HourInterval;
110+
case AutomationCmdletParameterSets.ByOneTime:
111+
schedule.Frequency = ScheduleFrequency.Onetime;
112+
break;
113+
case AutomationCmdletParameterSets.ByDaily:
114+
schedule.Frequency = ScheduleFrequency.Day;
115+
schedule.Interval = this.DayInterval;
116+
break;
117+
case AutomationCmdletParameterSets.ByHourly:
118+
schedule.Frequency = ScheduleFrequency.Hour;
119+
schedule.Interval = this.HourInterval;
120+
break;
114121
}
115122

116-
Schedule createdSchedule = this.AutomationClient.CreateSchedule(this.ResourceGroupName, this.AutomationAccountName, schedule);
123+
var createdSchedule = this.AutomationClient.CreateSchedule(this.ResourceGroupName, this.AutomationAccountName, schedule);
117124
this.WriteObject(createdSchedule);
118125
}
119126
}

src/ResourceManager/Automation/Commands.Automation/Common/AutomationClient.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,8 @@ public Schedule CreateSchedule(string resourceGroupName, string automationAccoun
335335
ExpiryTime = schedule.ExpiryTime,
336336
Description = schedule.Description,
337337
Interval = schedule.Interval,
338-
Frequency = schedule.Frequency.ToString()
338+
Frequency = schedule.Frequency.ToString(),
339+
TimeZone = schedule.TimeZone,
339340
}
340341
};
341342

src/ResourceManager/Automation/Commands.Automation/Model/Schedule.cs

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,26 @@ public class Schedule : BaseProperties
3838
public Schedule(string resourceGroupName, string automationAccountName, Azure.Management.Automation.Models.Schedule schedule)
3939
{
4040
Requires.Argument("schedule", schedule).NotNull();
41+
4142
this.ResourceGroupName = resourceGroupName;
4243
this.AutomationAccountName = automationAccountName;
4344
this.Name = schedule.Name;
4445
this.Description = schedule.Properties.Description;
45-
this.StartTime = schedule.Properties.StartTime.ToLocalTime();
46-
this.ExpiryTime = schedule.Properties.ExpiryTime.ToLocalTime();
46+
this.StartTime = AdjustOffset(schedule.Properties.StartTime, schedule.Properties.StartTimeOffsetMinutes);
47+
this.ExpiryTime = AdjustOffset(schedule.Properties.ExpiryTime, schedule.Properties.ExpiryTimeOffsetMinutes);
4748
this.CreationTime = schedule.Properties.CreationTime.ToLocalTime();
4849
this.LastModifiedTime = schedule.Properties.LastModifiedTime.ToLocalTime();
4950
this.IsEnabled = schedule.Properties.IsEnabled;
50-
this.NextRun = schedule.Properties.NextRun.HasValue
51-
? schedule.Properties.NextRun.Value.ToLocalTime()
52-
: this.NextRun;
53-
this.Interval = schedule.Properties.Interval.HasValue ? schedule.Properties.Interval.Value : this.Interval;
51+
this.NextRun = AdjustOffset(schedule.Properties.NextRun, schedule.Properties.NextRunOffsetMinutes);
52+
this.Interval = schedule.Properties.Interval ?? this.Interval;
5453
this.Frequency = (ScheduleFrequency)Enum.Parse(typeof(ScheduleFrequency), schedule.Properties.Frequency, true);
54+
this.TimeZone = schedule.Properties.TimeZone;
5555
}
5656

57+
#region Public Properties
58+
5759
/// <summary>
58-
/// Initializes a new instance of the <see cref="HourlySchedule"/> class.
60+
/// Initializes a new instance of the <see cref="Schedule"/> class.
5961
/// </summary>
6062
public Schedule()
6163
{
@@ -90,5 +92,32 @@ public Schedule()
9092
/// Gets or sets the schedule frequency.
9193
/// </summary>
9294
public ScheduleFrequency Frequency { get; set; }
95+
96+
/// <summary>
97+
/// Gets or sets the schedule time zone.
98+
/// </summary>
99+
public string TimeZone { get; set; }
100+
101+
#endregion Public Properties
102+
103+
#region Private Methods
104+
105+
private static DateTimeOffset? AdjustOffset(DateTimeOffset? dateTimeOffset, double offsetMinutes)
106+
{
107+
if (dateTimeOffset.HasValue)
108+
{
109+
return AdjustOffset(dateTimeOffset.Value, offsetMinutes);
110+
}
111+
112+
return null;
113+
}
114+
115+
private static DateTimeOffset AdjustOffset(DateTimeOffset dateTimeOffset, double offsetMinutes)
116+
{
117+
var timeSpan = TimeSpan.FromMinutes(offsetMinutes);
118+
return dateTimeOffset.ToOffset(timeSpan);
119+
}
120+
121+
#endregion Private Methods
93122
}
94123
}

src/ResourceManager/Automation/Commands.Automation/Model/ScheduleFrequency.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public enum ScheduleFrequency
1010
{
1111
Onetime,
1212
Day,
13-
Hour
13+
Hour,
14+
Week,
15+
Month,
1416
}
1517
}

src/ServiceManagement/Automation/Commands.Automation/Model/Schedule.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,11 @@ public Schedule(string automationAccountName, WindowsAzure.Management.Automation
4545
: this.NextRun;
4646
this.Interval = schedule.Properties.Interval.HasValue ? schedule.Properties.Interval.Value : this.Interval;
4747
this.Frequency = (ScheduleFrequency)Enum.Parse(typeof(ScheduleFrequency), schedule.Properties.Frequency, true);
48+
this.TimeZone = schedule.Properties.TimeZone;
4849
}
4950

5051
/// <summary>
51-
/// Initializes a new instance of the <see cref="HourlySchedule"/> class.
52+
/// Initializes a new instance of the <see cref="Schedule"/> class.
5253
/// </summary>
5354
public Schedule()
5455
{
@@ -108,5 +109,10 @@ public Schedule()
108109
/// Gets or sets the schedule frequency.
109110
/// </summary>
110111
public ScheduleFrequency Frequency { get; set; }
112+
113+
/// <summary>
114+
/// Gets or sets the schedule time zone.
115+
/// </summary>
116+
public string TimeZone { get; set; }
111117
}
112118
}

0 commit comments

Comments
 (0)