/// <summary> /// Find the ReplicaSet that corresponds to the specified revision of the specified Deployment. /// </summary> /// <param name="client"> /// The Kubernetes API client. /// </param> /// <param name="deployment"> /// The target Deployment. /// </param> /// <param name="targetRevision"> /// The target revision. /// </param> /// <param name="cancellationToken"> /// An optional <see cref="CancellationToken"/> that can be used to cancel the request. /// </param> /// <returns> /// A <see cref="ReplicaSetV1"/> representing the ReplicaSet's current state; <c>null</c>, if no corresponding ReplicaSet was found. /// </returns> public static async Task <ReplicaSetV1> FindReplicaSetForRevision(IKubeApiClient client, DeploymentV1 deployment, int targetRevision, CancellationToken cancellationToken = default) { if (client == null) { throw new ArgumentNullException(nameof(client)); } if (deployment == null) { throw new ArgumentNullException(nameof(deployment)); } string matchLabelSelector = deployment.GetLabelSelector(); ReplicaSetListV1 replicaSets = await client.ReplicaSetsV1().List(matchLabelSelector, deployment.Metadata.Namespace, cancellationToken); ReplicaSetV1 targetRevisionReplicaSet = replicaSets.Items.FirstOrDefault( replicaSet => replicaSet.GetRevision() == targetRevision ); return(targetRevisionReplicaSet); }
/// <summary> /// Find the ReplicaSet that corresponds to the specified revision of the specified Deployment. /// </summary> /// <param name="client"> /// The Kubernetes API client. /// </param> /// <param name="deployment"> /// The target Deployment. /// </param> /// <param name="targetRevision"> /// The target revision. /// </param> /// <returns> /// A <see cref="ReplicaSetV1"/> representing the ReplicaSet's current state; <c>null</c>, if no corresponding ReplicaSet was found. /// </returns> static async Task <ReplicaSetV1> FindReplicaSetForRevision(IKubeApiClient client, DeploymentV1 deployment, int targetRevision) { if (client == null) { throw new ArgumentNullException(nameof(client)); } if (deployment == null) { throw new ArgumentNullException(nameof(deployment)); } ReplicaSetListV1 replicaSets = await client.ReplicaSetsV1().List( labelSelector: $"app={deployment.Metadata.Name}", kubeNamespace: deployment.Metadata.Namespace ); ReplicaSetV1 targetRevisionReplicaSet = replicaSets.Items.FirstOrDefault( replicaSet => replicaSet.GetRevision() == targetRevision ); return(targetRevisionReplicaSet); }