Skip to content

Commit bb99828

Browse files
authored
Refactor CmCoreFeature into discrete features (Azure#47301)
* Refactor CmCoreFeature into discrete features * fix tests
1 parent e986729 commit bb99828

13 files changed

+431
-249
lines changed

sdk/provisioning/Azure.Provisioning.CloudMachine/api/Azure.Provisioning.CloudMachine.net8.0.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,41 @@ public void AddFeature(Azure.Provisioning.CloudMachine.CloudMachineFeature featu
4040
public void AddResource(Azure.Provisioning.Primitives.NamedProvisionableConstruct resource) { }
4141
public Azure.Provisioning.ProvisioningPlan Build(Azure.Provisioning.ProvisioningBuildOptions? context = null) { throw null; }
4242
}
43+
public partial class EventGridSystemTopicFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
44+
{
45+
public EventGridSystemTopicFeature(string name, Azure.Provisioning.CloudMachine.CloudMachineFeature source) { }
46+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
47+
}
4348
public partial class FeatureCollection
4449
{
4550
public FeatureCollection() { }
4651
public System.Collections.Generic.IEnumerable<T> FindAll<T>() where T : Azure.Provisioning.CloudMachine.CloudMachineFeature { throw null; }
4752
}
53+
public partial class ServiceBusNamespaceFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
54+
{
55+
public ServiceBusNamespaceFeature(string name, Azure.Provisioning.ServiceBus.ServiceBusSkuName sku = Azure.Provisioning.ServiceBus.ServiceBusSkuName.Standard, Azure.Provisioning.ServiceBus.ServiceBusSkuTier tier = Azure.Provisioning.ServiceBus.ServiceBusSkuTier.Standard) { }
56+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
57+
}
58+
public partial class ServiceBusSubscriptionFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
59+
{
60+
public ServiceBusSubscriptionFeature(string name, Azure.CloudMachine.ServiceBusTopicFeature parent) { }
61+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
62+
}
63+
public partial class ServiceBusTopicFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
64+
{
65+
public ServiceBusTopicFeature(string name, Azure.CloudMachine.ServiceBusNamespaceFeature parent) { }
66+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
67+
}
68+
public partial class StorageFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
69+
{
70+
public StorageFeature(string accountName, Azure.Provisioning.Storage.StorageSkuName sku = Azure.Provisioning.Storage.StorageSkuName.StandardLrs, System.Collections.Generic.IEnumerable<string>? containerNames = null) { }
71+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
72+
}
73+
public partial class SystemTopicEventSubscriptionFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
74+
{
75+
public SystemTopicEventSubscriptionFeature(string name, Azure.CloudMachine.EventGridSystemTopicFeature parent, Azure.CloudMachine.ServiceBusTopicFeature destination, Azure.CloudMachine.ServiceBusNamespaceFeature parentNamespace) { }
76+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
77+
}
4878
}
4979
namespace Azure.CloudMachine.AppService
5080
{
@@ -93,6 +123,7 @@ public virtual void AddTo(Azure.CloudMachine.CloudMachineInfrastructure cm) { }
93123
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
94124
public void Emit(Azure.CloudMachine.CloudMachineInfrastructure cm) { }
95125
protected abstract Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure cm);
126+
protected static T ValidateIsOfType<T>(Azure.Provisioning.CloudMachine.CloudMachineFeature resource) { throw null; }
96127
}
97128
}
98129
namespace System.ClientModel.TypeSpec

