diff --git a/sdk/resourcemanager/azure-resourcemanager-containerservice/CHANGELOG.md b/sdk/resourcemanager/azure-resourcemanager-containerservice/CHANGELOG.md index 159deccc8b1d..f71ba3555970 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerservice/CHANGELOG.md +++ b/sdk/resourcemanager/azure-resourcemanager-containerservice/CHANGELOG.md @@ -5,6 +5,7 @@ ### Features Added - Supported `start` and `stop` for `KubernetesCluster`. +- Supported `listOrchestrators` for `KubernetesCluster`. ## 2.6.0 (2021-06-18) diff --git a/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/implementation/KubernetesClustersImpl.java b/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/implementation/KubernetesClustersImpl.java index 980ce61d4b83..eb5099ac6a65 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/implementation/KubernetesClustersImpl.java +++ b/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/implementation/KubernetesClustersImpl.java @@ -4,12 +4,14 @@ import com.azure.core.http.rest.PagedFlux; import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponseBase; import com.azure.core.util.CoreUtils; import com.azure.resourcemanager.containerservice.ContainerServiceManager; import com.azure.resourcemanager.containerservice.fluent.ManagedClustersClient; import com.azure.resourcemanager.containerservice.fluent.models.CredentialResultsInner; import com.azure.resourcemanager.containerservice.fluent.models.ManagedClusterInner; import com.azure.resourcemanager.containerservice.fluent.models.OrchestratorVersionProfileListResultInner; +import com.azure.resourcemanager.containerservice.models.ContainerServiceResourceTypes; import com.azure.resourcemanager.containerservice.models.CredentialResult; import com.azure.resourcemanager.containerservice.models.KubernetesCluster; import com.azure.resourcemanager.containerservice.models.KubernetesClusters; @@ -129,6 +131,29 @@ public Mono> listKubernetesVersionsAsync(Region region) { }); } + @Override + public PagedIterable listOrchestrators(Region region, + ContainerServiceResourceTypes resourceTypes) { + return new PagedIterable<>(this.listOrchestratorsAsync(region, resourceTypes)); + } + + @Override + public PagedFlux listOrchestratorsAsync(Region region, + ContainerServiceResourceTypes resourceTypes) { + return new PagedFlux<>(() -> this.manager().serviceClient().getContainerServices() + .listOrchestratorsWithResponseAsync(region.name(), resourceTypes.toString()) + .map(response -> new PagedResponseBase( + response.getRequest(), + response.getStatusCode(), + response.getHeaders(), + (response.getValue() == null || response.getValue().orchestrators() == null) + ? Collections.emptyList() + : response.getValue().orchestrators(), + null, + null + ))); + } + @Override public List listAdminKubeConfigContent(String resourceGroupName, String kubernetesClusterName) { return listAdminKubeConfigContentAsync(resourceGroupName, kubernetesClusterName).block(); diff --git a/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/ContainerServiceResourceTypes.java b/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/ContainerServiceResourceTypes.java new file mode 100644 index 000000000000..3360a8596265 --- /dev/null +++ b/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/ContainerServiceResourceTypes.java @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.resourcemanager.containerservice.models; + +import com.azure.core.util.ExpandableStringEnum; +import com.fasterxml.jackson.annotation.JsonCreator; + +import java.util.Collection; + +/** Defines values for resource types from container service. */ +public class ContainerServiceResourceTypes extends ExpandableStringEnum { + + /** Static value managedClusters for ContainerServiceResourceTypes. */ + public static final ContainerServiceResourceTypes MANAGED_CLUSTERS = fromString("managedClusters"); + + /** + * Creates or finds a ContainerServiceResourceTypes from its string representation. + * + * @param name a name to look for. + * @return the corresponding ContainerServiceResourceTypes. + */ + @JsonCreator + public static ContainerServiceResourceTypes fromString(String name) { + return fromString(name, ContainerServiceResourceTypes.class); + } + + /** @return known ExtendedLocationTypes values. */ + public static Collection values() { + return values(ContainerServiceResourceTypes.class); + } +} diff --git a/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/KubernetesClusters.java b/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/KubernetesClusters.java index e169cec94e38..8c82242d0089 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/KubernetesClusters.java +++ b/sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/KubernetesClusters.java @@ -3,6 +3,8 @@ package com.azure.resourcemanager.containerservice.models; import com.azure.core.annotation.Fluent; +import com.azure.core.http.rest.PagedFlux; +import com.azure.core.http.rest.PagedIterable; import com.azure.resourcemanager.containerservice.ContainerServiceManager; import com.azure.core.management.Region; import com.azure.resourcemanager.resources.fluentcore.arm.collection.SupportsDeletingByResourceGroup; @@ -49,6 +51,26 @@ public interface KubernetesClusters */ Mono> listKubernetesVersionsAsync(Region region); + /** + * Returns the list of available orchestrators for the given Azure region. + * + * @param region the Azure region to query into + * @param resourceTypes the resource type of container service + * @return a list of orchestrators which can be used when creating a service in this region + */ + PagedIterable listOrchestrators(Region region, + ContainerServiceResourceTypes resourceTypes); + + /** + * Returns the list of available orchestrators for the given Azure region. + * + * @param region the Azure region to query into + * @param resourceTypes the resource type of container service + * @return a list of orchestrators which can be used when creating a service in this region + */ + PagedFlux listOrchestratorsAsync(Region region, + ContainerServiceResourceTypes resourceTypes); + /** * Returns the admin Kube.config content which can be used with a Kubernetes client. *