public async virtual Task <List <AsmCloudService> > GetAzureAsmCloudServices() { if (_CloudServices != null) { return(_CloudServices); } XmlDocument cloudServicesXml = await this.GetAzureAsmResources("CloudServices", null); _CloudServices = new List <AsmCloudService>(); foreach (XmlNode cloudServiceXml in cloudServicesXml.SelectNodes("//HostedService")) { AsmCloudService tempCloudService = new AsmCloudService(_AzureContext, cloudServiceXml); Hashtable cloudServiceInfo = new Hashtable(); cloudServiceInfo.Add("name", tempCloudService.ServiceName); XmlDocument cloudServiceDetailXml = await this.GetAzureAsmResources("CloudService", cloudServiceInfo); AsmCloudService asmCloudService = new AsmCloudService(_AzureContext, cloudServiceDetailXml); _CloudServices.Add(asmCloudService); } List <Task> cloudServiceVMTasks = new List <Task>(); foreach (AsmCloudService asmCloudService in _CloudServices) { cloudServiceVMTasks.Add(asmCloudService.LoadChildrenAsync()); } await Task.WhenAll(cloudServiceVMTasks); return(_CloudServices); }
internal async Task <AsmVirtualMachine> GetAzureAsmVirtualMachine(AsmCloudService asmCloudService, string virtualMachineName) { Hashtable vmDetails = await this.GetVMDetails(asmCloudService.ServiceName, virtualMachineName); XmlDocument virtualMachineXml = await this.GetAzureAsmResources("VirtualMachine", vmDetails); AsmVirtualMachine asmVirtualMachine = new AsmVirtualMachine(this._AzureContext, asmCloudService, this._AzureContext.SettingsProvider, virtualMachineXml, vmDetails); await asmVirtualMachine.InitializeChildren(); return(asmVirtualMachine); }
public async void LoadDocuments(string path) { string[] files = Directory.GetFiles(path, "*.xml"); Array.Sort(files); foreach (var filename in files) { var doc = new XmlDocument(); doc.Load(filename); var title = Path.GetFileNameWithoutExtension(filename); var parts = title.Split('-'); string resourceType; var info = new Hashtable(); switch (parts[1].ToLower()) { case "azurelocations": resourceType = "azurelocations"; foreach (XmlNode azureLocationXml in doc.SelectNodes("/Locations/Location")) { _AzureASMLocations.Add(new AsmLocation(_AzureContext, azureLocationXml)); } break; case "cloudservice": resourceType = "CloudService"; info.Add("name", parts[2]); _CloudServices.Add(new AsmCloudService(_AzureContext, doc)); break; case "virtualmachine": resourceType = "VirtualMachine"; info.Add("cloudservicename", parts[2]); info.Add("virtualmachinename", parts[3]); info.Add("deploymentname", parts[4]); info.Add("loadbalancername", String.Empty); info.Add("virtualnetworkname", String.Empty); AsmCloudService parentCloudService = this.GetAzureAsmCloudService(parts[2]).Result; AsmVirtualMachine asmVirtualMachine = new AsmVirtualMachine(_AzureContext, parentCloudService, this._AzureContext.SettingsProvider, doc, info); await asmVirtualMachine.InitializeChildren(); asmVirtualMachine.OSVirtualHardDisk.TargetStorageAccount = asmVirtualMachine.OSVirtualHardDisk.SourceStorageAccount; asmVirtualMachine.TargetVirtualNetwork = asmVirtualMachine.SourceVirtualNetwork; asmVirtualMachine.TargetSubnet = asmVirtualMachine.SourceSubnet; foreach (AsmDisk dataDisk in asmVirtualMachine.DataDisks) { dataDisk.TargetStorageAccount = dataDisk.SourceStorageAccount; } parentCloudService.VirtualMachines.Add(asmVirtualMachine); break; case "storageaccountkeys": resourceType = "StorageAccountKeys"; info.Add("name", parts[2]); this.GetAzureAsmStorageAccount(parts[2]).Result.Keys = new AsmStorageAccountKeys(_AzureContext, doc); break; case "storageaccount": resourceType = "StorageAccount"; info.Add("name", parts[2]); _StorageAccounts.Add(new AsmStorageAccount(_AzureContext, doc)); break; case "virtualnetworks": resourceType = "VirtualNetworks"; foreach (XmlNode virtualnetworksite in doc.SelectNodes("//VirtualNetworkSite")) { AsmVirtualNetwork asmVirtualNetwork = new AsmVirtualNetwork(_AzureContext, virtualnetworksite); await asmVirtualNetwork.InitializeChildrenAsync(); _VirtualNetworks.Add(asmVirtualNetwork); } break; case "clientrootcertificates": resourceType = "ClientRootCertificates"; info.Add("virtualnetworkname", parts[2]); foreach (XmlNode clientRootCertificateXml in doc.SelectNodes("//ClientRootCertificate")) { _ClientRootCertificates.Add(new AsmClientRootCertificate(_AzureContext, _VirtualNetworks[0], clientRootCertificateXml)); } break; case "clientrootcertificate": resourceType = "ClientRootCertificate"; info.Add("virtualnetworkname", parts[2]); info.Add("thumbprint", parts[3]); break; case "virtualnetworkgateway": resourceType = "VirtualNetworkGateway"; info.Add("virtualnetworkname", parts[2]); _VirtualNetworkGateway = new AsmVirtualNetworkGateway(_AzureContext, _VirtualNetworks[0], doc); _VirtualNetworks[0].Gateway = _VirtualNetworkGateway; break; case "virtualnetworkgatewaysharedkey": resourceType = "VirtualNetworkGatewaySharedKey"; info.Add("virtualnetworkname", parts[2]); info.Add("localnetworksitename", parts[3]); break; case "networksecuritygroup": resourceType = "NetworkSecurityGroup"; info.Add("name", parts[2]); _NetworkSecurityGroup = new AsmNetworkSecurityGroup(_AzureContext, doc.SelectSingleNode("NetworkSecurityGroup")); break; case "routetable": resourceType = "RouteTable"; info.Add("name", parts[2]); _AsmRouteTable = new AsmRouteTable(_AzureContext, doc); break; case "reservedips": resourceType = "ReservedIPs"; break; default: throw new Exception(); } SetResponse(resourceType, info, doc); } }