Skip to content

Commit 4d36404

Browse files
committed
merging latest phase 2
2 parents ea5229f + b756358 commit 4d36404

14 files changed

+279
-137
lines changed

src/ServiceManagement/StorSimple/Commands.StorSimple/Cmdlets/DataContainer/NewAzureStorSimpleDeviceVolumeContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public override void ExecuteCmdlet()
6767

6868
if(EncryptionEnabled == true && (string.IsNullOrEmpty(EncryptionKey) || !IsValidAsciiString(EncryptionKey)))
6969
{
70-
throw new ArgumentNullException("EncryptionKey");
70+
throw new ArgumentException(Resources.EncryptionKeyNotAcceptableMessage);
7171
}
7272

7373
string encryptedKey = null;

src/ServiceManagement/StorSimple/Commands.StorSimple/Cmdlets/DeviceDetails/NewAzureStorSimpleNetworkConfig.cs

Lines changed: 28 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -31,76 +31,77 @@ public class NewAzureStorSimpleNetworkConfig : StorSimpleCmdletBase
3131
{
3232
#region Parameters
3333

34+
/// <summary>
35+
/// Interface alias of interface for which settings are being supplied. A value
36+
/// from Data0 to Data5
37+
/// </summary>
38+
[Parameter(Mandatory = true, Position = 0, HelpMessage = StorSimpleCmdletHelpMessage.InterfaceAlias)]
39+
[ValidateSetAttribute(new string[] { "Data0", "Data1", "Data2", "Data3", "Data4", "Data5" })]
40+
public string InterfaceAlias { get; set; }
41+
3442
/// <summary>
3543
/// Whether the net interface is iscsi enabled/disabled
3644
/// </summary>
37-
[Parameter(Mandatory=false, Position = 0, HelpMessage = StorSimpleCmdletHelpMessage.IsIscsiEnabled)]
45+
[Parameter(Mandatory=false, Position = 1, HelpMessage = StorSimpleCmdletHelpMessage.IsIscsiEnabled)]
3846
[ValidateNotNullOrEmpty]
3947
public bool? EnableIscsi { get; set; }
4048

4149
/// <summary>
4250
/// Whether the net interface is cloud enabled/disabled
4351
/// </summary>
44-
[Parameter(Mandatory = false, Position = 1, HelpMessage = StorSimpleCmdletHelpMessage.IsCloudEnabled)]
52+
[Parameter(Mandatory = false, Position = 2, HelpMessage = StorSimpleCmdletHelpMessage.IsCloudEnabled)]
4553
[ValidateNotNullOrEmpty]
4654
public bool? EnableCloud { get; set; }
4755

4856
/// <summary>
4957
/// IPv4Address for controller 0, should be used only with Data0 interface
5058
/// </summary>
51-
[Parameter(Mandatory = false, Position = 2, HelpMessage = StorSimpleCmdletHelpMessage.Controller0IPv4Address)]
59+
[Parameter(Mandatory = false, Position = 3, HelpMessage = StorSimpleCmdletHelpMessage.Controller0IPv4Address)]
5260
[ValidateNotNullOrEmpty]
5361
public string Controller0IPv4Address { get; set; }
5462

5563
/// <summary>
5664
/// IPv4Address for controller 1, should be used only with Data0 interface
5765
/// </summary>
58-
[Parameter(Mandatory = false, Position = 3, HelpMessage = StorSimpleCmdletHelpMessage.Controller1IPv4Address)]
66+
[Parameter(Mandatory = false, Position = 4, HelpMessage = StorSimpleCmdletHelpMessage.Controller1IPv4Address)]
5967
[ValidateNotNullOrEmpty]
6068
public string Controller1IPv4Address { get; set; }
6169

6270
/// <summary>
6371
/// IPv4 net mask for interface
6472
/// </summary>
65-
[Parameter(Mandatory = false, Position = 4, HelpMessage = StorSimpleCmdletHelpMessage.IPv6Gateway)]
73+
[Parameter(Mandatory = false, Position = 5, HelpMessage = StorSimpleCmdletHelpMessage.IPv6Gateway)]
6674
[ValidateNotNullOrEmpty]
6775
public string IPv6Gateway { get; set; }
6876

6977
/// <summary>
7078
/// IPv4 Address of gateway
7179
/// </summary>
72-
[Parameter(Mandatory = false, Position = 5, HelpMessage = StorSimpleCmdletHelpMessage.IPv4Gateway)]
80+
[Parameter(Mandatory = false, Position = 6, HelpMessage = StorSimpleCmdletHelpMessage.IPv4Gateway)]
7381
[ValidateNotNullOrEmpty]
7482
public string IPv4Gateway { get; set; }
7583

7684
/// <summary>
7785
/// IPv4 Address for the net interface
7886
/// </summary>
79-
[Parameter(Mandatory = false, Position = 6, HelpMessage = StorSimpleCmdletHelpMessage.IPv4Address)]
87+
[Parameter(Mandatory = false, Position = 7, HelpMessage = StorSimpleCmdletHelpMessage.IPv4Address)]
8088
[ValidateNotNullOrEmpty]
8189
public string IPv4Address { get; set; }
8290

8391
/// <summary>
8492
/// IPv6 Prefix for the net interface
8593
/// </summary>
86-
[Parameter(Mandatory = false, Position = 7, HelpMessage = StorSimpleCmdletHelpMessage.IPv6Prefix)]
94+
[Parameter(Mandatory = false, Position = 8, HelpMessage = StorSimpleCmdletHelpMessage.IPv6Prefix)]
8795
[ValidateNotNullOrEmpty]
8896
public string IPv6Prefix { get; set; }
8997

9098
/// <summary>
9199
/// IPv4 netmask for this interface
92100
/// </summary>
93-
[Parameter(Mandatory = false, Position = 8, HelpMessage = StorSimpleCmdletHelpMessage.IPv4Netmask)]
101+
[Parameter(Mandatory = false, Position = 9, HelpMessage = StorSimpleCmdletHelpMessage.IPv4Netmask)]
94102
[ValidateNotNullOrEmpty]
95103
public string IPv4Netmask { get; set; }
96104

97-
/// <summary>
98-
/// Interface alias of interface for which settings are being supplied. A value
99-
/// from Data0 to Data5
100-
/// </summary>
101-
[Parameter(Mandatory = true, Position = 9, HelpMessage = StorSimpleCmdletHelpMessage.InterfaceAlias)]
102-
[ValidateSetAttribute(new string[] { "Data0", "Data1", "Data2", "Data3", "Data4", "Data5" })]
103-
public string InterfaceAlias { get; set; }
104105
#endregion
105106

106107
private IPAddress controller0Address;
@@ -113,13 +114,9 @@ public class NewAzureStorSimpleNetworkConfig : StorSimpleCmdletBase
113114

114115
public override void ExecuteCmdlet()
115116
{
116-
if (!ProcessParameters())
117-
{
118-
WriteObject(null);
119-
return;
120-
}
121117
try
122118
{
119+
ProcessParameters();
123120
var netConfig = new NetworkConfig
124121
{
125122
IsIscsiEnabled = EnableIscsi,
@@ -144,63 +141,39 @@ public override void ExecuteCmdlet()
144141
}
145142
}
146143

147-
private bool ProcessParameters(){
144+
private void ProcessParameters(){
148145
// parse interfaceAlias
149146
if (!Enum.TryParse<NetInterfaceId>(InterfaceAlias, out interfaceAlias))
150147
{
151-
WriteVerbose(string.Format(Resources.InvalidInterfaceId, InterfaceAlias));
152-
return false;
148+
throw new ArgumentException(string.Format(Resources.InvalidInterfaceId, InterfaceAlias));
153149
}
154150

155151
// Try and set all the IP address
156-
if (!TrySetIPAddress(Controller0IPv4Address, out controller0Address, "Controller0IPv4Address"))
157-
{
158-
return false;
159-
}
160-
if (!TrySetIPAddress(Controller1IPv4Address, out controller1Address, "Controller1IPv4Address"))
161-
{
162-
return false;
163-
}
164-
if (!TrySetIPAddress(IPv4Address, out ipv4Address, "IPv4Address"))
165-
{
166-
return false;
167-
}
168-
if (!TrySetIPAddress(IPv4Gateway, out ipv4Gateway, "IPv4Gateway"))
169-
{
170-
return false;
171-
}
172-
if (!TrySetIPAddress(IPv4Netmask, out ipv4Netmask, "IPv4Netmask"))
173-
{
174-
return false;
175-
}
176-
if(!TrySetIPAddress(IPv6Gateway, out ipv6Gateway, "IPv6Gateway"))
177-
{
178-
return false;
179-
}
152+
TrySetIPAddress(Controller0IPv4Address, out controller0Address, "Controller0IPv4Address");
153+
TrySetIPAddress(Controller1IPv4Address, out controller1Address, "Controller1IPv4Address");
154+
TrySetIPAddress(IPv4Address, out ipv4Address, "IPv4Address");
155+
TrySetIPAddress(IPv4Gateway, out ipv4Gateway, "IPv4Gateway");
156+
TrySetIPAddress(IPv4Netmask, out ipv4Netmask, "IPv4Netmask");
157+
TrySetIPAddress(IPv6Gateway, out ipv6Gateway, "IPv6Gateway");
180158

181159
// Only EnableIscsi, Controller0 and controller1 IP Addresses can be set on Data0
182160
if (InterfaceAlias == NetInterfaceId.Data0.ToString())
183161
{
184162
if(IPv4Address != null || IPv4Gateway != null || IPv4Netmask != null
185163
&& IPv6Gateway != null || IPv6Prefix != null || EnableCloud != null)
186164
{
187-
WriteVerbose(Resources.NetworkConfigData0AllowedSettings);
188-
return false;
165+
throw new ArgumentException(Resources.NetworkConfigData0AllowedSettings);
189166
}
190167
}
191168
// On other interfaces (non-Data0), Controller0 and Controller1 IP Addresses cannot be set
192169
else
193170
{
194171
if (Controller0IPv4Address != null || Controller1IPv4Address != null)
195172
{
196-
WriteVerbose(Resources.NetworkConfigControllerIPsNotAllowedOnOthers);
197-
return false;
173+
throw new ArgumentException(Resources.NetworkConfigControllerIPsNotAllowedOnOthers);
198174
}
199175
}
200-
201-
return true;
202176
}
203-
204177
}
205178
}
206179

src/ServiceManagement/StorSimple/Commands.StorSimple/Cmdlets/DeviceDetails/SetAzureStorSimpleDevice.cs

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -82,35 +82,25 @@ public override void ExecuteCmdlet()
8282
try
8383
{
8484
// Make sure params were supplied appropriately.
85-
if (!ProcessParameters())
86-
{
87-
return;
88-
}
85+
ProcessParameters();
8986

9087
// Get the current device details.
9188
var deviceDetails = StorSimpleClient.GetDeviceDetails(DeviceId);
9289

9390
if (deviceDetails == null)
9491
{
95-
WriteVerbose(string.Format(Resources.NoDeviceFoundWithGivenIdInResourceMessage, StorSimpleContext.ResourceName, DeviceId));
96-
WriteObject(null);
97-
return;
92+
throw new ArgumentException(string.Format(Resources.NoDeviceFoundWithGivenIdInResourceMessage, StorSimpleContext.ResourceName, DeviceId));
9893
}
9994

10095
// If the device is being configured for the first time, validate that mandatory params
10196
// for first setup have been provided
10297
if (!deviceDetails.DeviceProperties.IsConfigUpdated && !ValidParamsForFirstDeviceConfiguration(StorSimpleNetworkConfig, TimeZone, SecondaryDnsServer))
10398
{
104-
WriteVerbose(Resources.MandatoryParamsMissingForInitialDeviceConfiguration);
105-
WriteObject(null);
106-
return;
107-
}
108-
109-
if (!this.ValidateNetworkConfigs(deviceDetails, StorSimpleNetworkConfig))
110-
{
111-
return;
99+
throw new ArgumentException(Resources.MandatoryParamsMissingForInitialDeviceConfiguration);
112100
}
113101

102+
// Validate Network configs - this method throws an exception if any validation fails
103+
ValidateNetworkConfigs(deviceDetails, StorSimpleNetworkConfig);
114104

115105
WriteVerbose(string.Format(Resources.BeginningDeviceConfiguration, deviceDetails.DeviceProperties.FriendlyName));
116106

@@ -133,25 +123,29 @@ public override void ExecuteCmdlet()
133123
}
134124
}
135125

