public void FirewallTest() { string executingAssemblyPath = typeof(AnalysisServices.Tests.ScenarioTests.ServerOperationsTests).GetTypeInfo().Assembly.Location; HttpMockServer.RecordsDirectory = Path.Combine(Path.GetDirectoryName(executingAssemblyPath), "SessionRecords"); var s1SKU = "S1"; var sampleIPV4FirewallSetting = new IPv4FirewallSettings() { EnablePowerBIService = "True", FirewallRules = new List <IPv4FirewallRule>() { new IPv4FirewallRule() { FirewallRuleName = "rule1", RangeStart = "0.0.0.0", RangeEnd = "255.255.255.255" }, new IPv4FirewallRule() { FirewallRuleName = "rule2", RangeStart = "7.7.7.7", RangeEnd = "8.8.8.8" }, } }; using (var context = MockContext.Start(this.GetType())) { var client = this.GetAnalysisServicesClient(context); AnalysisServicesServer analysisServicesServer = AnalysisServicesTestUtilities.GetDefaultAnalysisServicesResource(); SkuEnumerationForNewResourceResult skusListForNew = client.Servers.ListSkusForNew(); analysisServicesServer.Sku = skusListForNew.Value.Where((s) => s.Name == s1SKU).First(); analysisServicesServer.IpV4FirewallSettings = sampleIPV4FirewallSetting; AnalysisServicesServer resultCreate = null; try { Console.Out.Write(analysisServicesServer.Sku.Capacity); // Create a test server resultCreate = client.Servers.Create( AnalysisServicesTestUtilities.DefaultResourceGroup, AnalysisServicesTestUtilities.DefaultServerName, analysisServicesServer); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Assert.Equal("Succeeded", resultCreate.ProvisioningState); Assert.Equal("Succeeded", resultCreate.State); // get the server and ensure that all the values are properly set. var resultGet = client.Servers.GetDetails(AnalysisServicesTestUtilities.DefaultResourceGroup, AnalysisServicesTestUtilities.DefaultServerName); // validate the server creation process Assert.Equal(AnalysisServicesTestUtilities.DefaultLocation, resultGet.Location); Assert.Equal(AnalysisServicesTestUtilities.DefaultServerName, resultGet.Name); Assert.NotEmpty(resultGet.ServerFullName); Assert.Equal(analysisServicesServer.Sku.Name, resultGet.Sku.Name); Assert.Equal(2, resultGet.Tags.Count); Assert.True(resultGet.Tags.ContainsKey("key1")); Assert.Equal(2, resultGet.AsAdministrators.Members.Count); Assert.Equal("Microsoft.AnalysisServices/servers", resultGet.Type); Assert.Equal(sampleIPV4FirewallSetting.EnablePowerBIService, resultGet.IpV4FirewallSettings.EnablePowerBIService); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.Count(), resultGet.IpV4FirewallSettings.FirewallRules.Count()); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.First().FirewallRuleName, resultGet.IpV4FirewallSettings.FirewallRules.First().FirewallRuleName); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.First().RangeStart, resultGet.IpV4FirewallSettings.FirewallRules.First().RangeStart); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.First().RangeEnd, resultGet.IpV4FirewallSettings.FirewallRules.First().RangeEnd); // Confirm that the server creation did succeed Assert.True(resultGet.ProvisioningState == "Succeeded"); Assert.True(resultGet.State == "Succeeded"); // Update firewall and verify ResourceSku newSku = resultGet.Sku; sampleIPV4FirewallSetting.EnablePowerBIService = "False"; sampleIPV4FirewallSetting.FirewallRules = new List <IPv4FirewallRule>() { new IPv4FirewallRule() { FirewallRuleName = "rule3", RangeStart = "6.6.6.6", RangeEnd = "255.255.255.255" } }; AnalysisServicesServerUpdateParameters updateParameters = new AnalysisServicesServerUpdateParameters() { IpV4FirewallSettings = sampleIPV4FirewallSetting }; var resultUpdate = client.Servers.Update( AnalysisServicesTestUtilities.DefaultResourceGroup, AnalysisServicesTestUtilities.DefaultServerName, updateParameters); Assert.Equal("Succeeded", resultUpdate.ProvisioningState); Assert.Equal("Succeeded", resultUpdate.State); // get the server and ensure that all the values are properly set. resultGet = client.Servers.GetDetails(AnalysisServicesTestUtilities.DefaultResourceGroup, AnalysisServicesTestUtilities.DefaultServerName); // validate the server creation process Assert.Equal(AnalysisServicesTestUtilities.DefaultLocation, resultGet.Location); Assert.Equal(AnalysisServicesTestUtilities.DefaultServerName, resultGet.Name); Assert.NotEmpty(resultGet.ServerFullName); Assert.Equal(newSku.Name, resultGet.Sku.Name); Assert.Equal(newSku.Tier, resultGet.Sku.Tier); Assert.Equal(2, resultGet.Tags.Count); Assert.True(resultGet.Tags.ContainsKey("key1")); Assert.Equal(2, resultGet.AsAdministrators.Members.Count); Assert.Equal("Microsoft.AnalysisServices/servers", resultGet.Type); Assert.Equal(1, resultGet.Sku.Capacity); Assert.Equal(sampleIPV4FirewallSetting.EnablePowerBIService, resultGet.IpV4FirewallSettings.EnablePowerBIService); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.Count(), resultGet.IpV4FirewallSettings.FirewallRules.Count()); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.First().FirewallRuleName, resultGet.IpV4FirewallSettings.FirewallRules.First().FirewallRuleName); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.First().RangeStart, resultGet.IpV4FirewallSettings.FirewallRules.First().RangeStart); Assert.Equal(sampleIPV4FirewallSetting.FirewallRules.First().RangeEnd, resultGet.IpV4FirewallSettings.FirewallRules.First().RangeEnd); // delete the server with its old name, which should also succeed. client.Servers.Delete(AnalysisServicesTestUtilities.DefaultResourceGroup, AnalysisServicesTestUtilities.DefaultServerName); } }
public override void ExecuteCmdlet() { if (string.IsNullOrEmpty(Name)) { WriteExceptionError(new PSArgumentNullException("Name", "Name of server not specified")); } if (ShouldProcess(Name, Resources.UpdatingAnalysisServicesServer)) { AnalysisServicesServer currentServer = null; if (!AnalysisServicesClient.TestServer(ResourceGroupName, Name, out currentServer)) { throw new InvalidOperationException(string.Format(Properties.Resources.ServerDoesNotExist, Name)); } var availableSkus = AnalysisServicesClient.ListSkusForExisting(ResourceGroupName, Name); if (Sku != null && !availableSkus.Value.Any(v => v.Sku.Name == Sku)) { throw new InvalidOperationException(string.Format(Resources.InvalidSku, Sku, String.Join(",", availableSkus.Value.Select(v => v.Sku.Name)))); } var location = currentServer.Location; if (Tag == null && currentServer.Tags != null) { Tag = TagsConversionHelper.CreateTagHashtable(currentServer.Tags); } if (DisableBackup.IsPresent) { BackupBlobContainerUri = "-"; } IPv4FirewallSettings setting = null; if (FirewallConfig != null) { setting = new IPv4FirewallSettings(new List <IPv4FirewallRule>(), "False"); setting.EnablePowerBIService = FirewallConfig.EnablePowerBIService.ToString(); if (FirewallConfig.FirewallRules != null) { foreach (var rule in FirewallConfig.FirewallRules) { setting.FirewallRules.Add(new IPv4FirewallRule() { FirewallRuleName = rule.FirewallRuleName, RangeStart = rule.RangeStart, RangeEnd = rule.RangeEnd }); } } } if (!MyInvocation.BoundParameters.ContainsKey("ReadonlyReplicaCount")) { ReadonlyReplicaCount = -1; } AnalysisServicesServer updatedServer = AnalysisServicesClient.CreateOrUpdateServer(ResourceGroupName, Name, location, Sku, Tag, Administrator, currentServer, BackupBlobContainerUri, ReadonlyReplicaCount, DefaultConnectionMode, setting); if (PassThru.IsPresent) { WriteObject(AzureAnalysisServicesServer.FromAnalysisServicesServer(updatedServer)); } } }
public AnalysisServicesServer CreateOrUpdateServer( string resourceGroupName, string serverName, string location, string skuName = null, Hashtable customTags = null, string administrators = null, AnalysisServicesServer existingServer = null, string backupBlobContainerUri = null, int ReadonlyReplicaCount = 0, string DefaultConnectionMode = null, IPv4FirewallSettings setting = null) { if (string.IsNullOrEmpty(resourceGroupName)) { resourceGroupName = GetResourceGroupByServer(serverName); } var tags = (customTags != null) ? TagsConversionHelper.CreateTagDictionary(customTags, true) : null; var adminList = new List <string>(); if (!string.IsNullOrEmpty(administrators)) { adminList.AddRange(administrators.Split(',')); if (adminList.Count == 0) { adminList.Add(_currentUser); } } AnalysisServicesServer newOrUpdatedServer = null; if (existingServer != null) { var updateParameters = new AnalysisServicesServerUpdateParameters() { Sku = skuName == null ? existingServer.Sku : GetResourceSkuFromName(skuName), Tags = tags, }; if (adminList.Count > 0) { updateParameters.AsAdministrators = new ServerAdministrators(adminList); } if (backupBlobContainerUri != null) { updateParameters.BackupBlobContainerUri = backupBlobContainerUri; } if (ReadonlyReplicaCount != -1) { updateParameters.Sku.Capacity = ReadonlyReplicaCount + 1; } if (DefaultConnectionMode != null) { updateParameters.QuerypoolConnectionMode = (ConnectionMode)Enum.Parse(typeof(ConnectionMode), DefaultConnectionMode, true); } if (setting != null) { updateParameters.IpV4FirewallSettings = setting; } newOrUpdatedServer = _client.Servers.Update(resourceGroupName, serverName, updateParameters); } else { ConnectionMode?connectionMode = null; if (DefaultConnectionMode != null) { connectionMode = (ConnectionMode)Enum.Parse(typeof(ConnectionMode), DefaultConnectionMode, true); } newOrUpdatedServer = _client.Servers.Create( resourceGroupName, serverName, new AnalysisServicesServer() { AsAdministrators = new ServerAdministrators(adminList), BackupBlobContainerUri = backupBlobContainerUri, Location = location, Sku = GetResourceSkuFromName(skuName, ReadonlyReplicaCount + 1), Tags = tags, QuerypoolConnectionMode = connectionMode, IpV4FirewallSettings = setting }); } return(newOrUpdatedServer); }
public override void ExecuteCmdlet() { if (ShouldProcess(Name, Resources.CreateNewAnalysisServicesServer)) { try { if (AnalysisServicesClient.GetServer(ResourceGroupName, Name) != null) { throw new CloudException(string.Format(Resources.AnalysisServerExists, Name)); } } catch (CloudException ex) { if (ex.Body != null && !string.IsNullOrEmpty(ex.Body.Code) && ex.Body.Code == "ResourceNotFound" || ex.Message.Contains("ResourceNotFound")) { // server does not exists so go ahead and create one } else if (ex.Body != null && !string.IsNullOrEmpty(ex.Body.Code) && ex.Body.Code == "ResourceGroupNotFound" || ex.Message.Contains("ResourceGroupNotFound")) { // resource group not found, let create throw error don't throw from here } else { // all other exceptions should be thrown throw; } } var availableSkus = AnalysisServicesClient.ListSkusForNew(); if (!availableSkus.Value.Any(v => v.Name == Sku)) { throw new InvalidOperationException(string.Format(Resources.InvalidSku, Sku, String.Join(",", availableSkus.Value.Select(v => v.Name)))); } IPv4FirewallSettings setting = null; if (FirewallConfig != null) { setting = new IPv4FirewallSettings(new List <IPv4FirewallRule>(), "False"); setting.EnablePowerBIService = FirewallConfig.EnablePowerBIService.ToString(); if (FirewallConfig.FirewallRules != null) { foreach (var rule in FirewallConfig.FirewallRules) { setting.FirewallRules.Add(new IPv4FirewallRule() { FirewallRuleName = rule.FirewallRuleName, RangeStart = rule.RangeStart, RangeEnd = rule.RangeEnd }); } } } if (!MyInvocation.BoundParameters.ContainsKey("ReadonlyReplicaCount")) { ReadonlyReplicaCount = 0; } var createdServer = AnalysisServicesClient.CreateOrUpdateServer(ResourceGroupName, Name, Location, Sku, Tag, Administrator, null, BackupBlobContainerUri, ReadonlyReplicaCount, DefaultConnectionMode, setting, GatewayResourceId); WriteObject(AzureAnalysisServicesServer.FromAnalysisServicesServer(createdServer)); } }