Skip to content

AVS SDKs generated directly from TypeSpec #34346

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 12 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
220 changes: 218 additions & 2 deletions specification/vmware/Microsoft.AVS.Management/client.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,222 @@ import "./main.tsp";
import "@azure-tools/typespec-client-generator-core";

using Azure.ClientGenerator.Core;
using Azure.ResourceManager;
using Microsoft.AVS;
using TypeSpec.Versioning;

@@clientName(Microsoft.AVS, "AzureVMwareSolutionAPI", "javascript");
@@clientName(Microsoft.AVS, "AVS", "python");
@client(
{
name: "AvsClient",
service: Microsoft.AVS,
},
"csharp,java"
)
@client(
{
name: "AzureVMwareSolutionAPI",
service: Microsoft.AVS,
},
"javascript"
)
@client(
{
name: "AVSClient",
service: Microsoft.AVS,
},
"python"
)
@useDependency(Microsoft.AVS.Versions.v2024_09_01)
namespace Customization;

@operationGroup
@armResourceOperations
interface WorkloadNetworks {
list is Microsoft.AVS.WorkloadNetworks.list;
get is Microsoft.AVS.WorkloadNetworks.get;

listDhcp is WorkloadNetworkDhcpConfigurations.list;
getDhcp is WorkloadNetworkDhcpConfigurations.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
@Azure.Core.useFinalStateVia("azure-async-operation")
createDhcp is WorkloadNetworkDhcpConfigurations.create;
updateDhcp is WorkloadNetworkDhcpConfigurations.update;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
deleteDhcp is WorkloadNetworkDhcpConfigurations.delete;

listDnsService is WorkloadNetworkDnsServices.list;
getDnsService is WorkloadNetworkDnsServices.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
@Azure.Core.useFinalStateVia("azure-async-operation")
createDnsService is WorkloadNetworkDnsServices.create;
updateDnsService is WorkloadNetworkDnsServices.update;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
deleteDnsService is WorkloadNetworkDnsServices.delete;

listDnsZones is WorkloadNetworkDnsZones.list;
getDnsZone is WorkloadNetworkDnsZones.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
@Azure.Core.useFinalStateVia("azure-async-operation")
createDnsZone is WorkloadNetworkDnsZones.create;
updateDnsZone is WorkloadNetworkDnsZones.update;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
deleteDnsZone is WorkloadNetworkDnsZones.delete;

listGateways is WorkloadNetworkGateways.list;
getGateway is WorkloadNetworkGateways.get;

listPortMirroring is WorkloadNetworkPortMirroringProfiles.list;
getPortMirroring is WorkloadNetworkPortMirroringProfiles.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
@Azure.Core.useFinalStateVia("azure-async-operation")
createPortMirroring is WorkloadNetworkPortMirroringProfiles.create;
updatePortMirroring is WorkloadNetworkPortMirroringProfiles.update;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
deletePortMirroring is WorkloadNetworkPortMirroringProfiles.delete;

#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
listPublicIPs is WorkloadNetworkPublicIps.list;
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
getPublicIP is WorkloadNetworkPublicIps.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
@Azure.Core.useFinalStateVia("azure-async-operation")
createPublicIP is WorkloadNetworkPublicIps.create;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
deletePublicIP is WorkloadNetworkPublicIps.delete;

listSegments is WorkloadNetworkSegments.list;
getSegment is WorkloadNetworkSegments.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
@Azure.Core.useFinalStateVia("azure-async-operation")
createSegment is WorkloadNetworkSegments.create;
updateSegment is WorkloadNetworkSegments.update;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
deleteSegment is WorkloadNetworkSegments.deleteSegment;

listVirtualMachines is WorkloadNetworkVirtualMachines.list;
getVirtualMachine is WorkloadNetworkVirtualMachines.get;

#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
listVMGroups is WorkloadNetworkVmGroups.list;
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
getVMGroup is WorkloadNetworkVmGroups.get;
#suppress "@azure-tools/typespec-azure-core/invalid-final-state"
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
@Azure.Core.useFinalStateVia("azure-async-operation")
createVMGroup is WorkloadNetworkVmGroups.create;
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
updateVMGroup is WorkloadNetworkVmGroups.update;
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes"
#suppress "@azure-tools/typespec-azure-core/casing-style" "Can not change existing name."
deleteVMGroup is WorkloadNetworkVmGroups.delete;
}

// operation group per interface