136-
private bool ProcessParameters()
126+
private void ProcessParameters()
137127
{
128+
// Make sure that atleast one of the settings has been provided.
129+
// Its no use making a request when the user didnt specify any of
130+
// the settings.
131+
if (string.IsNullOrEmpty(NewName) && TimeZone == null &&
132+
string.IsNullOrEmpty(SecondaryDnsServer) &&
133+
(StorSimpleNetworkConfig == null || StorSimpleNetworkConfig.Count() < 1))
134+
{
135+
throw new ArgumentException(Resources.SetAzureStorSimpleDeviceNoSettingsProvided);
136+
}
137+
138138
// Make sure that the DeviceId property has the appropriate value irrespective of the parameter set
139139
if (ParameterSetName == StorSimpleCmdletParameterSet.IdentifyByName)
140140
{
141141
var deviceId = StorSimpleClient.GetDeviceId(DeviceName);
142142
if (deviceId == null)
143143
{
144-
WriteVerbose(string.Format(Resources.NoDeviceFoundWithGivenNameInResourceMessage, StorSimpleContext.ResourceName, DeviceName));
145-
WriteObject(null);
146-
return false;
144+
throw new ArgumentException(string.Format(Resources.NoDeviceFoundWithGivenNameInResourceMessage, StorSimpleContext.ResourceName, DeviceName));
147145
}
148146
DeviceId = deviceId;
149147
}
150-
if (!TrySetIPAddress(SecondaryDnsServer, out secondaryDnsServer, "SecondaryDnsServer"))
151-
{
152-
return false;
153-
}
154-
return true;
148+
TrySetIPAddress(SecondaryDnsServer, out secondaryDnsServer, "SecondaryDnsServer");
155149
}
156150
}
157151
}