sdk/provisioning/Azure.Provisioning.CloudMachine/api/Azure.Provisioning.CloudMachine.netstandard2.0.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,41 @@ public void AddFeature(Azure.Provisioning.CloudMachine.CloudMachineFeature featu
4040
public void AddResource(Azure.Provisioning.Primitives.NamedProvisionableConstruct resource) { }
4141
public Azure.Provisioning.ProvisioningPlan Build(Azure.Provisioning.ProvisioningBuildOptions? context = null) { throw null; }
4242
}
43+
public partial class EventGridSystemTopicFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
44+
{
45+
public EventGridSystemTopicFeature(string name, Azure.Provisioning.CloudMachine.CloudMachineFeature source) { }
46+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
47+
}
4348
public partial class FeatureCollection
4449
{
4550
public FeatureCollection() { }
4651
public System.Collections.Generic.IEnumerable<T> FindAll<T>() where T : Azure.Provisioning.CloudMachine.CloudMachineFeature { throw null; }
4752
}
53+
public partial class ServiceBusNamespaceFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
54+
{
55+
public ServiceBusNamespaceFeature(string name, Azure.Provisioning.ServiceBus.ServiceBusSkuName sku = Azure.Provisioning.ServiceBus.ServiceBusSkuName.Standard, Azure.Provisioning.ServiceBus.ServiceBusSkuTier tier = Azure.Provisioning.ServiceBus.ServiceBusSkuTier.Standard) { }
56+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
57+
}
58+
public partial class ServiceBusSubscriptionFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
59+
{
60+
public ServiceBusSubscriptionFeature(string name, Azure.CloudMachine.ServiceBusTopicFeature parent) { }
61+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
62+
}
63+
public partial class ServiceBusTopicFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
64+
{
65+
public ServiceBusTopicFeature(string name, Azure.CloudMachine.ServiceBusNamespaceFeature parent) { }
66+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
67+
}
68+
public partial class StorageFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
69+
{
70+
public StorageFeature(string accountName, Azure.Provisioning.Storage.StorageSkuName sku = Azure.Provisioning.Storage.StorageSkuName.StandardLrs, System.Collections.Generic.IEnumerable<string>? containerNames = null) { }
71+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
72+
}
73+
public partial class SystemTopicEventSubscriptionFeature : Azure.Provisioning.CloudMachine.CloudMachineFeature
74+
{
75+
public SystemTopicEventSubscriptionFeature(string name, Azure.CloudMachine.EventGridSystemTopicFeature parent, Azure.CloudMachine.ServiceBusTopicFeature destination, Azure.CloudMachine.ServiceBusNamespaceFeature parentNamespace) { }
76+
protected override Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure infrastructure) { throw null; }
77+
}
4878
}
4979
namespace Azure.CloudMachine.AppService
5080
{
@@ -93,6 +123,7 @@ public virtual void AddTo(Azure.CloudMachine.CloudMachineInfrastructure cm) { }
93123
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
94124
public void Emit(Azure.CloudMachine.CloudMachineInfrastructure cm) { }
95125
protected abstract Azure.Provisioning.Primitives.ProvisionableResource EmitCore(Azure.CloudMachine.CloudMachineInfrastructure cm);
126+
protected static T ValidateIsOfType<T>(Azure.Provisioning.CloudMachine.CloudMachineFeature resource) { throw null; }
96127
}
97128
}
98129
namespace System.ClientModel.TypeSpec

sdk/provisioning/Azure.Provisioning.CloudMachine/src/CDKLevel3/CloudMachineCoreFeature.cs

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

sdk/provisioning/Azure.Provisioning.CloudMachine/src/CDKLevel3/CloudMachineFeature.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License.
33

4+
using System;
45
using System.Collections.Generic;
56
using System.ComponentModel;
67
using Azure.CloudMachine;
@@ -28,4 +29,11 @@ public void Emit(CloudMachineInfrastructure cm)
2829
public ProvisionableResource Emitted { get; protected set; } = default!;
2930

3031
protected internal Dictionary<Provisionable, (string RoleName, string RoleId)[]> RequiredSystemRoles { get; } = [];
32+
33+
protected static T ValidateIsOfType<T>(CloudMachineFeature resource)
34+
{
35+
if (resource.Emitted is T typed)
36+
return typed;
37+
throw new ArgumentException($"Expected resource of type {typeof(T).Name}, but got {resource.GetType().Name}");
38+
}
3139
}

0 commit comments

Comments
 (0)