public async Task EnsureRoleExistsAsync(KubernetesEndpointManifest clusterInfo) { using var op = Logger.BeginOperation($"Preparing Role '{clusterInfo.ServiceAccount.Role.Metadata.Name}' ...", "K8S-Role"); var all = await k8s.ListNamespacedRoleAsync(clusterInfo.Namespace.Metadata.Name); var found = all.Items.FirstOrDefault(al => al.Metadata.Name.Equals(clusterInfo.ServiceAccount.Role.Metadata.Name)); if (found == null) { await k8s.CreateNamespacedRoleAsync(clusterInfo.ServiceAccount.Role, clusterInfo.Namespace.Metadata.Name); op.EndWithSuccess("Created"); } else { await k8s.ReplaceNamespacedRoleAsync(clusterInfo.ServiceAccount.Role, clusterInfo.ServiceAccount.Role.Metadata.Name, clusterInfo.Namespace.Metadata.Name); op.EndWithSuccess("Updated"); } }