Skip to content

Commit 37e5985

Browse files
committed
feat: export/publish built-in managed gateway apis
1 parent b9c4361 commit 37e5985

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
lines changed

tools/code/common/Gateway.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ namespace common;
1515

1616
public sealed record GatewayName : ResourceName, IResourceName<GatewayName>
1717
{
18+
public static GatewayName Managed { get; } = From("managed");
19+
1820
private GatewayName(string value) : base(value) { }
1921

2022
public static GatewayName From(string value) => new(value);
@@ -119,6 +121,15 @@ public static Option<GatewayInformationFile> TryParse(FileInfo? file, Management
119121

120122
public sealed record GatewayDto
121123
{
124+
public static GatewayDto Managed { get; } = new()
125+
{
126+
Properties = new GatewayContract
127+
{
128+
Description = null,
129+
LocationData = null
130+
}
131+
};
132+
122133
[JsonPropertyName("properties")]
123134
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
124135
public required GatewayContract Properties { get; init; }

tools/code/extractor/Gateway.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ await list(cancellationToken)
5252

5353
async ValueTask extractGateway(GatewayName name, GatewayDto dto, CancellationToken cancellationToken)
5454
{
55-
await writeArtifacts(name, dto, cancellationToken);
55+
if (name != GatewayName.Managed)
56+
{
57+
await writeArtifacts(name, dto, cancellationToken);
58+
}
5659
await extractGatewayApis(name, cancellationToken);
5760
}
5861
}
@@ -97,7 +100,8 @@ private static ListGateways GetListGateways(IServiceProvider provider)
97100
IAsyncEnumerable<(GatewayName, GatewayDto)> listAll(CancellationToken cancellationToken)
98101
{
99102
var gatewaysUri = GatewaysUri.From(serviceUri);
100-
return gatewaysUri.List(pipeline, cancellationToken);
103+
return gatewaysUri.List(pipeline, cancellationToken)
104+
.Append((GatewayName.Managed, GatewayDto.Managed));
101105
}
102106
}
103107

tools/code/publisher/Gateway.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ private static PutGateways GetPutGateways(IServiceProvider provider)
5454
await getPublisherFiles()
5555
.Choose(tryParseName.Invoke)
5656
.Where(isNameInSourceControl.Invoke)
57+
.Where(name => name != GatewayName.Managed)
5758
.Distinct()
5859
.IterParallel(put.Invoke, cancellationToken);
5960
};
@@ -203,6 +204,7 @@ private static DeleteGateways GetDeleteGateways(IServiceProvider provider)
203204
await getPublisherFiles()
204205
.Choose(tryParseName.Invoke)
205206
.Where(name => isNameInSourceControl(name) is false)
207+
.Where(name => name != GatewayName.Managed)
206208
.Distinct()
207209
.IterParallel(delete.Invoke, cancellationToken);
208210
};

tools/code/publisher/GatewayApi.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Linq;
1212
using System.Threading;
1313
using System.Threading.Tasks;
14+
using LanguageExt.UnsafeValueAccess;
1415

1516
namespace publisher;
1617

@@ -182,7 +183,9 @@ public static void ConfigureDeleteGatewayApis(IHostApplicationBuilder builder)
182183
private static DeleteGatewayApis GetDeleteGatewayApis(IServiceProvider provider)
183184
{
184185
var getPublisherFiles = provider.GetRequiredService<GetPublisherFiles>();
185-
var tryParseName = provider.GetRequiredService<TryParseGatewayApiName>();
186+
var tryParseGatewayApiName = provider.GetRequiredService<TryParseGatewayApiName>();
187+
var tryParseApiName = provider.GetRequiredService<TryParseApiName>();
188+
var serviceDirectory = provider.GetRequiredService<ManagementServiceDirectory>();
186189
var isNameInSourceControl = provider.GetRequiredService<IsGatewayApiNameInSourceControl>();
187190
var delete = provider.GetRequiredService<DeleteGatewayApi>();
188191
var activitySource = provider.GetRequiredService<ActivitySource>();
@@ -194,8 +197,15 @@ private static DeleteGatewayApis GetDeleteGatewayApis(IServiceProvider provider)
194197

195198
logger.LogInformation("Deleting gateway apis...");
196199

197-
await getPublisherFiles()
198-
.Choose(tryParseName.Invoke)
200+
var publisherFiles = getPublisherFiles();
201+
var managedGatewayGatewayApis = publisherFiles.Select(x => tryParseApiName(x))
202+
.Where(x => x.IsSome)
203+
.Select(x => GatewayApiInformationFile.From(x.ValueUnsafe()!, GatewayName.Managed, serviceDirectory)
204+
.ToFileInfo());
205+
206+
await publisherFiles
207+
.Concat(managedGatewayGatewayApis)
208+
.Choose(tryParseGatewayApiName.Invoke)
199209
.Where(api => isNameInSourceControl(api.Name, api.GatewayName) is false)
200210
.Distinct()
201211
.IterParallel(delete.Invoke, cancellationToken);

0 commit comments

Comments
 (0)