Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mgmt, start/stop for aks #22800

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

## 2.7.0-beta.1 (Unreleased)

### Features Added

- Supported `start` and `stop` for `KubernetesCluster`.

## 2.6.0 (2021-06-18)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,26 @@ public String systemAssignedManagedServiceIdentityPrincipalId() {
return objectId;
}

@Override
public void start() {
this.startAsync().block();
}

@Override
public Mono<Void> startAsync() {
return manager().kubernetesClusters().startAsync(this.resourceGroupName(), this.name());
}

@Override
public void stop() {
this.stopAsync().block();
}

@Override
public Mono<Void> stopAsync() {
return manager().kubernetesClusters().stopAsync(this.resourceGroupName(), this.name());
}

private Mono<List<CredentialResult>> listAdminConfig(final KubernetesClusterImpl self) {
return this
.manager()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,26 @@ public Mono<List<CredentialResult>> listUserKubeConfigContentAsync(
.listClusterUserCredentialsAsync(resourceGroupName, kubernetesClusterName)
.map(CredentialResultsInner::kubeconfigs);
}

@Override
public void start(String resourceGroupName, String kubernetesClusterName) {
this.startAsync(resourceGroupName, kubernetesClusterName).block();
}

@Override
public Mono<Void> startAsync(String resourceGroupName, String kubernetesClusterName) {
return this.manager().serviceClient().getManagedClusters()
.startAsync(resourceGroupName, kubernetesClusterName);
}

@Override
public void stop(String resourceGroupName, String kubernetesClusterName) {
this.stopAsync(resourceGroupName, kubernetesClusterName).block();
}

@Override
public Mono<Void> stopAsync(String resourceGroupName, String kubernetesClusterName) {
return this.manager().serviceClient().getManagedClusters()
.stopAsync(resourceGroupName, kubernetesClusterName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.azure.resourcemanager.resources.fluentcore.model.Creatable;
import com.azure.resourcemanager.resources.fluentcore.model.Refreshable;
import com.azure.resourcemanager.resources.fluentcore.model.Updatable;
import reactor.core.publisher.Mono;

import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -88,6 +89,32 @@ public interface KubernetesCluster
*/
String systemAssignedManagedServiceIdentityPrincipalId();

// Actions

/**
* Starts a stopped Kubernetes cluster.
*/
void start();

/**
* Starts a stopped Kubernetes cluster.
*
* @return the completion.
*/
Mono<Void> startAsync();

/**
* Stops a running Kubernetes cluster.
*/
void stop();

/**
* Stops a running Kubernetes cluster.
*
* @return the completion.
*/
Mono<Void> stopAsync();

// Fluent interfaces

/** Interface for all the definitions related to a Kubernetes cluster. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,38 @@ Mono<List<CredentialResult>> listAdminKubeConfigContentAsync(
* @return a future representation of the Kube.config content which can be used with a Kubernetes client
*/
Mono<List<CredentialResult>> listUserKubeConfigContentAsync(String resourceGroupName, String kubernetesClusterName);

/**
* Starts a stopped Kubernetes cluster.
*
* @param resourceGroupName The name of the resource group.
* @param kubernetesClusterName The name of the managed cluster resource.
*/
void start(String resourceGroupName, String kubernetesClusterName);

/**
* Starts a stopped Kubernetes cluster.
*
* @param resourceGroupName The name of the resource group.
* @param kubernetesClusterName The name of the managed cluster resource.
* @return the completion.
*/
Mono<Void> startAsync(String resourceGroupName, String kubernetesClusterName);

/**
* Stops a running Kubernetes cluster.
*
* @param resourceGroupName The name of the resource group.
* @param kubernetesClusterName The name of the managed cluster resource.
*/
void stop(String resourceGroupName, String kubernetesClusterName);

/**
* Stops a running Kubernetes cluster.
*
* @param resourceGroupName The name of the resource group.
* @param kubernetesClusterName The name of the managed cluster resource.
* @return the completion.
*/
Mono<Void> stopAsync(String resourceGroupName, String kubernetesClusterName);
}
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,16 @@ public void canCRUDKubernetesCluster() throws Exception {

Assertions.assertNotNull(kubernetesCluster.tags().get("tag1"));

// stop
kubernetesCluster.stop();
kubernetesCluster.refresh();
Assertions.assertEquals(Code.STOPPED, kubernetesCluster.powerState().code());

// start
kubernetesCluster.start();
kubernetesCluster.refresh();
Assertions.assertEquals(Code.RUNNING, kubernetesCluster.powerState().code());

// update
kubernetesCluster =
kubernetesCluster
Expand Down
Loading