Ejemplo n.º 1
0
 private void HandleRemovedEvent(IList <RemovedVMEvent> removedVms)
 {
     foreach (var removedVM in removedVms)
     {
         var vm = VMs.Get(removedVM.VMId);
         if (vm.HostId > 0)
         {
             var server = servers.Get(vm.HostId);
             server.RemoveVM(vm);
         }
         VMs.Remove(vm.Id);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Performs the execution of the activity.
        /// </summary>
        /// <param name="context">The execution context under which the activity executes.</param>
        protected override void Execute(CodeActivityContext context)
        {
            var azureSubscription = new AzureSubscription(SettingsPath, SubscriptionId);

            var credentials = new CertificateCloudCredentials(
                SubscriptionId,
                new X509Certificate2(Convert.FromBase64String(azureSubscription.ManagementCertificate)));

            var tasks = VirtualMachines.Get(context).Select(
                async vm =>
            {
                using (var client = new ComputeManagementClient(credentials))
                {
                    switch (vm.Size)
                    {
                    case VirtualMachineSize.Stop:
                        await client.DeallocateVmAsync(vm.Name);
                        break;

                    case VirtualMachineSize.Small:
                    case VirtualMachineSize.ExtraSmall:
                    case VirtualMachineSize.Large:
                    case VirtualMachineSize.Medium:
                    case VirtualMachineSize.ExtraLarge:
                    case VirtualMachineSize.A5:
                    case VirtualMachineSize.A6:
                    case VirtualMachineSize.A7:
                    case VirtualMachineSize.A8:
                    case VirtualMachineSize.A9:
                        await client.ResizeVmAsync(vm.Name, vm.Size.GetEnumDescription());
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(
                            nameof(context),
                            @"Unknown VM Size, this shouldn't happen, but the enumeration value isn't implemented in the acitivity switch");
                    }
                }
            });

            Task.WhenAll(tasks);
        }