src/ServiceManagement/StorSimple/Commands.StorSimple/Cmdlets/DeviceDetails/SetAzureStorSimpleVirtualDevice.cs

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,46 @@ public class SetAzureStorSimpleVirtualDevice : StorSimpleCmdletBase
3838
[Parameter(Mandatory = true, Position = 0, HelpMessage = StorSimpleCmdletHelpMessage.DeviceName)]
3939
[ValidateNotNullOrEmpty]
4040
public string DeviceName { get; set; }
41-
42-
/// <summary>
43-
/// TimeZone for the device.
44-
/// </summary>
45-
[Parameter(Mandatory = false, Position = 1, HelpMessage = StorSimpleCmdletHelpMessage.TimeZone, ValueFromPipeline=true)]
46-
[ValidateNotNullOrEmpty]
47-
public TimeZoneInfo TimeZone { get; set; }
4841

4942
/// <summary>
5043
/// Service Encryption Key for the resource.
5144
/// </summary>
52-
[Parameter(Mandatory=true, Position = 2, HelpMessage = StorSimpleCmdletHelpMessage.SEK)]
45+
[Parameter(Mandatory=true, Position = 1, HelpMessage = StorSimpleCmdletHelpMessage.SEK)]
5346
[ValidateNotNullOrEmpty]
5447
public string SecretKey { get; set; }
5548

