Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. See License.txt in the project root for
license information.
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.compute.implementation;
import com.microsoft.azure.PagedList;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.compute.VirtualMachineExtensionImage;
import com.microsoft.azure.management.compute.VirtualMachineExtensionImageType;
import com.microsoft.azure.management.compute.VirtualMachineExtensionImageVersion;
import com.microsoft.azure.management.compute.VirtualMachineExtensionImages;
import com.microsoft.azure.management.compute.VirtualMachinePublisher;
import com.microsoft.azure.management.compute.VirtualMachinePublishers;
import com.microsoft.azure.management.resources.fluentcore.arm.Region;
import com.microsoft.azure.management.resources.fluentcore.utils.PagedListConverter;
import rx.Observable;
import rx.functions.Func1;
The implementation for VirtualMachineExtensionImages
. /**
* The implementation for {@link VirtualMachineExtensionImages}.
*/
@LangDefinition
class VirtualMachineExtensionImagesImpl
implements VirtualMachineExtensionImages {
private final VirtualMachinePublishers publishers;
VirtualMachineExtensionImagesImpl(VirtualMachinePublishers publishers) {
this.publishers = publishers;
}
@Override
public PagedList<VirtualMachineExtensionImage> listByRegion(Region region) {
return listByRegion(region.toString());
}
@Override
public PagedList<VirtualMachineExtensionImage> listByRegion(String regionName) {
PagedList<VirtualMachinePublisher> publishers = this.publishers().listByRegion(regionName);
PagedList<VirtualMachineExtensionImageType> extensionTypes =
new ChildListFlattener<>(publishers, new ChildListFlattener.ChildListLoader<VirtualMachinePublisher, VirtualMachineExtensionImageType>() {
@Override
public PagedList<VirtualMachineExtensionImageType> loadList(VirtualMachinePublisher publisher) {
return publisher.extensionTypes().list();
}
}).flatten();
PagedList<VirtualMachineExtensionImageVersion> extensionTypeVersions =
new ChildListFlattener<>(extensionTypes, new ChildListFlattener.ChildListLoader<VirtualMachineExtensionImageType, VirtualMachineExtensionImageVersion>() {
@Override
public PagedList<VirtualMachineExtensionImageVersion> loadList(VirtualMachineExtensionImageType type) {
return type.versions().list();
}
}).flatten();
PagedListConverter<VirtualMachineExtensionImageVersion, VirtualMachineExtensionImage> converter =
new PagedListConverter<VirtualMachineExtensionImageVersion, VirtualMachineExtensionImage>() {
@Override
public Observable<VirtualMachineExtensionImage> typeConvertAsync(VirtualMachineExtensionImageVersion virtualMachineExtensionImageVersion) {
return Observable.just((VirtualMachineExtensionImage) virtualMachineExtensionImageVersion.getImage());
}
};
return converter.convert(extensionTypeVersions);
}
@Override
public Observable<VirtualMachineExtensionImage> listByRegionAsync(Region region) {
return listByRegionAsync(region.name());
}
@Override
public Observable<VirtualMachineExtensionImage> listByRegionAsync(String regionName) {
return this.publishers().listByRegionAsync(regionName)
.flatMap(new Func1<VirtualMachinePublisher, Observable<VirtualMachineExtensionImageType>>() {
@Override
public Observable<VirtualMachineExtensionImageType> call(VirtualMachinePublisher virtualMachinePublisher) {
return virtualMachinePublisher.extensionTypes().listAsync();
}
}).flatMap(new Func1<VirtualMachineExtensionImageType, Observable<VirtualMachineExtensionImageVersion>>() {
@Override
public Observable<VirtualMachineExtensionImageVersion> call(VirtualMachineExtensionImageType virtualMachineExtensionImageType) {
return virtualMachineExtensionImageType.versions().listAsync();
}
}).flatMap(new Func1<VirtualMachineExtensionImageVersion, Observable<VirtualMachineExtensionImage>>() {
@Override
public Observable<VirtualMachineExtensionImage> call(VirtualMachineExtensionImageVersion virtualMachineExtensionImageVersion) {
return virtualMachineExtensionImageVersion.getImageAsync();
}
});
}
@Override
public VirtualMachinePublishers publishers() {
return this.publishers;
}
}