Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
            }
        }