Skip to content

Commit 94cec42

Browse files
authored
[SiteManager] Add configuration to verify the new code generation (#39102)
1 parent 93edc09 commit 94cec42

8 files changed

Lines changed: 90 additions & 111 deletions

File tree

Lines changed: 44 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
import "@azure-tools/typespec-azure-core";
22
import "@azure-tools/typespec-azure-resource-manager";
3-
import "@typespec/openapi";
4-
import "@typespec/rest";
5-
import "./models.tsp";
63
import "@typespec/versioning";
7-
import "./main.tsp";
84

9-
using TypeSpec.Rest;
105
using Azure.ResourceManager;
11-
using TypeSpec.Http;
126
using TypeSpec.Versioning;
137

148
namespace Microsoft.Edge;
159

16-
@doc("Site as ARM Resource")
17-
model Site is ProxyResource<SiteProperties> {
10+
@doc("Site as Extension Resource")
11+
model Site is ExtensionResource<SiteProperties> {
1812
...ResourceNameParameter<
1913
Resource = Site,
2014
KeyName = "siteName",
@@ -23,81 +17,53 @@ model Site is ProxyResource<SiteProperties> {
2317
>;
2418
}
2519

26-
alias SiteOps = Azure.ResourceManager.Legacy.LegacyOperations<
27-
ResourceInstanceParameters<Extension.ResourceGroup>,
28-
KeysOf<Site>
29-
>;
30-
31-
@armResourceOperations
32-
interface Sites {
33-
get is SiteOps.Read<Site>;
34-
createOrUpdate is SiteOps.CreateOrUpdateAsync<Site>;
35-
update is SiteOps.CustomPatchSync<Site, SiteUpdate>;
36-
delete is SiteOps.DeleteSync<Site>;
37-
listByResourceGroup is SiteOps.List<Site>;
20+
@doc("Site operations as base operations which will be extended for each scopes")
21+
interface SiteOps<
22+
Scope extends Azure.ResourceManager.Foundations.SimpleResource,
23+
ResourceName extends valueof string = ""
24+
> {
25+
list is Extension.ListByTarget<
26+
Scope,
27+
Site,
28+
OverrideResourceName = ResourceName
29+
>;
30+
get is Extension.Read<Scope, Site, OverrideResourceName = ResourceName>;
31+
createOrUpdate is Extension.CreateOrUpdateAsync<
32+
Scope,
33+
Site,
34+
OverrideResourceName = ResourceName
35+
>;
36+
update is Extension.CustomPatchSync<
37+
Scope,
38+
Site,
39+
SiteUpdate,
40+
OverrideResourceName = ResourceName
41+
>;
42+
delete is Extension.DeleteSync<
43+
Scope,
44+
Site,
45+
OverrideResourceName = ResourceName
46+
>;
3847
}
3948

40-
alias SiteBySubscriptionOps = Azure.ResourceManager.Legacy.LegacyOperations<
41-
ResourceInstanceParameters<Extension.Subscription>,
42-
KeysOf<Site>
43-
>;
49+
@armResourceOperations
50+
interface Sites extends SiteOps<Extension.ResourceGroup> {}
4451

4552
@armResourceOperations(#{ omitTags: true })
46-
interface SitesBySubscription {
47-
/** List Site resources by subscription ID */
48-
list is SiteBySubscriptionOps.List<Site>;
49-
get is SiteBySubscriptionOps.Read<Site>;
50-
createOrUpdate is SiteBySubscriptionOps.CreateOrUpdateAsync<Site>;
51-
update is SiteBySubscriptionOps.CustomPatchSync<Site, SiteUpdate>;
52-
delete is SiteBySubscriptionOps.DeleteSync<Site>;
53-
}
54-
55-
alias SiteByServiceGroupOps = Azure.ResourceManager.Legacy.ExtensionOperations<
56-
{
57-
...ApiVersionParameter;
53+
interface SitesBySubscription
54+
extends SiteOps<Extension.Subscription, "SubscriptionEdgeSite"> {}
5855

59-
/** the provider namespace */
60-
@path
61-
@segment("providers")
62-
@key
63-
providerNamespace: "Microsoft.Management";
64-
65-
/**
66-
* The name of the service group
67-
*/
68-
@segment("serviceGroups")
69-
@pattern("^[a-zA-Z0-9\\-_().]{1,90}$")
70-
@key
71-
@path
72-
servicegroupName: string;
73-
},
74-
Extension.ExtensionProviderNamespace<Site>,
75-
{
76-
...Extension.ExtensionProviderNamespace<Site>;
77-
...KeysOf<Site>;
78-
}
56+
alias ServiceGroup = Extension.ExternalResource<
57+
TargetNamespace = "Microsoft.Management",
58+
ResourceType = "serviceGroups",
59+
ResourceParameterName = "servicegroupName",
60+
NamePattern = "^[a-zA-Z0-9\\-_().]{1,90}$",
61+
Description = "The name of the service group",
62+
ParentType = "Tenant"
7963
>;
8064

8165
@armResourceOperations(#{ omitTags: true })
82-
interface SitesByServiceGroup {
83-
@doc("list Site at SG scope")
84-
@added(Versions.v2025_03_01_preview)
85-
@list
86-
listByServiceGroup is SiteByServiceGroupOps.List<Site>;
87-
88-
@doc("Get Site at SG scope")
89-
@added(Versions.v2025_03_01_preview)
90-
get is SiteByServiceGroupOps.Read<Site>;
91-
92-
@doc("create or update Site at SG scope")
93-
@added(Versions.v2025_03_01_preview)
94-
createOrUpdate is SiteByServiceGroupOps.CreateOrUpdateAsync<Site>;
95-
96-
@doc("update Site at SG scope")
97-
@added(Versions.v2025_03_01_preview)
98-
update is SiteByServiceGroupOps.CustomPatchSync<Site, SiteUpdate>;
99-
100-
@doc("delete Site at SG scope")
101-
@added(Versions.v2025_03_01_preview)
102-
delete is SiteByServiceGroupOps.DeleteSync<Site>;
103-
}
66+
@added(Versions.v2025_03_01_preview)
67+
@added(Versions.v2025_06_01)
68+
interface SitesByServiceGroup
69+
extends SiteOps<ServiceGroup, "ServiceGroupEdgeSite"> {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import "@azure-tools/typespec-client-generator-core";
2+
3+
using Azure.ClientGenerator.Core;
4+
using Microsoft.Edge;
5+
6+
/*
7+
* Following section is for overriding the client sdk method names
8+
*/
9+
@@clientName(Sites.list, "ListByResourceGroup");
10+
@@clientName(SitesByServiceGroup.list, "ListByServiceGroup");

specification/edge/Microsoft.Edge.Sites.Management/client.tsp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ using Microsoft.Edge;
1010

1111
// CSharp
1212
@@clientName(Site, "EdgeSite", "csharp");
13+
@@clientName(Sites, "ResourceGroupEdgeSite", "csharp");
1314
@@clientName(SiteProperties, "EdgeSiteProperties", "csharp");
1415
@@clientName(Azure.ResourceManager.ResourceProvisioningState,
1516
"EdgeSiteProvisioningState",
@@ -18,3 +19,7 @@ using Microsoft.Edge;
1819
@@clientName(SiteUpdate, "EdgeSitePatch", "csharp");
1920
@@clientName(SiteUpdateProperties, "EdgeSitePatchProperties", "csharp");
2021
@@clientName(SiteAddressProperties, "EdgeSiteAddressProperties", "csharp");
22+
23+
// This is a workaround for now, resource detection based on ResourceNameParameter is not yet supported in the generator
24+
@@clientName(SitesByServiceGroup, "ServiceGroupEdgeSite", "csharp");
25+
@@clientName(SitesBySubscription, "SubscriptionEdgeSite", "csharp");

specification/edge/Microsoft.Edge.Sites.Management/main.tsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import "@typespec/rest";
22
import "@typespec/versioning";
33
import "@azure-tools/typespec-azure-core";
44
import "@azure-tools/typespec-azure-resource-manager";
5+
import "./backward-compatibles.tsp";
56
import "./models.tsp";
67
import "./Site.tsp";
78

specification/edge/Microsoft.Edge.Sites.Management/tspconfig.yaml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,6 @@ options:
3434
emitter-output-dir: "{output-dir}/{service-dir}/arm-sitemanager"
3535
package-details:
3636
name: "@azure/arm-sitemanager"
37-
"@azure-tools/typespec-csharp":
38-
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
39-
namespace: "Azure.ResourceManager.SiteManager"
40-
clear-output-folder: true
41-
model-namespace: false
42-
flavor: azure
4337
"@azure-tools/typespec-go":
4438
service-dir: "sdk/resourcemanager/sitemanager"
4539
emitter-output-dir: "{output-dir}/{service-dir}/armsitemanager"
@@ -50,6 +44,9 @@ options:
5044
generate-fakes: true
5145
head-as-boolean: true
5246
inject-spans: true
47+
"@azure-typespec/http-client-csharp-mgmt":
48+
namespace: "Azure.ResourceManager.SiteManager"
49+
emitter-output-dir: "{output-dir}/sdk/sitemanager/{namespace}"
5350
linter:
5451
extends:
5552
- "@azure-tools/typespec-azure-rulesets/resource-manager"

specification/edge/resource-manager/Microsoft.Edge/sites/preview/2024-02-01-preview/sites.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"/subscriptions/{subscriptionId}/providers/Microsoft.Edge/sites": {
4848
"get": {
4949
"operationId": "SitesBySubscription_List",
50-
"description": "List Site resources by subscription ID",
50+
"description": "List Site resources by scope",
5151
"parameters": [
5252
{
5353
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -210,7 +210,7 @@
210210
{
211211
"name": "properties",
212212
"in": "body",
213-
"description": "Resource create parameters.",
213+
"description": "The resource properties to be updated.",
214214
"required": true,
215215
"schema": {
216216
"$ref": "#/definitions/SiteUpdate"
@@ -283,7 +283,7 @@
283283
"tags": [
284284
"Sites"
285285
],
286-
"description": "List a Site",
286+
"description": "List Site resources by scope",
287287
"parameters": [
288288
{
289289
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -467,7 +467,7 @@
467467
{
468468
"name": "properties",
469469
"in": "body",
470-
"description": "Resource create parameters.",
470+
"description": "The resource properties to be updated.",
471471
"required": true,
472472
"schema": {
473473
"$ref": "#/definitions/SiteUpdate"
@@ -599,7 +599,7 @@
599599
},
600600
"Site": {
601601
"type": "object",
602-
"description": "Site as ARM Resource",
602+
"description": "Site as Extension Resource",
603603
"properties": {
604604
"properties": {
605605
"$ref": "#/definitions/SiteProperties",

specification/edge/resource-manager/Microsoft.Edge/sites/preview/2025-03-01-preview/sites.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"/providers/Microsoft.Management/serviceGroups/{servicegroupName}/providers/Microsoft.Edge/sites": {
4848
"get": {
4949
"operationId": "SitesByServiceGroup_ListByServiceGroup",
50-
"description": "list Site at SG scope",
50+
"description": "List Site resources by scope",
5151
"parameters": [
5252
{
5353
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -88,7 +88,7 @@
8888
"/providers/Microsoft.Management/serviceGroups/{servicegroupName}/providers/Microsoft.Edge/sites/{siteName}": {
8989
"get": {
9090
"operationId": "SitesByServiceGroup_Get",
91-
"description": "Get Site at SG scope",
91+
"description": "Get a Site",
9292
"parameters": [
9393
{
9494
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -132,7 +132,7 @@
132132
},
133133
"put": {
134134
"operationId": "SitesByServiceGroup_CreateOrUpdate",
135-
"description": "create or update Site at SG scope",
135+
"description": "Create a Site",
136136
"parameters": [
137137
{
138138
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -206,7 +206,7 @@
206206
},
207207
"patch": {
208208
"operationId": "SitesByServiceGroup_Update",
209-
"description": "update Site at SG scope",
209+
"description": "Update a Site",
210210
"parameters": [
211211
{
212212
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -230,7 +230,7 @@
230230
{
231231
"name": "properties",
232232
"in": "body",
233-
"description": "Resource create parameters.",
233+
"description": "The resource properties to be updated.",
234234
"required": true,
235235
"schema": {
236236
"$ref": "#/definitions/SiteUpdate"
@@ -259,7 +259,7 @@
259259
},
260260
"delete": {
261261
"operationId": "SitesByServiceGroup_Delete",
262-
"description": "delete Site at SG scope",
262+
"description": "Delete a Site",
263263
"parameters": [
264264
{
265265
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -305,7 +305,7 @@
305305
"/subscriptions/{subscriptionId}/providers/Microsoft.Edge/sites": {
306306
"get": {
307307
"operationId": "SitesBySubscription_List",
308-
"description": "List Site resources by subscription ID",
308+
"description": "List Site resources by scope",
309309
"parameters": [
310310
{
311311
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -468,7 +468,7 @@
468468
{
469469
"name": "properties",
470470
"in": "body",
471-
"description": "Resource create parameters.",
471+
"description": "The resource properties to be updated.",
472472
"required": true,
473473
"schema": {
474474
"$ref": "#/definitions/SiteUpdate"
@@ -541,7 +541,7 @@
541541
"tags": [
542542
"Sites"
543543
],
544-
"description": "List a Site",
544+
"description": "List Site resources by scope",
545545
"parameters": [
546546
{
547547
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
@@ -725,7 +725,7 @@
725725
{
726726
"name": "properties",
727727
"in": "body",
728-
"description": "Resource create parameters.",
728+
"description": "The resource properties to be updated.",
729729
"required": true,
730730
"schema": {
731731
"$ref": "#/definitions/SiteUpdate"
@@ -857,7 +857,7 @@
857857
},
858858
"Site": {
859859
"type": "object",
860-
"description": "Site as ARM Resource",
860+
"description": "Site as Extension Resource",
861861
"properties": {
862862
"properties": {
863863
"$ref": "#/definitions/SiteProperties",

0 commit comments

Comments
 (0)