Skip to content

Commit f4dc6a8

Browse files
authored
Revert "Scoped and Namespaced Clients (#20)" (#21)
1 parent b2a5008 commit f4dc6a8

File tree

10 files changed

+46
-228
lines changed

10 files changed

+46
-228
lines changed
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using K8sOperator.NET.Metadata;
2-
using Microsoft.Extensions.DependencyInjection;
1+
using Microsoft.Extensions.DependencyInjection;
32

43
namespace K8sOperator.NET.Builder;
54

@@ -8,15 +7,6 @@ internal class EventWatcherBuilder(IServiceProvider serviceProvider, IController
87
public IEventWatcher Build()
98
{
109
var watcherType = typeof(EventWatcher<>).MakeGenericType(controller.ResourceType);
11-
IKubernetesClient client = ActivatorUtilities.CreateInstance<NamespacedKubernetesClient>(serviceProvider);
12-
13-
var clientScope = controller.ResourceType.GetCustomAttributes(false).OfType<IEntityScopeMetadata>().FirstOrDefault();
14-
if (clientScope?.Scope == EntityScope.Cluster)
15-
{
16-
client = ActivatorUtilities.CreateInstance<ClusterKubernetesClient>(serviceProvider);
17-
}
18-
19-
20-
return (IEventWatcher)ActivatorUtilities.CreateInstance(serviceProvider, watcherType, client, controller, metadata);
10+
return (IEventWatcher)ActivatorUtilities.CreateInstance(serviceProvider, watcherType, controller, metadata);
2111
}
2212
}

src/K8sOperator.NET/Builder/OperatorHostBuilder.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Microsoft.Extensions.Configuration;
44
using Microsoft.Extensions.DependencyInjection;
55
using Microsoft.Extensions.Logging;
6-
using System.Collections.Generic;
76
using System.Data.Common;
87
using System.Reflection;
98

@@ -92,10 +91,7 @@ private void ConfigureMetadata()
9291
var dockerImage = Assembly.GetEntryAssembly()?.GetCustomAttribute<DockerImageAttribute>()
9392
?? DockerImageAttribute.Default;
9493

95-
var entityScope = Assembly.GetEntryAssembly()?.GetCustomAttribute<EntityScopeMetadata>()
96-
?? new EntityScopeMetadata(EntityScopeMetadata.Default);
97-
98-
_metadata.AddRange([operatorName, dockerImage, entityScope]);
94+
_metadata.AddRange([operatorName, dockerImage]);
9995
}
10096
public IConfigurationManager Configuration => _configurationManager;
10197
public IServiceCollection Services => _serviceCollection;

src/K8sOperator.NET/EventWatcher.cs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using k8s;
2-
using k8s.Autorest;
32
using k8s.Models;
43
using K8sOperator.NET.Extensions;
54
using K8sOperator.NET.Metadata;
@@ -31,7 +30,7 @@ public interface IEventWatcher
3130
Task Start(CancellationToken cancellationToken);
3231
}
3332

