Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 44 additions & 78 deletions specification/edge/Microsoft.Edge.Sites.Management/Site.tsp
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "@typespec/versioning";
import "./main.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.Versioning;

namespace Microsoft.Edge;

@doc("Site as ARM Resource")
model Site is ProxyResource<SiteProperties> {
@doc("Site as Extension Resource")
model Site is ExtensionResource<SiteProperties> {
...ResourceNameParameter<
Resource = Site,
KeyName = "siteName",
Expand All @@ -23,81 +17,53 @@ model Site is ProxyResource<SiteProperties> {
>;
}

alias SiteOps = Azure.ResourceManager.Legacy.LegacyOperations<
ResourceInstanceParameters<Extension.ResourceGroup>,
KeysOf<Site>
>;

@armResourceOperations
interface Sites {
get is SiteOps.Read<Site>;
createOrUpdate is SiteOps.CreateOrUpdateAsync<Site>;
update is SiteOps.CustomPatchSync<Site, SiteUpdate>;
delete is SiteOps.DeleteSync<Site>;
listByResourceGroup is SiteOps.List<Site>;
@doc("Site operations as base operations which will be extended for each scopes")
interface SiteOps<
Scope extends Azure.ResourceManager.Foundations.SimpleResource,
ResourceName extends valueof string = ""
> {
list is Extension.ListByTarget<
Scope,
Site,
OverrideResourceName = ResourceName
>;
get is Extension.Read<Scope, Site, OverrideResourceName = ResourceName>;
createOrUpdate is Extension.CreateOrUpdateAsync<
Scope,
Site,
OverrideResourceName = ResourceName
>;
update is Extension.CustomPatchSync<
Scope,
Site,
SiteUpdate,
OverrideResourceName = ResourceName
>;
delete is Extension.DeleteSync<
Scope,
Site,
OverrideResourceName = ResourceName
>;
}

alias SiteBySubscriptionOps = Azure.ResourceManager.Legacy.LegacyOperations<
ResourceInstanceParameters<Extension.Subscription>,
KeysOf<Site>
>;
@armResourceOperations
interface Sites extends SiteOps<Extension.ResourceGroup> {}

@armResourceOperations(#{ omitTags: true })
interface SitesBySubscription {
/** List Site resources by subscription ID */
list is SiteBySubscriptionOps.List<Site>;
get is SiteBySubscriptionOps.Read<Site>;
createOrUpdate is SiteBySubscriptionOps.CreateOrUpdateAsync<Site>;
update is SiteBySubscriptionOps.CustomPatchSync<Site, SiteUpdate>;
delete is SiteBySubscriptionOps.DeleteSync<Site>;
}

alias SiteByServiceGroupOps = Azure.ResourceManager.Legacy.ExtensionOperations<
{
...ApiVersionParameter;
interface SitesBySubscription
extends SiteOps<Extension.Subscription, "SubscriptionEdgeSite"> {}

/** the provider namespace */
@path
@segment("providers")
@key
providerNamespace: "Microsoft.Management";

/**
* The name of the service group
*/
@segment("serviceGroups")
@pattern("^[a-zA-Z0-9\\-_().]{1,90}$")
@key
@path
servicegroupName: string;
},
Extension.ExtensionProviderNamespace<Site>,
{
...Extension.ExtensionProviderNamespace<Site>;
...KeysOf<Site>;
}
alias ServiceGroup = Extension.ExternalResource<
TargetNamespace = "Microsoft.Management",
ResourceType = "serviceGroups",
ResourceParameterName = "servicegroupName",
NamePattern = "^[a-zA-Z0-9\\-_().]{1,90}$",
Description = "The name of the service group",
ParentType = "Tenant"
>;

@armResourceOperations(#{ omitTags: true })
interface SitesByServiceGroup {
@doc("list Site at SG scope")
@added(Versions.v2025_03_01_preview)
@list
listByServiceGroup is SiteByServiceGroupOps.List<Site>;

@doc("Get Site at SG scope")
@added(Versions.v2025_03_01_preview)
get is SiteByServiceGroupOps.Read<Site>;

@doc("create or update Site at SG scope")
@added(Versions.v2025_03_01_preview)
createOrUpdate is SiteByServiceGroupOps.CreateOrUpdateAsync<Site>;

@doc("update Site at SG scope")
@added(Versions.v2025_03_01_preview)
update is SiteByServiceGroupOps.CustomPatchSync<Site, SiteUpdate>;

@doc("delete Site at SG scope")
@added(Versions.v2025_03_01_preview)
delete is SiteByServiceGroupOps.DeleteSync<Site>;
}
@added(Versions.v2025_03_01_preview)
@added(Versions.v2025_06_01)
interface SitesByServiceGroup
extends SiteOps<ServiceGroup, "ServiceGroupEdgeSite"> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import "@azure-tools/typespec-client-generator-core";

using Azure.ClientGenerator.Core;
using Microsoft.Edge;

/*
* Following section is for overriding the client sdk method names
*/
@@clientName(Sites.list, "ListByResourceGroup");
@@clientName(SitesByServiceGroup.list, "ListByServiceGroup");
5 changes: 5 additions & 0 deletions specification/edge/Microsoft.Edge.Sites.Management/client.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ using Microsoft.Edge;

// CSharp
@@clientName(Site, "EdgeSite", "csharp");
@@clientName(Sites, "ResourceGroupEdgeSite", "csharp");
@@clientName(SiteProperties, "EdgeSiteProperties", "csharp");
@@clientName(Azure.ResourceManager.ResourceProvisioningState,
"EdgeSiteProvisioningState",
Expand All @@ -18,3 +19,7 @@ using Microsoft.Edge;
@@clientName(SiteUpdate, "EdgeSitePatch", "csharp");
@@clientName(SiteUpdateProperties, "EdgeSitePatchProperties", "csharp");
@@clientName(SiteAddressProperties, "EdgeSiteAddressProperties", "csharp");

// This is a workaround for now, resource detection based on ResourceNameParameter is not yet supported in the generator
@@clientName(SitesByServiceGroup, "ServiceGroupEdgeSite", "csharp");
@@clientName(SitesBySubscription, "SubscriptionEdgeSite", "csharp");
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import "@typespec/rest";
import "@typespec/versioning";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "./backward-compatibles.tsp";
import "./models.tsp";
import "./Site.tsp";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@ options:
emitter-output-dir: "{output-dir}/{service-dir}/arm-sitemanager"
package-details:
name: "@azure/arm-sitemanager"
"@azure-tools/typespec-csharp":
emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
namespace: "Azure.ResourceManager.SiteManager"
clear-output-folder: true
model-namespace: false
flavor: azure
"@azure-tools/typespec-go":
service-dir: "sdk/resourcemanager/sitemanager"
emitter-output-dir: "{output-dir}/{service-dir}/armsitemanager"
Expand All @@ -50,6 +44,9 @@ options:
generate-fakes: true
head-as-boolean: true
inject-spans: true
"@azure-typespec/http-client-csharp-mgmt":
namespace: "Azure.ResourceManager.SiteManager"
emitter-output-dir: "{output-dir}/sdk/sitemanager/{namespace}"
linter:
extends:
- "@azure-tools/typespec-azure-rulesets/resource-manager"
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"/subscriptions/{subscriptionId}/providers/Microsoft.Edge/sites": {
"get": {
"operationId": "SitesBySubscription_List",
"description": "List Site resources by subscription ID",
"description": "List Site resources by scope",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -210,7 +210,7 @@
{
"name": "properties",
"in": "body",
"description": "Resource create parameters.",
"description": "The resource properties to be updated.",
"required": true,
"schema": {
"$ref": "#/definitions/SiteUpdate"
Expand Down Expand Up @@ -283,7 +283,7 @@
"tags": [
"Sites"
],
"description": "List a Site",
"description": "List Site resources by scope",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -467,7 +467,7 @@
{
"name": "properties",
"in": "body",
"description": "Resource create parameters.",
"description": "The resource properties to be updated.",
"required": true,
"schema": {
"$ref": "#/definitions/SiteUpdate"
Expand Down Expand Up @@ -599,7 +599,7 @@
},
"Site": {
"type": "object",
"description": "Site as ARM Resource",
"description": "Site as Extension Resource",
"properties": {
"properties": {
"$ref": "#/definitions/SiteProperties",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"/providers/Microsoft.Management/serviceGroups/{servicegroupName}/providers/Microsoft.Edge/sites": {
"get": {
"operationId": "SitesByServiceGroup_ListByServiceGroup",
"description": "list Site at SG scope",
"description": "List Site resources by scope",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -88,7 +88,7 @@
"/providers/Microsoft.Management/serviceGroups/{servicegroupName}/providers/Microsoft.Edge/sites/{siteName}": {
"get": {
"operationId": "SitesByServiceGroup_Get",
"description": "Get Site at SG scope",
"description": "Get a Site",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -132,7 +132,7 @@
},
"put": {
"operationId": "SitesByServiceGroup_CreateOrUpdate",
"description": "create or update Site at SG scope",
"description": "Create a Site",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -206,7 +206,7 @@
},
"patch": {
"operationId": "SitesByServiceGroup_Update",
"description": "update Site at SG scope",
"description": "Update a Site",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand All @@ -230,7 +230,7 @@
{
"name": "properties",
"in": "body",
"description": "Resource create parameters.",
"description": "The resource properties to be updated.",
"required": true,
"schema": {
"$ref": "#/definitions/SiteUpdate"
Expand Down Expand Up @@ -259,7 +259,7 @@
},
"delete": {
"operationId": "SitesByServiceGroup_Delete",
"description": "delete Site at SG scope",
"description": "Delete a Site",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -305,7 +305,7 @@
"/subscriptions/{subscriptionId}/providers/Microsoft.Edge/sites": {
"get": {
"operationId": "SitesBySubscription_List",
"description": "List Site resources by subscription ID",
"description": "List Site resources by scope",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -468,7 +468,7 @@
{
"name": "properties",
"in": "body",
"description": "Resource create parameters.",
"description": "The resource properties to be updated.",
"required": true,
"schema": {
"$ref": "#/definitions/SiteUpdate"
Expand Down Expand Up @@ -541,7 +541,7 @@
"tags": [
"Sites"
],
"description": "List a Site",
"description": "List Site resources by scope",
"parameters": [
{
"$ref": "../../../../../../common-types/resource-management/v5/types.json#/parameters/ApiVersionParameter"
Expand Down Expand Up @@ -725,7 +725,7 @@
{
"name": "properties",
"in": "body",
"description": "Resource create parameters.",
"description": "The resource properties to be updated.",
"required": true,
"schema": {
"$ref": "#/definitions/SiteUpdate"
Expand Down Expand Up @@ -857,7 +857,7 @@
},
"Site": {
"type": "object",
"description": "Site as ARM Resource",
"description": "Site as Extension Resource",
"properties": {
"properties": {
"$ref": "#/definitions/SiteProperties",
Expand Down
Loading
Loading