@operationGroup
interface Operations extends Microsoft.AVS.Operations {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Locations extends Microsoft.AVS.Locations {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface PrivateClouds extends Microsoft.AVS.PrivateClouds {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Clusters extends Microsoft.AVS.Clusters {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Datastores extends Microsoft.AVS.Datastores {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface HcxEnterpriseSites extends Microsoft.AVS.HcxEnterpriseSites {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Authorizations extends Microsoft.AVS.Authorizations {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface GlobalReachConnections extends Microsoft.AVS.GlobalReachConnections {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface CloudLinks extends Microsoft.AVS.CloudLinks {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Addons extends Microsoft.AVS.Addons {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface VirtualMachines extends Microsoft.AVS.VirtualMachines {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface PlacementPolicies extends Microsoft.AVS.PlacementPolicies {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface ScriptPackages extends Microsoft.AVS.ScriptPackages {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface ScriptCmdlets extends Microsoft.AVS.ScriptCmdlets {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface ScriptExecutions extends Microsoft.AVS.ScriptExecutions {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface IscsiPaths extends Microsoft.AVS.IscsiPaths {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Hosts extends Microsoft.AVS.Hosts {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface ProvisionedNetworks extends Microsoft.AVS.ProvisionedNetworks {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "operationGroup"
@operationGroup
interface Skus extends Microsoft.AVS.Skus {}

// model
@@clientName(Azure.ResourceManager.CommonTypes.SystemAssignedServiceIdentity,
"PrivateCloudIdentity"
);
// name conflict with Azure.ResourceManager.CommonTypes.ResourceIdentityType
// @@clientName(Azure.ResourceManager.CommonTypes.SystemAssignedServiceIdentityType,
// "ResourceIdentityType"
// );

@@clientName(VmVmPlacementPolicyProperties, "VmPlacementPolicyProperties");
@@clientName(WorkloadNetworkPublicIP, "WorkloadNetworkPublicIp", "java");
@@clientName(WorkloadNetworkPublicIPProvisioningState,
"WorkloadNetworkPublicIpProvisioningState",
"java"
);

// property
@@clientName(Circuit.expressRouteID, "expressRouteId", "java");
@@clientName(Circuit.expressRoutePrivatePeeringID,
"expressRoutePrivatePeeringId",
"java"
);
@@clientName(WorkloadNetworkPublicIPProperties,
"WorkloadNetworkPublicIpProperties",
"java"
);
@@clientName(WorkloadNetworkPublicIPProperties.publicIPBlock,
"publicIpBlock",
"java"
);
67 changes: 33 additions & 34 deletions specification/vmware/Microsoft.AVS.Management/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,41 +18,40 @@ options:
omit-unreachable-types: true
use-read-only-status-schema: true

# "@azure-tools/typespec-csharp":
# flavor: azure
# package-dir: "Azure.ResourceManager.Avs"
# clear-output-folder: true
# model-namespace: true
# namespace: "{package-dir}"
"@azure-tools/typespec-csharp":
flavor: azure
package-dir: "Azure.ResourceManager.Avs"
clear-output-folder: true
model-namespace: true
namespace: "{package-dir}"

# "@azure-tools/typespec-go":
# service-dir: "sdk/resourcemanager/avs"
# package-dir: "armavs"
# module: "github.com/Azure/azure-sdk-for-go/{service-dir}/{package-dir}"
# fix-const-stuttering: true
# flavor: "azure"
# generate-samples: true
# generate-fakes: true
# head-as-boolean: true
# inject-spans: true
"@azure-tools/typespec-go":
service-dir: "sdk/resourcemanager/avs"
package-dir: "armavs"
module: "github.com/Azure/azure-sdk-for-go/{service-dir}/{package-dir}"
fix-const-stuttering: true
flavor: "azure"
generate-samples: true
generate-fakes: true
head-as-boolean: true
inject-spans: true

# "@azure-tools/typespec-java":
# package-dir: "azure-resourcemanager-avs"
# namespace: "com.azure.resourcemanager.avs"
# service-name: "avs"
# flavor: azure
"@azure-tools/typespec-java":
package-dir: "azure-resourcemanager-avs"
namespace: "com.azure.resourcemanager.avs"
service-name: "avs"
flavor: azure

# "@azure-tools/typespec-python":
# package-dir: "azure-mgmt-avs"
# namespace: "azure.mgmt.avs"
# flavor: "azure"
# generate-test: true
# generate-sample: true
"@azure-tools/typespec-python":
package-dir: "sdk/compute"
namespace: "azure.mgmt.avs"
flavor: "azure"
generate-test: true
generate-sample: true

# "@azure-tools/typespec-ts":
# is-modular-library: true
# experimental-extensible-enums: true
# package-dir: "arm-avs"
# flavor: "azure"
# package-details:
# name: "@azure/arm-avs"
"@azure-tools/typespec-ts":
experimental-extensible-enums: true
package-dir: "arm-avs"
flavor: "azure"
package-details:
name: "@azure/arm-avs"
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ interface WorkloadNetworkDhcpConfigurations {
@route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AVS/privateClouds/{privateCloudName}/workloadNetworks/default/dhcpConfigurations/{dhcpId}")
@doc("Get a {name}", WorkloadNetworkDhcp)
@get
@armResourceRead(WorkloadNetworkDhcp)
get(
...Foundations.BaseParameters<WorkloadNetworkDhcp>,
...DhcpIdParameter,
Expand Down
8 changes: 4 additions & 4 deletions specification/vmware/resource-manager/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,10 @@ This is not used by Autorest itself.

``` yaml $(swagger-to-sdk)
swagger-to-sdk:
- repo: azure-sdk-for-js
- repo: azure-sdk-for-python
- repo: azure-sdk-for-go
- repo: azure-sdk-for-java
# - repo: azure-sdk-for-js
# - repo: azure-sdk-for-python
# - repo: azure-sdk-for-go
# - repo: azure-sdk-for-java
- repo: azure-resource-manager-schemas
- repo: azure-powershell
```
Expand Down
Loading