Пример #1
0
        public static IntPtr CreateTrampoline(Module module, ulong codeAdr, uint key, VMFuncSig sig, uint sigId)
        {
            object dm = trampolines[codeAdr];

            if (dm != null)
            {
                return(getDesc((DynamicMethod)dm).GetFunctionPointer());
            }

            lock (trampolines) {
                dm = (DynamicMethod)trampolines[codeAdr];
                if (dm != null)
                {
                    return(getDesc((DynamicMethod)dm).GetFunctionPointer());
                }

                if (ShouldBeTyped(sig))
                {
                    dm = CreateTrampolineTyped(VMInstance.GetModuleId(module), codeAdr, key, sig, sigId);
                }
                else
                {
                    dm = CreateTrampolineNormal(VMInstance.GetModuleId(module), codeAdr, key, sig, sigId);
                }
                trampolines[codeAdr] = dm;
                return(getDesc((DynamicMethod)dm).GetFunctionPointer());
            }
        }
Пример #2
0
        private void Initialize()
        {
            Log("Loading VM data.", true);

            var vms = VMInstanceData.Select();

            foreach (var vm in vms)
            {
                Log("Adding " + vm.VMName + " @ " + vm.IPAddress, true);
                var vmInstance = new VMInstance(vm, mTestServer, mNetworkCredentials);
                mVMInstanceData.Add(vmInstance);
            }
        }
Пример #3
0
        private VMInstance GetVMInstanceData(string ipAddress)
        {
            var vmInstance = mVMInstanceData.FirstOrDefault(e => e.IPAddress == ipAddress);

            if (vmInstance == null)
            {
                // This is old code, so you should never get here, since all
                // VMs are loaded at start up
                Log("Fetching information for IP " + ipAddress, true);
                var vmInstanceData = VMInstanceData.SelectByIP(ipAddress);
                if (vmInstanceData != null)
                {
                    Log("Adding information for IP " + ipAddress, true);
                    vmInstance = new VMInstance(vmInstanceData, mTestServer, mNetworkCredentials);
                    mVMInstanceData.Add(vmInstance);
                }
            }
            return(vmInstance);
        }
Пример #4
0
        static void CreateNodes(ClusterLoadRepository repo, string poolName)
        {
            Task <IEnumerable <VMInstance> > tVms;

            var vm1 = new VMInstance()
            {
                id = Guid.NewGuid().ToString(), Name = "pinta00s2000000", PoolName = poolName, Status = VMInstanceStatusEnum.Running, JobStatus = VMJobStatusEnum.Free
            };

            repo.CreateVMInstanceAsync(vm1).Wait();
            var vm2 = new VMInstance()
            {
                id = Guid.NewGuid().ToString(), Name = "pinta00s2000001", PoolName = poolName, Status = VMInstanceStatusEnum.Running, JobStatus = VMJobStatusEnum.Free
            };

            repo.CreateVMInstanceAsync(vm2).Wait();
            var vm3 = new VMInstance()
            {
                id = Guid.NewGuid().ToString(), Name = "pinta00s2000002", PoolName = poolName, Status = VMInstanceStatusEnum.Running, JobStatus = VMJobStatusEnum.Free
            };

            repo.CreateVMInstanceAsync(vm3).Wait();
            var vm4 = new VMInstance()
            {
                id = Guid.NewGuid().ToString(), Name = "pinta00s2000004", PoolName = poolName, Status = VMInstanceStatusEnum.Running, JobStatus = VMJobStatusEnum.Free
            };

            repo.CreateVMInstanceAsync(vm4).Wait();

            tVms = repo.GetVMInstancesAsync(poolName);
            var vms = tVms.Result;

            foreach (var item in vms)
            {
                Console.WriteLine($"{item.id} {item.Status}");
            }
        }
 public VMContext(VMInstance inst)
 {
     Instance = inst;
 }
Пример #6
0
        public async Task <IEnumerable <VMInstance> > GetVMSSVMStatesAsync(IEnumerable <VMInstance> vmJobStatusList)
        {
            var vmList = new List <VMInstance>();

            try
            {
                // VMs list
                var     vmListUrl = $"subscriptions/{_subscriptionId}/resourceGroups/{_resourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/{_vmssName}/virtualMachines?api-version={_vmssApiVersion}";
                dynamic dynVmList = await GetResponse(vmListUrl);

                if (dynVmList.value != null)
                {
                    foreach (var item in dynVmList.value)
                    {
                        var vm = new VMInstance();
                        vm.ScaleSetId = item.instanceId;
                        vm.Name       = item.properties.osProfile.computerName;
                        vm.PoolName   = _vmssName;
                        var vmJobStatus = vmJobStatusList.FirstOrDefault(r => r.Name == vm.Name);
                        if (vmJobStatus != null)
                        {
                            vm.JobStatus = vmJobStatus.JobStatus;
                        }
                        else
                        {
                            vm.JobStatus = VMJobStatusEnum.Unknown;
                        }

                        vmList.Add(vm);
                    }
                }
                // VMs status
                var vmStatusUrl = $"subscriptions/{_subscriptionId}/resourceGroups/{_resourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/{_vmssName}/virtualMachines?$expand=instanceView&$select=instanceView&api-version={_vmssApiVersion}";

                dynamic dynStatus = await GetResponse(vmStatusUrl);

                if (dynStatus.value != null)
                {
                    foreach (var item in dynStatus.value)
                    {
                        string instanceId = item.instanceId;
                        var    vm         = vmList.FirstOrDefault(v => v.ScaleSetId == instanceId);

                        foreach (var status in item.properties.instanceView.statuses)
                        {
                            string statusCode = status.code;
                            if (statusCode.StartsWith("PowerState"))
                            {
                                string displayStatus = status.displayStatus;
                                if (displayStatus.Contains("running"))
                                {
                                    vm.Status = VMInstanceStatusEnum.Running;
                                }
                                else if (displayStatus.Contains("deallocated"))
                                {
                                    vm.Status = VMInstanceStatusEnum.Stopped;
                                }
                            }
                        }
                    }
                }
                return(vmList);
            }
            catch (Exception ex)
            {
                OnTraceEvent(ex.ToString());
                return(vmList);
            }
        }
 public async Task CreateVMInstanceAsync(VMInstance v)
 {
     var document = await _client.UpsertDocumentAsync(UriFactory.CreateDocumentCollectionUri(_databaseId, _collectionId), v);
 }
 public async Task ReplaceVMInstanceAsync(VMInstance v)
 {
     await _client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(_databaseId, _collectionId, v.id), v);
 }