diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Commands.ServiceManagement.Preview.csproj b/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Commands.ServiceManagement.Preview.csproj index 0594de38902b..fbf763f44f82 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Commands.ServiceManagement.Preview.csproj +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/Commands.ServiceManagement.Preview.csproj @@ -116,7 +116,7 @@ False - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll False diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/packages.config b/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/packages.config index 241f0c10e04f..22cbd540e7f3 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/packages.config +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Preview/packages.config @@ -17,7 +17,7 @@ - + diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Commands.ServiceManagement.Test.csproj b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Commands.ServiceManagement.Test.csproj index 084d745e17c0..87d570016ddb 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Commands.ServiceManagement.Test.csproj +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Commands.ServiceManagement.Test.csproj @@ -108,8 +108,9 @@ ..\..\..\packages\Microsoft.WindowsAzure.Management.Compute.9.2.0\lib\net40\Microsoft.WindowsAzure.Management.Compute.dll - - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + + False + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll ..\..\..\packages\Microsoft.WindowsAzure.Management.Storage.5.0.0\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll @@ -288,7 +289,9 @@ + + @@ -419,6 +422,12 @@ + + PreserveNewest + + + PreserveNewest + diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/LocationBasedReservedIPTests.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/LocationBasedReservedIPTests.cs index fdc24a18e2ea..504b6afd1f5a 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/LocationBasedReservedIPTests.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/LocationBasedReservedIPTests.cs @@ -18,6 +18,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.WindowsAzure.Commands.ServiceManagement.Model; using Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.ConfigDataInfo; +using CM=Microsoft.WindowsAzure.Management.Compute.Models; namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests { @@ -199,6 +200,272 @@ public void CreateReservedIPThenWindowsVM() } } + [TestMethod(), Priority(0), TestProperty("Feature", "IaaS"), TestCategory(Category.Network), Owner("avgupt"), Description("Test the cmdlets (Remove-AzureReservedIPAssociation, New-AzureReservedIP,Get-AzureReservedIP,Remove-AzureReservedIP)")] + public void CreatePaaSDeploymentAssociateAndDisassociateReservedIp() + { + try + { + string reservedIpName = Utilities.GetUniqueShortName("ResrvdIP"); + string reservedIpLabel = Utilities.GetUniqueShortName("ResrvdIPLbl", 5); + string deploymentName = Utilities.GetUniqueShortName("Depl"); + string deploymentLabel = Utilities.GetUniqueShortName("DepLbl", 5); + + var input = new ReservedIPContext() + { + //Address = string.Empty, + DeploymentName = string.Empty, + Label = reservedIpLabel, + InUse = false, + Location = locationName, + ReservedIPName = reservedIpName, + State = "Created" + }; + + // Reserve a new IP + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.NewAzureReservedIP(reservedIpName, locationName, reservedIpLabel), "Reserve a new IP"); + //Get the reserved ip and verify the reserved Ip properties. + VerifyReservedIpNotInUse(input); + // Create a new VM with the reserved ip. + + Utilities.ExecuteAndLog(() => + vmPowershellCmdlets.NewAzureService(serviceName, locationName), + "Create a Hosted Service"); + + Utilities.ExecuteAndLog(() => + vmPowershellCmdlets.NewAzureDeployment(serviceName, + "HelloWorld_SDK20.cspkg", "ServiceConfiguration.cscfg", "Staging", + deploymentLabel, deploymentName, doNotStart: false, warning: false), + "Create a PaaS deployment"); + + + Utilities.ExecuteAndLog(() => + { + vmPowershellCmdlets.SetAzureReservedIPAssociation(reservedIpName, + serviceName, DeploymentSlotType.Staging); + }, "Create a new Azure Reserved IP Association"); + + + VerifyReservedIpInUse(serviceName, input, deploymentName); + + Utilities.ExecuteAndLog(() => + { + vmPowershellCmdlets.RemoveAzureReservedIPAssociation(reservedIpName, + serviceName, true, DeploymentSlotType.Staging); + }, "Remove a new Azure Reserved IP Association"); + + VerifyReservedIpNotInUse(input); + + Utilities.ExecuteAndLog(() => + { + vmPowershellCmdlets.RemoveAzureDeployment(serviceName, "Staging", true); + }, "Remove a new Azure Reserved IP Association"); + } + catch (Exception ex) + { + pass = false; + Console.WriteLine(ex.ToString()); + throw; + } + } + + [TestMethod(), Priority(0), TestProperty("Feature", "IaaS"), TestCategory(Category.Network), Owner("avgupt"), Description("Test the cmdlets (Set-AzureReservedIPAssociation, New-AzureReservedIP,Get-AzureReservedIP,Remove-AzureReservedIP)")] + public void CreateWindowsVMThenAssociateReservedIP() + { + try + { + string reservedIpName = Utilities.GetUniqueShortName("ResrvdIP"); + string reservedIpLabel = Utilities.GetUniqueShortName(" ResrvdIPLbl", 5); + string dnsName = Utilities.GetUniqueShortName("Dns"); + string vmName = Utilities.GetUniqueShortName(vmNamePrefix); + var input = new ReservedIPContext() + { + //Address = string.Empty, + DeploymentName = string.Empty, + Label = reservedIpLabel, + InUse = false, + Location = locationName, + ReservedIPName = reservedIpName, + State = "Created" + }; + + // Reserve a new IP + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.NewAzureReservedIP(reservedIpName, locationName, reservedIpLabel), "Reserve a new IP"); + //Get the reserved ip and verify the reserved Ip properties. + VerifyReservedIpNotInUse(input); + // Create a new VM with the reserved ip. + DnsServer dns = null; + Utilities.ExecuteAndLog(() => { dns = vmPowershellCmdlets.NewAzureDns(dnsName, DNS_IP); }, "Create a new Azure DNS"); + Utilities.ExecuteAndLog(() => + { + PersistentVM vm = CreateVMObjectWithDataDiskSubnetAndAvailibilitySet(vmName, OS.Windows); + vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, vnet, new[] { dns }, location: locationName); + }, "Create a new windows azure vm without reserved ip."); + + Utilities.ExecuteAndLog(() => { vmPowershellCmdlets.SetAzureReservedIPAssociation(reservedIpName, serviceName); }, "Create a new Azure Reserved IP Association"); + + + VerifyReservedIpInUse(serviceName, input); + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.RemoveAzureVM(vmName, serviceName, true), "Remove Azure VM and verify that a warning is given."); + VerifyReservedIpNotInUse(input); + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.RemoveAzureReservedIP(reservedIpName, true), "Release the reserved ip"); + VerifyReservedIpRemoved(reservedIpName); + pass = true; + } + catch (Exception ex) + { + pass = false; + Console.WriteLine(ex.ToString()); + throw; + } + } + + [TestMethod(), Priority(0), TestProperty("Feature", "IaaS"), TestCategory(Category.Network), Owner("avgupt"), Description("Expected failure when trying to associate to staging slot in IaaS (Set-AzureReservedIPAssociation, New-AzureReservedIP,Get-AzureReservedIP,Remove-AzureReservedIP)")] + public void TestAssociateReservedIPToStageSlotIaaSFails() + { + try + { + string reservedIpName = Utilities.GetUniqueShortName("ResrvdIP"); + string reservedIpLabel = Utilities.GetUniqueShortName(" ResrvdIPLbl", 5); + string dnsName = Utilities.GetUniqueShortName("Dns"); + string vmName = Utilities.GetUniqueShortName(vmNamePrefix); + var input = new ReservedIPContext() + { + //Address = string.Empty, + DeploymentName = string.Empty, + Label = reservedIpLabel, + InUse = false, + Location = locationName, + ReservedIPName = reservedIpName, + State = "Created" + }; + + // Reserve a new IP + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.NewAzureReservedIP(reservedIpName, locationName, reservedIpLabel), "Reserve a new IP"); + //Get the reserved ip and verify the reserved Ip properties. + VerifyReservedIpNotInUse(input); + // Create a new VM with the reserved ip. + DnsServer dns = null; + Utilities.ExecuteAndLog(() => { dns = vmPowershellCmdlets.NewAzureDns(dnsName, DNS_IP); }, "Create a new Azure DNS"); + Utilities.ExecuteAndLog(() => + { + PersistentVM vm = CreateVMObjectWithDataDiskSubnetAndAvailibilitySet(vmName, OS.Windows); + vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, vnet, new[] { dns }, location: locationName); + }, "Create a new windows azure vm without reserved ip."); + + Utilities.ExecuteAndLog(() => { vmPowershellCmdlets.SetAzureReservedIPAssociation(reservedIpName, + serviceName, DeploymentSlotType.Staging); }, "Create a new Azure Reserved IP Association"); + } + catch (Exception ex) + { + pass = true; + Console.WriteLine(ex.ToString()); + return; + } + throw new Exception("Test Did not fail as expected when association was tried on stage slot in IaaS"); + } + + [TestMethod(), Priority(0), TestProperty("Feature", "IaaS"), TestCategory(Category.Network), Owner("avgupt"), Description("Test the cmdlets (Remove-AzureReservedIPAssociation, New-AzureReservedIP,Get-AzureReservedIP,Remove-AzureReservedIP)")] + public void CreateWindowsVMWithReservedIPThenDisassociateReservedIP() + { + try + { + string reservedIpName = Utilities.GetUniqueShortName("ResrvdIP"); + string reservedIpLabel = Utilities.GetUniqueShortName(" ResrvdIPLbl", 5); + string dnsName = Utilities.GetUniqueShortName("Dns"); + string vmName = Utilities.GetUniqueShortName(vmNamePrefix); + var input = new ReservedIPContext() + { + //Address = string.Empty, + DeploymentName = string.Empty, + Label = reservedIpLabel, + InUse = false, + Location = locationName, + ReservedIPName = reservedIpName, + State = "Created" + }; + + // Reserve a new IP + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.NewAzureReservedIP(reservedIpName, locationName, reservedIpLabel), "Reserve a new IP"); + //Get the reserved ip and verify the reserved Ip properties. + VerifyReservedIpNotInUse(input); + // Create a new VM with the reserved ip. + DnsServer dns = null; + Utilities.ExecuteAndLog(() => { dns = vmPowershellCmdlets.NewAzureDns(dnsName, DNS_IP); }, "Create a new Azure DNS"); + Utilities.ExecuteAndLog(() => + { + PersistentVM vm = CreateVMObjectWithDataDiskSubnetAndAvailibilitySet(vmName, OS.Windows); + vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, vnet, new[] { dns }, location: locationName, reservedIPName: reservedIpName); + }, "Create a new windows azure vm with reserved ip."); + + VerifyReservedIpInUse(serviceName, input); + + Utilities.ExecuteAndLog(() => { vmPowershellCmdlets.RemoveAzureReservedIPAssociation(reservedIpName, serviceName, true); }, "Remove an Azure Reserved IP Association"); + + VerifyReservedIpNotInUse(input); + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.RemoveAzureVM(vmName, serviceName, true), "Remove Azure VM and verify that a warning is given."); + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.RemoveAzureReservedIP(reservedIpName, true), "Release the reserved ip"); + VerifyReservedIpRemoved(reservedIpName); + pass = true; + } + catch (Exception ex) + { + pass = false; + Console.WriteLine(ex.ToString()); + throw; + } + } + + [TestMethod(), Priority(0), TestProperty("Feature", "IaaS"), TestCategory(Category.Network), Owner("avgupt"), Description("Test the cmdlets (New-AzureReservedIP, Remove-AzureReservedIPAssociation, Get-AzureReservedIP,Remove-AzureReservedIP)")] + public void CreateWindowsVMThenReservedExistingIP() + { + try + { + string reservedIpName = Utilities.GetUniqueShortName("ResrvdIP"); + string reservedIpLabel = Utilities.GetUniqueShortName(" ResrvdIPLbl", 5); + string dnsName = Utilities.GetUniqueShortName("Dns"); + string vmName = Utilities.GetUniqueShortName(vmNamePrefix); + string deploymentName = Utilities.GetUniqueShortName("Depl"); + var input = new ReservedIPContext() + { + //Address = string.Empty, + DeploymentName = string.Empty, + Label = reservedIpLabel, + InUse = false, + Location = locationName, + ReservedIPName = reservedIpName, + State = "Created" + }; + + // Create a new VM with the reserved ip. + DnsServer dns = null; + Utilities.ExecuteAndLog(() => { dns = vmPowershellCmdlets.NewAzureDns(dnsName, DNS_IP); }, "Create a new Azure DNS"); + Utilities.ExecuteAndLog(() => + { + PersistentVM vm = CreateVMObjectWithDataDiskSubnetAndAvailibilitySet(vmName, OS.Windows); + vmPowershellCmdlets.NewAzureVM(serviceName, new[] { vm }, vnet, new[] { dns }, location: locationName); + }, "Create a new windows azure vm without reserved ip."); + + // Reserve an existing IP + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.NewAzureReservedIP(reservedIpName, locationName, serviceName, reservedIpLabel), "Reserve existing deployment IP"); + + VerifyReservedIpInUse(serviceName, input); + + Utilities.ExecuteAndLog(() => { vmPowershellCmdlets.RemoveAzureReservedIPAssociation(reservedIpName, serviceName, true); }, "Remove an Azure Reserved IP Association"); + + VerifyReservedIpNotInUse(input); + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.RemoveAzureVM(vmName, serviceName, true), "Remove Azure VM and verify that a warning is given."); + Utilities.ExecuteAndLog(() => vmPowershellCmdlets.RemoveAzureReservedIP(reservedIpName, true), "Release the reserved ip"); + VerifyReservedIpRemoved(reservedIpName); + pass = true; + } + catch (Exception ex) + { + pass = false; + Console.WriteLine(ex.ToString()); + throw; + } + } + [TestMethod(), Priority(0), TestProperty("Feature", "IaaS"), TestCategory(Category.Network), Owner("hylee"), Description("Test the cmdlets (New-AzureReservedIP,Get-AzureReservedIP,Remove-AzureReservedIP)")] public void CreateReservedIPThenLinuxVM() { @@ -382,11 +649,11 @@ private void VerifyReservedIpNotInUse(ReservedIPContext input) Utilities.ExecuteAndLog(() => VerifyReservedIp(input), string.Format("Verify that the reserved ip {0} is not in use", input.ReservedIPName)); } - private void VerifyReservedIpInUse(string serviceName,ReservedIPContext input) + private void VerifyReservedIpInUse(string serviceName,ReservedIPContext input, string deploymentName = null) { input.ServiceName = serviceName; input.InUse = true; - input.DeploymentName = serviceName; + input.DeploymentName = deploymentName ?? serviceName; Utilities.ExecuteAndLog(() => VerifyReservedIp(input), string.Format("Verify that the reserved ip {0} is in use", input.ReservedIPName)); } diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/NewAzureReservedIPCmdletInfo.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/NewAzureReservedIPCmdletInfo.cs index 97bd4b84bf96..5cae8ef2f444 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/NewAzureReservedIPCmdletInfo.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/NewAzureReservedIPCmdletInfo.cs @@ -13,6 +13,7 @@ // ---------------------------------------------------------------------------------- using Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.PowershellCore; +using Microsoft.WindowsAzure.Management.Compute.Models; namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.NetworkCmdletInfo { @@ -30,5 +31,13 @@ public NewAzureReservedIPCmdletInfo(string name, string location, string label) this.cmdletParams.Add(new CmdletParam("Label", label)); } } + + public NewAzureReservedIPCmdletInfo(string name, string location, string serviceName, string slot, string label): this(name, location, label) + { + this.cmdletName = Utilities.NewAzureReservedIPCmdletName; + + this.cmdletParams.Add(new CmdletParam("ServiceName", serviceName)); + this.cmdletParams.Add(new CmdletParam("Slot", slot)); + } } } diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/RemoveAzureReservedIPAssociationCmdletInfo.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/RemoveAzureReservedIPAssociationCmdletInfo.cs new file mode 100644 index 000000000000..26259fb24d0e --- /dev/null +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/RemoveAzureReservedIPAssociationCmdletInfo.cs @@ -0,0 +1,39 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.WindowsAzure.Commands.ServiceManagement.Model; +using Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.PowershellCore; + +namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.NetworkCmdletInfo +{ + class RemoveAzureReservedIPAssociationCmdletInfo : CmdletsInfo + { + public RemoveAzureReservedIPAssociationCmdletInfo(string reservedIpName, string serviceName, string slot, bool force) + { + this.cmdletName = Utilities.RemoveAzureReservedIPAssociationCmdletName; + + this.cmdletParams.Add(new CmdletParam("ReservedIPName", reservedIpName)); + this.cmdletParams.Add(new CmdletParam("ServiceName", serviceName)); + this.cmdletParams.Add(new CmdletParam("Slot", slot)); + if (force) + { + this.cmdletParams.Add(new CmdletParam("Force")); + } + } + public RemoveAzureReservedIPAssociationCmdletInfo(string reservedIpName, string serviceName) + : this(reservedIpName, serviceName, DeploymentSlotType.Production, true) + { + } + } +} diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/SetAzureReservedIPAssociationCmdletInfo.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/SetAzureReservedIPAssociationCmdletInfo.cs new file mode 100644 index 000000000000..cf855fca028d --- /dev/null +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/NetworkCmdletInfo/SetAzureReservedIPAssociationCmdletInfo.cs @@ -0,0 +1,35 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.WindowsAzure.Commands.ServiceManagement.Model; +using Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.PowershellCore; + +namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Test.FunctionalTests.NetworkCmdletInfo +{ + public class SetAzureReservedIPAssociationCmdletInfo : CmdletsInfo + { + public SetAzureReservedIPAssociationCmdletInfo(string reservedIpName, string serviceName, string slot) + { + this.cmdletName = Utilities.SetAzureReservedIPAssociationCmdletName; + + this.cmdletParams.Add(new CmdletParam("ReservedIPName", reservedIpName)); + this.cmdletParams.Add(new CmdletParam("ServiceName", serviceName)); + this.cmdletParams.Add(new CmdletParam("Slot", slot)); + } + public SetAzureReservedIPAssociationCmdletInfo(string reservedIpName, string serviceName) : this(reservedIpName, serviceName, DeploymentSlotType.Production) + { + } + + } +} diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementCmdletTestHelper.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementCmdletTestHelper.cs index 8fe798de884c..ff27015edc17 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementCmdletTestHelper.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementCmdletTestHelper.cs @@ -861,6 +861,21 @@ internal ManagementOperationContext NewAzureReservedIP(string name, string locat return RunPSCmdletAndReturnFirst(new NewAzureReservedIPCmdletInfo(name, location, label)); } + internal ManagementOperationContext NewAzureReservedIP(string name, string location, string serviceName, string label = null, string slot = SM.DeploymentSlotType.Production) + { + return RunPSCmdletAndReturnFirst(new NewAzureReservedIPCmdletInfo(name, location, serviceName, slot, label)); + } + + internal ManagementOperationContext SetAzureReservedIPAssociation(string reservedIpName, string serviceName, string slot = SM.DeploymentSlotType.Production) + { + return RunPSCmdletAndReturnFirst(new SetAzureReservedIPAssociationCmdletInfo(reservedIpName, serviceName, slot)); + } + + internal ManagementOperationContext RemoveAzureReservedIPAssociation(string reservedIpName, string serviceName, bool force, string slot = SM.DeploymentSlotType.Production) + { + return RunPSCmdletAndReturnFirst(new RemoveAzureReservedIPAssociationCmdletInfo(reservedIpName, serviceName, slot, force)); + } + internal Collection GetAzureReservedIP(string name = null) { return RunPSCmdletAndReturnAll(new GetAzureReservedIPCmdletInfo(name)); diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementTest.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementTest.cs index ade26545ec4b..da956f65e765 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementTest.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/ServiceManagementTest.cs @@ -143,7 +143,21 @@ private static string GetServiceManagementUrl(string publishSettingsFile) XDocument psf = XDocument.Load(publishSettingsFile); XElement pubData = psf.Descendants().FirstOrDefault(); XElement pubProfile = pubData.Elements().ToList()[0]; - return pubProfile.Attribute("Url").Value; + XAttribute urlattr = pubProfile.Attribute("Url"); + string url = string.Empty; + if (urlattr != null) + { + url = urlattr.Value; + } + else + { + var subscriptions = pubProfile.Elements("Subscription").ToList(); + if (subscriptions.Any()) + { + url = subscriptions[0].Attribute("ServiceManagementUrl").Value; + } + } + return url; } catch { diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/Utilities.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/Utilities.cs index 51190b6a96a1..1c9b5ae3f886 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/Utilities.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/FunctionalTests/Utilities.cs @@ -137,6 +137,8 @@ internal class Utilities public const string NewAzureReservedIPCmdletName = "New-AzureReservedIP"; public const string GetAzureReservedIPCmdletName = "Get-AzureReservedIP"; public const string RemoveAzureReservedIPCmdletName = "Remove-AzureReservedIP"; + public const string SetAzureReservedIPAssociationCmdletName = "Set-AzureReservedIPAssociation"; + public const string RemoveAzureReservedIPAssociationCmdletName = "Remove-AzureReservedIPAssociation"; // AzureRole & AzureRoleInstnace public const string GetAzureRoleCmdletName = "Get-AzureRole"; diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Resources/HelloWorld_SDK20.cspkg b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Resources/HelloWorld_SDK20.cspkg new file mode 100644 index 000000000000..b08a356e4da3 Binary files /dev/null and b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Resources/HelloWorld_SDK20.cspkg differ diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Resources/ServiceConfiguration.cscfg b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Resources/ServiceConfiguration.cscfg new file mode 100644 index 000000000000..af8f6673167d --- /dev/null +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/Resources/ServiceConfiguration.cscfg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/packages.config b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/packages.config index d9b9fc937fde..68157a95dca7 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/packages.config +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement.Test/packages.config @@ -17,7 +17,7 @@ - + diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/Commands.ServiceManagement.csproj b/src/ServiceManagement/Compute/Commands.ServiceManagement/Commands.ServiceManagement.csproj index 825d3f322264..c52d434a196c 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement/Commands.ServiceManagement.csproj +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/Commands.ServiceManagement.csproj @@ -118,7 +118,7 @@ False - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll False @@ -248,11 +248,13 @@ + + diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/NewAzureReservedIP.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/NewAzureReservedIP.cs index 8f18ba394a17..5c71f179b263 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/NewAzureReservedIP.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/NewAzureReservedIP.cs @@ -17,6 +17,9 @@ using Microsoft.WindowsAzure.Commands.Utilities.Common; using Microsoft.WindowsAzure.Management.Network.Models; using Microsoft.WindowsAzure.Management.Network; +using Microsoft.WindowsAzure.Management.Compute; +using Microsoft.WindowsAzure.Management.Compute.Models; +using System; namespace Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS { @@ -39,7 +42,7 @@ public string ReservedIPName [Parameter(Mandatory = false, Position = 1, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveNewIPParamSet, HelpMessage = "Reserved IP Label.")] [Parameter(Mandatory = false, Position = 3, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPUsingSlotParamSet, HelpMessage = "Reserved IP Label.")] - [Parameter(Mandatory = false, Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPParamSet, HelpMessage = "Reserved IP Label.")] + [Parameter(Mandatory = false, Position = 1, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPParamSet, HelpMessage = "Reserved IP Label.")] [ValidateNotNullOrEmpty] public string Label { @@ -49,7 +52,7 @@ public string Label [Parameter(Mandatory = true, Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveNewIPParamSet, HelpMessage = "Location Name.")] [Parameter(Mandatory = true, Position = 4, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPUsingSlotParamSet, HelpMessage = "Location Name.")] - [Parameter(Mandatory = true, Position = 3, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPParamSet, HelpMessage = "Location Name.")] + [Parameter(Mandatory = true, Position = 2, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPParamSet, HelpMessage = "Location Name.")] [ValidateNotNullOrEmpty] public string Location { @@ -57,9 +60,38 @@ public string Location set; } + [Parameter(Mandatory = true, Position = 3, ValueFromPipelineByPropertyName = true, ParameterSetName = ReserveInUseIPParamSet, HelpMessage = "Service Name.")] + [ValidateNotNullOrEmpty] + public string ServiceName + { + get; + set; + } + + [Parameter(Position = 4, Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Deployment slot [Staging | Production].")] + [ValidateSet(Microsoft.WindowsAzure.Commands.ServiceManagement.Model.DeploymentSlotType.Staging, Microsoft.WindowsAzure.Commands.ServiceManagement.Model.DeploymentSlotType.Production, IgnoreCase = true)] + public string Slot + { + get; + set; + } + protected override void OnProcessRecord() { ServiceManagementProfile.Initialize(); + string deploymentName = string.Empty; + + if (!string.IsNullOrEmpty(this.ServiceName)) + { + var slotType = string.IsNullOrEmpty(this.Slot) ? + DeploymentSlot.Production : + (DeploymentSlot)Enum.Parse(typeof(DeploymentSlot), this.Slot, true); + + + deploymentName = this.ComputeClient.Deployments.GetBySlot( + this.ServiceName, + slotType).Name; + } ExecuteClientActionNewSM( null, @@ -70,7 +102,9 @@ protected override void OnProcessRecord() { Name = this.ReservedIPName, Label = this.Label, - Location = this.Location + Location = this.Location, + ServiceName = this.ServiceName, + DeploymentName = deploymentName }; return this.NetworkClient.ReservedIPs.Create(parameters); diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/RemoveAzureReservedIPAssociation.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/RemoveAzureReservedIPAssociation.cs new file mode 100644 index 000000000000..6b49a4288e3c --- /dev/null +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/RemoveAzureReservedIPAssociation.cs @@ -0,0 +1,97 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.WindowsAzure.Commands.ServiceManagement.Model; +using Microsoft.WindowsAzure.Commands.ServiceManagement.Properties; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using Microsoft.WindowsAzure.Management.Compute; +using Microsoft.WindowsAzure.Management.Compute.Models; +using Microsoft.WindowsAzure.Management.Network; +using Microsoft.WindowsAzure.Management.Network.Models; +using System; +using System.Management.Automation; + +namespace Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS +{ + [Cmdlet(VerbsCommon.Remove, ReservedIPConstants.AssociationCmdletNoun), OutputType(typeof(ManagementOperationContext))] + public class RemoveAzureReservedIPAssociationCmdlet : ServiceManagementBaseCmdlet + { + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "Reserved IP Name.")] + [ValidateNotNullOrEmpty] + public string ReservedIPName + { + get; + set; + } + + [Parameter(Mandatory = false, Position = 1, ValueFromPipelineByPropertyName = true, HelpMessage = "Hosted Service Name.")] + [ValidateNotNullOrEmpty] + public string ServiceName + { + get; + set; + } + + [Parameter(Position = 2, Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Deployment slot [Staging | Production].")] + [ValidateSet(Microsoft.WindowsAzure.Commands.ServiceManagement.Model.DeploymentSlotType.Staging, Microsoft.WindowsAzure.Commands.ServiceManagement.Model.DeploymentSlotType.Production, IgnoreCase = true)] + public string Slot + { + get; + set; + } + + [Parameter(Position = 3, Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Do not confirm removal of reserved IP Association")] + public SwitchParameter Force + { + get; + set; + } + + protected override void OnProcessRecord() + { + if (this.Force.IsPresent || this.ShouldContinue(Resources.ReservedIPAssociationWillBeRemoved, Resources.RemoveReservedIPAssociation)) + { + this.ProcessRemoveAssociation(); + } + } + + private void ProcessRemoveAssociation() + { + ServiceManagementProfile.Initialize(); + + var slotType = string.IsNullOrEmpty(this.Slot) ? + DeploymentSlot.Production : + (DeploymentSlot)Enum.Parse(typeof(DeploymentSlot), this.Slot, true); + + + string deploymentName = this.ComputeClient.Deployments.GetBySlot( + this.ServiceName, + slotType).Name; + + ExecuteClientActionNewSM( + null, + CommandRuntime.ToString(), + () => + { + var parameters = new NetworkReservedIPMobilityParameters + { + ServiceName = this.ServiceName, + DeploymentName = deploymentName + }; + + return this.NetworkClient.ReservedIPs.Disassociate(this.ReservedIPName, parameters); + }); + } + } +} diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/SetAzureReservedIPAssociation.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/SetAzureReservedIPAssociation.cs new file mode 100644 index 000000000000..c45fef3b9330 --- /dev/null +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/IaaS/Network/SetAzureReservedIPAssociation.cs @@ -0,0 +1,81 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using Microsoft.WindowsAzure.Commands.ServiceManagement.Model; +using Microsoft.WindowsAzure.Commands.Utilities.Common; +using Microsoft.WindowsAzure.Management.Compute; +using Microsoft.WindowsAzure.Management.Compute.Models; +using Microsoft.WindowsAzure.Management.Network; +using Microsoft.WindowsAzure.Management.Network.Models; +using System; +using System.Management.Automation; + +namespace Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS +{ + [Cmdlet(VerbsCommon.Set, ReservedIPConstants.AssociationCmdletNoun), OutputType(typeof(ManagementOperationContext))] + public class SetAzureReservedIPAssociationCmdlet : ServiceManagementBaseCmdlet + { + [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "Reserved IP Name.")] + [ValidateNotNullOrEmpty] + public string ReservedIPName + { + get; + set; + } + + [Parameter(Mandatory = false, Position = 1, ValueFromPipelineByPropertyName = true, HelpMessage = "Hosted Service Name.")] + [ValidateNotNullOrEmpty] + public string ServiceName + { + get; + set; + } + + [Parameter(Position = 2, Mandatory = false, ValueFromPipelineByPropertyName = true, HelpMessage = "Deployment slot [Staging | Production].")] + [ValidateSet(Microsoft.WindowsAzure.Commands.ServiceManagement.Model.DeploymentSlotType.Staging, Microsoft.WindowsAzure.Commands.ServiceManagement.Model.DeploymentSlotType.Production, IgnoreCase = true)] + public string Slot + { + get; + set; + } + + protected override void OnProcessRecord() + { + ServiceManagementProfile.Initialize(); + + var slotType = string.IsNullOrEmpty(this.Slot) ? + DeploymentSlot.Production : + (DeploymentSlot)Enum.Parse(typeof(DeploymentSlot), this.Slot, true); + + + string deploymentName = this.ComputeClient.Deployments.GetBySlot( + this.ServiceName, + slotType).Name; + + ExecuteClientActionNewSM( + null, + CommandRuntime.ToString(), + () => + { + var parameters = new NetworkReservedIPMobilityParameters + { + ServiceName = this.ServiceName, + DeploymentName = deploymentName + }; + + return this.NetworkClient.ReservedIPs.Associate(this.ReservedIPName, parameters); + }); + } + } +} diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/Model/ReservedIPConstants.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement/Model/ReservedIPConstants.cs index 636226b86b4d..456f9fb1f6a3 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement/Model/ReservedIPConstants.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/Model/ReservedIPConstants.cs @@ -18,5 +18,6 @@ namespace Microsoft.WindowsAzure.Commands.ServiceManagement.Model public static class ReservedIPConstants { public const string CmdletNoun = "AzureReservedIP"; + public const string AssociationCmdletNoun = "AzureReservedIPAssociation"; } } diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.Designer.cs b/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.Designer.cs index ca25e048e674..23a835bdf135 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.Designer.cs +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.Designer.cs @@ -1553,6 +1553,15 @@ public static string RemoveAzureDnsServerWarning { } } + /// + /// Looks up a localized string similar to Remove Reserved IP Association. + /// + public static string RemoveReservedIPAssociation { + get { + return ResourceManager.GetString("RemoveReservedIPAssociation", resourceCulture); + } + } + /// /// Looks up a localized string similar to Are you sure you want to remove the Reserved IP from your subscription?. /// @@ -1571,6 +1580,15 @@ public static string RemoveReservedIPWhatIfMessage { } } + /// + /// Looks up a localized string similar to This cmdlet will remove the reserved ip association from the specified service. Do you want to continue?. + /// + public static string ReservedIPAssociationWillBeRemoved { + get { + return ResourceManager.GetString("ReservedIPAssociationWillBeRemoved", resourceCulture); + } + } + /// /// Looks up a localized string similar to Reserved IP with the Name:'{0}' will no longer be in use after the last VM in the Cloud Service is deleted, it is still reserved in your subscription for later use. Please note that the Reserved IPs that are not associated with a deployment will incur billing charges.. /// diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.resx b/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.resx index c7ba05805789..c6ce24308ea0 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.resx +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/Properties/Resources.resx @@ -802,4 +802,10 @@ The file needs to be a PowerShell script (.ps1 or .psm1). VM "{0}" is not currently associated with a Network Security Group. + + Remove Reserved IP Association + + + This cmdlet will remove the reserved ip association from the specified service. Do you want to continue? + \ No newline at end of file diff --git a/src/ServiceManagement/Compute/Commands.ServiceManagement/packages.config b/src/ServiceManagement/Compute/Commands.ServiceManagement/packages.config index 241f0c10e04f..22cbd540e7f3 100644 --- a/src/ServiceManagement/Compute/Commands.ServiceManagement/packages.config +++ b/src/ServiceManagement/Compute/Commands.ServiceManagement/packages.config @@ -17,7 +17,7 @@ - + diff --git a/src/ServiceManagement/Network/Commands.Network.Test/Commands.Network.Test.csproj b/src/ServiceManagement/Network/Commands.Network.Test/Commands.Network.Test.csproj index 0cf6fb63975f..dcaa78ed1077 100644 --- a/src/ServiceManagement/Network/Commands.Network.Test/Commands.Network.Test.csproj +++ b/src/ServiceManagement/Network/Commands.Network.Test/Commands.Network.Test.csproj @@ -94,8 +94,9 @@ False ..\..\..\packages\Microsoft.WindowsAzure.Management.4.0.1\lib\net40\Microsoft.WindowsAzure.Management.dll - - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + + False + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll False diff --git a/src/ServiceManagement/Network/Commands.Network.Test/packages.config b/src/ServiceManagement/Network/Commands.Network.Test/packages.config index bf57e8fe4478..88a3ad1bd43a 100644 --- a/src/ServiceManagement/Network/Commands.Network.Test/packages.config +++ b/src/ServiceManagement/Network/Commands.Network.Test/packages.config @@ -16,7 +16,7 @@ - + diff --git a/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj b/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj index 522c1ff5fa78..d7b9fa37fee4 100644 --- a/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj +++ b/src/ServiceManagement/Network/Commands.Network/Commands.Network.csproj @@ -82,7 +82,7 @@ False - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll False diff --git a/src/ServiceManagement/Network/Commands.Network/packages.config b/src/ServiceManagement/Network/Commands.Network/packages.config index ab336ea7a0a9..d4b254f6437a 100644 --- a/src/ServiceManagement/Network/Commands.Network/packages.config +++ b/src/ServiceManagement/Network/Commands.Network/packages.config @@ -16,7 +16,7 @@ - + diff --git a/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj b/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj index 771b6305cc6f..62063fd5ee11 100644 --- a/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj +++ b/src/ServiceManagement/Services/Commands.Utilities/Commands.Utilities.csproj @@ -127,7 +127,7 @@ False - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll False diff --git a/src/ServiceManagement/Services/Commands.Utilities/packages.config b/src/ServiceManagement/Services/Commands.Utilities/packages.config index bcdccf9eee0c..4c3fb74a0320 100644 --- a/src/ServiceManagement/Services/Commands.Utilities/packages.config +++ b/src/ServiceManagement/Services/Commands.Utilities/packages.config @@ -18,7 +18,7 @@ - + diff --git a/src/ServiceManagement/Services/Commands/Commands.csproj b/src/ServiceManagement/Services/Commands/Commands.csproj index 220b9e0ab5ce..0e1f796efc28 100644 --- a/src/ServiceManagement/Services/Commands/Commands.csproj +++ b/src/ServiceManagement/Services/Commands/Commands.csproj @@ -125,7 +125,7 @@ False - ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.1\lib\net40\Microsoft.WindowsAzure.Management.Network.dll + ..\..\..\packages\Microsoft.WindowsAzure.Management.Network.6.1.2\lib\net40\Microsoft.WindowsAzure.Management.Network.dll False diff --git a/src/ServiceManagement/Services/Commands/packages.config b/src/ServiceManagement/Services/Commands/packages.config index 9ec78a84ee35..8d57c2b1ecc5 100644 --- a/src/ServiceManagement/Services/Commands/packages.config +++ b/src/ServiceManagement/Services/Commands/packages.config @@ -17,7 +17,7 @@ - +