49+
/// <summary>
50+
/// Device administrator password
51+
/// </summary>
52+
[Parameter(Mandatory=true, Position=2, HelpMessage = StorSimpleCmdletHelpMessage.AdministratorPasswd)]
53+
[ValidateNotNullOrEmpty]
54+
public string AdministratorPassword { get; set; }
55+
56+
/// <summary>
57+
/// Snapshot manager password
58+
/// </summary>
59+
[Parameter(Mandatory=true, Position=3, HelpMessage=StorSimpleCmdletHelpMessage.SnapshotManagerPasswd)]
60+
[ValidateNotNullOrEmpty]
61+
public string SnapshotManagerPassword { get; set; }
62+
63+
/// <summary>
64+
/// TimeZone for the device.
65+
/// </summary>
66+
[Parameter(Mandatory = false, Position = 4, HelpMessage = StorSimpleCmdletHelpMessage.TimeZone, ValueFromPipeline = true)]
67+
[ValidateNotNullOrEmpty]
68+
public TimeZoneInfo TimeZone { get; set; }
69+
5670
public override void ExecuteCmdlet()
5771
{
5872
try
5973
{
74+
ValidateParams();
75+
6076
// Make sure we have a device for supplied name and get its device id.
6177
var deviceId = StorSimpleClient.GetDeviceId(DeviceName);
6278
if (deviceId == null)
6379
{
64-
WriteVerbose(string.Format(Resources.NoDeviceFoundWithGivenNameInResourceMessage, StorSimpleContext.ResourceName, DeviceName));
65-
WriteObject(null);
66-
return;
80+
throw new ArgumentException(string.Format(Resources.NoDeviceFoundWithGivenNameInResourceMessage, StorSimpleContext.ResourceName, DeviceName));
6781
}
6882

6983
// Get the current device details. ( If we found id from the name, this call is bound to succeed)
@@ -73,7 +87,8 @@ public override void ExecuteCmdlet()
7387
string cik = EncryptionCmdLetHelper.RetrieveCIK(this, StorSimpleContext.ResourceId);
7488

7589
// Update device details.
76-
StorSimpleClient.UpdateVirtualDeviceDetails(deviceDetails, TimeZone, SecretKey, cik);
90+
var cryptoManager = new StorSimpleCryptoManager(StorSimpleClient);
91+
StorSimpleClient.UpdateVirtualDeviceDetails(deviceDetails, TimeZone, SecretKey, AdministratorPassword, SnapshotManagerPassword, cik, cryptoManager);
7792

7893
// Make request with updated data
7994
WriteVerbose(string.Format(Resources.BeginningDeviceConfiguration, deviceDetails.DeviceProperties.FriendlyName));
@@ -92,7 +107,17 @@ public override void ExecuteCmdlet()
92107
this.HandleException(exception);
93108
}
94109
}
95-
110+
111+
/// <summary>
112+
///
113+
/// </summary>
114+
/// <returns></returns>
115+
private void ValidateParams() {
116+
ValidateLength(AdministratorPassword, 8, 15, Resources.AdminPasswordLengthError);
117+
ValidateLength(SnapshotManagerPassword, 14, 15, Resources.SnapshotPasswordLengthError);
118+
ValidatePasswordComplexity(AdministratorPassword, "AdministratorPassword");
119+
ValidatePasswordComplexity(SnapshotManagerPassword, "SnapshotManagerPassword");
120+
}
96121
}
97122
}
98123

0 commit comments

Comments
 (0)