private bool IsAvereVM(AvereCluster avereCluster, string vmName)
        {
            var controllerName = avereCluster.ControllerName;
            var vfxtPrefix     = avereCluster.ClusterName.ToLowerInvariant();

            return(vmName != null &&
                   (vmName.Equals(controllerName, StringComparison.InvariantCultureIgnoreCase) ||
                    vmName.ToLowerInvariant().StartsWith(vfxtPrefix)));
        }
 public AvereClusterOverviewModel(AvereCluster avereCluster) : base(avereCluster)
 {
     if (avereCluster != null)
     {
         VServerIPRange       = avereCluster.VServerIPRange;
         ManagementIP         = avereCluster.ManagementIP;
         SshConnectionDetails = avereCluster.SshConnectionDetails;
     }
 }
        private async Task <List <VirtualMachineStatus> > GetVirtualMachineStatus(AvereCluster avereCluster)
        {
            var avereVmNames = await GetAvereVMNames(avereCluster);

            var tasks = avereVmNames.Select(vmName =>
                                            GetVirtualMachineStatus(avereCluster.SubscriptionId, avereCluster.ResourceGroupName, vmName));
            await Task.WhenAll(tasks);

            return((await Task.WhenAll(tasks)).ToList());
        }
Beispiel #4
0
        public AddAvereClusterModel(AvereCluster cluster)
        {
            RepositoryName       = cluster.Name;
            RepositoryType       = cluster.RepositoryType;
            NewResourceGroupName = cluster.ResourceGroupName;
            SubscriptionId       = cluster.SubscriptionId;

            if (cluster.Subnet?.ResourceId != null)
            {
                SubnetResourceIdLocationAndAddressPrefix = cluster.Subnet.ToString();
            }
        }
Beispiel #5
0
 public AddAvereClusterModel(AvereCluster cluster)
 {
     SubscriptionId       = cluster.SubscriptionId;
     RepositoryName       = cluster.Name;
     RepositoryType       = cluster.RepositoryType;
     NewResourceGroupName = cluster.ResourceGroupName;
     ClusterName          = cluster.ClusterName;
     VMSize        = cluster.VmSize;
     NodeCount     = cluster.NodeCount;
     CacheSizeInGB = cluster.AvereCacheSizeGB;
     UseControllerPasswordCredential = cluster.UseControllerPasswordCredential;
     ControllerPassword = cluster.UseControllerPasswordCredential ? cluster.ControllerPasswordOrSshKey : null;
     ControllerSshKey   = cluster.UseControllerPasswordCredential ? null : cluster.ControllerPasswordOrSshKey;
     AdminPassword      = cluster.ManagementAdminPassword;
 }
        private async Task UpdateAvereFromDeploymentAsync(
            DeploymentExtended deployment,
            AvereCluster avereCluster)
        {
            await Task.CompletedTask;

            if (avereCluster.Deployment.ProvisioningState == ProvisioningState.Succeeded)
            {
                if (deployment.Properties.Outputs != null)
                {
                    var outputs = deployment.Properties.Outputs as JObject;
                    avereCluster.SshConnectionDetails = (string)outputs["ssh_string"]?["value"];
                    avereCluster.ManagementIP         = (string)outputs["mgmt_ip"]?["value"];
                    avereCluster.VServerIPRange       = (string)outputs["vserver_ips"]?["value"];
                }
            }
        }
        public AvereClusterOverviewModel(AvereCluster avereCluster)
        {
            if (avereCluster != null)
            {
                Name           = avereCluster.Name;
                RepositoryType = avereCluster.RepositoryType;
                SubscriptionId = avereCluster.SubscriptionId;

                if (avereCluster.Subnet != null)
                {
                    SubnetName       = avereCluster.Subnet.Name;
                    SubnetVNetName   = avereCluster.Subnet.VNetName;
                    SubnetResourceId = avereCluster.Subnet.ResourceId;
                    SubnetPrefix     = avereCluster.Subnet.AddressPrefix;
                    SubnetLocation   = avereCluster.Subnet.Location;
                }
            }
        }
        private async Task <List <string> > GetAvereVMNames(AvereCluster avereCluster)
        {
            var controllerName = avereCluster.ControllerName;
            var vfxtPrefix     = avereCluster.ClusterName;

            using (var computeClient = await _clientProvider.CreateComputeManagementClient(avereCluster.SubscriptionId))
            {
                var vms = await computeClient.VirtualMachines.ListAsync(avereCluster.ResourceGroupName);

                var vmNames = vms.Select(vm => vm.Name).Where(name => IsAvereVM(avereCluster, name)).ToList();
                while (!string.IsNullOrEmpty(vms.NextPageLink))
                {
                    vms = await computeClient.VirtualMachines.ListAsync(avereCluster.ResourceGroupName);

                    vmNames.AddRange(vms.Select(vm => vm.Name).Where(name => IsAvereVM(avereCluster, name)));
                }
                return(vmNames);
            }
        }
        private async Task DeleteAvereAsync(AvereCluster avereCluster)
        {
            try
            {
                var avereClusterVmNames = await GetAvereVMNames(avereCluster);

                foreach (var vmName in avereClusterVmNames)
                {
                    await DeleteVirtualMachineAsync(
                        avereCluster.SubscriptionId,
                        avereCluster.ResourceGroupName,
                        vmName);
                }
            }
            catch (CloudException ex) when(ex.ResourceNotFound())
            {
                // RG doesn't exist
            }
        }