override fun createQuery()

in plugin-azure-server/src/main/kotlin/jetbrains/buildServer/clouds/azure/arm/connector/tasks/FetchVirtualMachinesTaskImpl.kt [18:49]


    override fun createQuery(api: AzureApi, taskContext: AzureTaskContext, parameter: Unit): Single<List<FetchVirtualMachinesTaskVirtualMachineDescriptor>> {
        return api
                .virtualMachines()
                .listAsync()
                .toList()
                .last()
                .map { list ->
                    val result = mutableListOf<FetchVirtualMachinesTaskVirtualMachineDescriptor>()
                    for(vm in list) {
                        try {
                            result.add(
                                    FetchVirtualMachinesTaskVirtualMachineDescriptor(
                                            vm.id(),
                                            vm.name(),
                                            vm.resourceGroupName(),
                                            vm.isManagedDiskEnabled,
                                            if (vm.isManagedDiskEnabled) null else vm.inner().storageProfile().osDisk()?.vhd()?.uri(),
                                            when (vm.osType()) {
                                                OperatingSystemTypes.LINUX -> "Linux"
                                                OperatingSystemTypes.WINDOWS -> "Windows"
                                                else -> vm.osType()?.name
                                            }
                                    )
                            )
                        } catch (exception: Throwable) {
                            LOG.warnAndDebugDetails("Could not read VirtualMachine. Id=${vm.id()}, Name=${vm.name()}, ResourceGroup=${vm.resourceGroupName()}", exception)
                        }
                    }
                    result.toList()
                }
                .toSingle()
    }