34-
internal class EventWatcher<T>(IKubernetesClient client, Controller<T> controller, List<object> metadata, ILoggerFactory loggerfactory) : IEventWatcher
33+
internal class EventWatcher<T>(IKubernetes client, Controller<T> controller, List<object> metadata, ILoggerFactory loggerfactory) : IEventWatcher
3534
where T: CustomResource
3635
{
3736
private KubernetesEntityAttribute Crd => Metadata.OfType<KubernetesEntityAttribute>().First();
@@ -44,7 +43,7 @@ internal class EventWatcher<T>(IKubernetesClient client, Controller<T> controlle
4443
private CancellationToken _cancellationToken = CancellationToken.None;
4544
private readonly Controller<T> _controller = controller;
4645

47-
public IKubernetesClient Client { get; } = client;
46+
public IKubernetes Client { get; } = client;
4847
public ILogger Logger { get; } = loggerfactory.CreateLogger("watcher");
4948
public IReadOnlyList<object> Metadata { get; } = metadata;
5049
public IController Controller => _controller;
@@ -54,7 +53,17 @@ public async Task Start(CancellationToken cancellationToken)
5453
_cancellationToken = cancellationToken;
5554
_isRunning = true;
5655

57-
var response = Client.ListAsync<T>(LabelSelector, cancellationToken);
56+
var response = Client.CustomObjects.ListNamespacedCustomObjectWithHttpMessagesAsync(
57+
Crd.Group,
58+
Crd.ApiVersion,
59+
Namespace,
60+
Crd.PluralName,
61+
watch: true,
62+
allowWatchBookmarks: true,
63+
labelSelector: LabelSelector,
64+
timeoutSeconds: (int)TimeSpan.FromMinutes(60).TotalSeconds,
65+
cancellationToken: cancellationToken
66+
);
5867

5968
Logger.BeginWatch(Namespace, Crd.PluralName, LabelSelector);
6069

@@ -65,7 +74,6 @@ public async Task Start(CancellationToken cancellationToken)
6574

6675
Logger.EndWatch(Namespace, Crd.PluralName, LabelSelector);
6776
}
68-
6977

7078
private void OnEvent(WatchEventType eventType, T customResource)
7179
{
@@ -198,7 +206,15 @@ private async Task<T> ReplaceAsync(T resource, CancellationToken cancellationTok
198206
Logger.ReplaceResource(resource);
199207

200208
// Replace the resource
201-
var result = await Client.ReplaceAsync(resource, cancellationToken);
209+
var result = await Client.CustomObjects.ReplaceNamespacedCustomObjectAsync<T>(
210+
resource,
211+
Crd.Group,
212+
Crd.ApiVersion,
213+
resource.Metadata.NamespaceProperty,
214+
Crd.PluralName,
215+
resource.Metadata.Name,
216+
cancellationToken: cancellationToken
217+
).ConfigureAwait(false);
202218

203219
return result;
204220
}

src/K8sOperator.NET/Extensions/KubernetesBuilderExtensions.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,18 @@ public static class KubernetesBuilderExtensions
1515
/// <returns></returns>
1616
public static IServiceCollection AddKubernetes(this IServiceCollection services)
1717
{
18-
services.AddTransient<IKubernetes>(x => {
19-
KubernetesClientConfiguration config;
18+
KubernetesClientConfiguration config;
2019

21-
if (KubernetesClientConfiguration.IsInCluster())
22-
{
23-
config = KubernetesClientConfiguration.InClusterConfig();
24-
}
25-
else
26-
{
27-
config = KubernetesClientConfiguration.BuildConfigFromConfigFile();
28-
}
29-
30-
return new Kubernetes(config);
31-
});
20+
if (KubernetesClientConfiguration.IsInCluster())
21+
{
22+
config = KubernetesClientConfiguration.InClusterConfig();
23+
}
24+
else
25+
{
26+
config = KubernetesClientConfiguration.BuildConfigFromConfigFile();
27+
}
28+
29+
services.AddSingleton<IKubernetes>(new Kubernetes(config));
3230

3331
return services;
3432
}

src/K8sOperator.NET/Extensions/MetaDataExtensions.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,7 @@ public static TBuilder WithGroup<TBuilder>(this TBuilder builder,
6161
public static TBuilder WatchNamespace<TBuilder>(this TBuilder builder, string watchNamespace)
6262
where TBuilder : IControllerConventionBuilder
6363
{
64-
builder.Finally(x => {
65-
x.Metadata.RemoveAll(x => x.GetType() == typeof(WatchNamespaceMetadata));
66-
x.Metadata.RemoveAll(x => x.GetType() == typeof(EntityScopeMetadata));
67-
x.Metadata.Add(new WatchNamespaceMetadata(watchNamespace));
68-
x.Metadata.Add(new EntityScopeMetadata(EntityScope.Namespaced));
69-
});
64+
builder.WithSingle(new WatchNamespaceMetadata(watchNamespace));
7065
return builder;
7166
}
7267

src/K8sOperator.NET/K8sOperator.NET.csproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

3-
<PropertyGroup>
4-
<UserSecretsId>75af4ad7-a38b-4759-92a0-fa12fc4f56dd</UserSecretsId>
5-
</PropertyGroup>
6-
73
<ItemGroup>
84
<PackageReference Include="KubernetesClient" />
95
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" />

src/K8sOperator.NET/KubernetesClient.cs

Lines changed: 0 additions & 113 deletions
This file was deleted.

src/K8sOperator.NET/Metadata/EntityScopeMetadata.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public interface IEntityScopeMetadata
3333
/// Sets the scope of the entity.
3434
/// </summary>
3535
/// <param name="scope"></param>
36-
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
36+
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
3737
public class EntityScopeMetadata(EntityScope scope) : Attribute, IEntityScopeMetadata
3838
{
3939
/// <summary>

test/K8sOperator.NET.Tests/EntityScope.cs

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)