async Task DecorateWithNetworkProperties(IVirtualMachine vm, VmExtendedDto vmDto, CancellationToken cancellationToken)
        {
            var primaryNic = await _azure.NetworkInterfaces.GetByIdAsync(vm.PrimaryNetworkInterfaceId, cancellationToken);

            vmDto.PrivateIp = primaryNic.PrimaryPrivateIP;

            try
            {
                if (primaryNic.PrimaryIPConfiguration != null)
                {
                    var pip = await _azure.PublicIPAddresses.GetByIdAsync(primaryNic.PrimaryIPConfiguration.PublicIPAddressId, cancellationToken);

                    if (pip != null)
                    {
                        vmDto.PublicIp = pip.IPAddress;
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex, $"Unable to fetch public IP settings for VM {vm.Name}");
            }

            vmDto.NICs.Add(CreateNicDto(primaryNic));

            foreach (var curNic in vm.NetworkInterfaceIds)
            {
                vmDto.NICs.Add(await CreateNicDto(curNic, cancellationToken));
            }
        }
        public async Task <VmExtendedDto> GetExtendedInfo(string resourceGroupName, string resourceName, CancellationToken cancellationToken = default)
        {
            var vm = await GetInternalAsync(resourceGroupName, resourceName);

            var result = new VmExtendedDto
            {
                PowerState = AzureVmUtil.GetPowerState(vm),
                OsType     = AzureVmUtil.GetOsType(vm)
            };

            if (vm == null)
            {
                return(result);
            }

            result.SizeName = vm.Size.ToString();

            await DecorateWithNetworkProperties(vm, result, cancellationToken);

            result.Disks.Add(await CreateDiskDto(vm.OSDiskId, true, cancellationToken));

            foreach (var curDiskKvp in vm.DataDisks.Values)
            {
                result.Disks.Add(CreateDiskDto(curDiskKvp, false));
            }

            return(result);
        }
Ejemplo n.º 3
0
        public static VmExtendedDto Create()
        {
            var result = new VmExtendedDto();

            return(result);
        }