Skip to content
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

containerapps: fixing inconsistencies in the swagger #18660

Closed
wants to merge 5 commits into from

Conversation

tombuildsstuff
Copy link
Contributor

MSFT employees can try out our new experience at OpenAPI Hub - one location for using our validation tools and finding your workflow.

Changelog

Add a changelog entry for this PR by answering the following questions:

  1. What's the purpose of the update?
    • new service onboarding
    • new API version
    • update existing version for new feature
    • update existing version to fix swagger quality issue
    • Other, please clarify
  2. When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.
  3. When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
  4. If updating an existing version, please select the specific language SDKs and CLIs that must be refreshed after the swagger is published.
    • SDK of .NET (need service team to ensure code readiness)
    • SDK of Python
    • SDK of Java
    • SDK of Js
    • SDK of Go
    • PowerShell
    • CLI
    • Terraform
    • No refresh required for updates in this PR

Contribution checklist:

If any further question about AME onboarding or validation tools, please view the FAQ.

ARM API Review Checklist

Applicability: ⚠️

If your changes encompass only the following scenarios, you should SKIP this section, as these scenarios do not require ARM review.

  • Change to data plane APIs
  • Adding new properties
  • All removals

Otherwise your PR may be subject to ARM review requirements. Complete the following:

  • Check this box if any of the following apply to the PR so that label "WaitForARMFeedback" will be added automatically to begin ARM API Review. Failure to comply may result in delays to the manifest.

    • Adding a new service
    • Adding new API(s)
    • Adding a new API version
      -[ ] To review changes efficiently, ensure you are using OpenAPIHub to initialize the PR for adding a new version. More details, refer to the wiki.
  • Ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

  • If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist

If any of the following scenarios apply to the PR, request approval from the Breaking Change Review Board as defined in the Breaking Change Policy.

  • Removing API(s) in a stable version
  • Removing properties in a stable version
  • Removing API version(s) in a stable version
  • Updating API in a stable or public preview version with Breaking Change Validation errors
  • Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.

Please follow the link to find more details on PR review process.

@openapi-workflow-bot
Copy link

Hi, @tombuildsstuff Thanks for your PR. I am workflow bot for review process. Here are some small tips.

  • Please ensure to do self-check against checklists in first PR comment.
  • PR assignee is the person auto-assigned and responsible for your current PR reviewing and merging.
  • For specs comparison cross API versions, Use API Specs Comparison Report Generator
  • If there is CI failure(s), to fix CI error(s) is mandatory for PR merging; or you need to provide justification in PR comment for explanation. How to fix?

  • Any feedback about review process or workflow bot, pls contact swagger and tools team. vscswagger@microsoft.com

    @openapi-workflow-bot
    Copy link

    [Call for Action] To better understand Azure service dev/test scenario, and support Azure service developer better on Swagger and REST API related tests in early phase, please help to fill in with this survey https://aka.ms/SurveyForEarlyPhase. It will take 5 to 10 minutes. If you already complete survey, please neglect this comment. Thanks.

    @ghost ghost added the customer-reported Issues that are reported by GitHub users external to the Azure organization. label Apr 12, 2022
    @ghost
    Copy link

    ghost commented Apr 12, 2022

    Thank you for your contribution tombuildsstuff! We will review the pull request and get back to you soon.

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Apr 12, 2022

    Swagger Validation Report

    ️❌BreakingChange: 118 Errors, 0 Warnings failed [Detail]

    Only 30 items are listed, please refer to log for more details.

    Rule Message
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L88:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L141:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L191:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L248:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L354:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/DaprComponents.json#L88:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/DaprComponents.json#L140:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/DaprComponents.json#L202:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L116:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L161:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L222:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L271:11
    1009 - RemovedRequiredParameter The required parameter 'managedEnvironmentName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L327:11
    1009 - RemovedRequiredParameter The required parameter 'managedEnvironmentName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L377:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L384:11
    1009 - RemovedRequiredParameter The required parameter 'managedEnvironmentName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L429:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L436:11
    1009 - RemovedRequiredParameter The required parameter 'managedEnvironmentName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L489:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L496:11
    1009 - RemovedRequiredParameter The required parameter 'managedEnvironmentName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L542:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L549:11
    1009 - RemovedRequiredParameter The required parameter 'envName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L33:11
    1009 - RemovedRequiredParameter The required parameter 'envName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L80:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L87:11
    1009 - RemovedRequiredParameter The required parameter 'envName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L132:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L139:11
    1009 - RemovedRequiredParameter The required parameter 'envName' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L193:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L200:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L96:11
    1009 - RemovedRequiredParameter The required parameter 'name' was removed in the new version.
    Old: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L149:11
    ️⚠️LintDiff: 13 Warnings warning [Detail]
    The following errors/warnings are introduced by current PR:
    Rule Message
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L19
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L66
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L118
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L179
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L19
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L66
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L118
    ⚠️ R2023 - SummaryAndDescriptionMustNotBeSame The summary and description values should not be same.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L179
    ⚠️ R2029 - PageableOperation Based on the response model schema, operation 'ManagedEnvironmentsStorages_List' might be pageable. Consider adding the x-ms-pageable extension.
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L19
    ⚠️ R2029 - PageableOperation Based on the response model schema, operation 'ManagedEnvironmentsStorages_List' might be pageable. Consider adding the x-ms-pageable extension.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L19
    ⚠️ R4030 - UniqueXmsExample Do not have duplicate name of x-ms-example, make sure every x-ms-example name unique. Duplicate x-ms-example: List environments storages by subscription
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L225
    ⚠️ R4030 - UniqueXmsExample Do not have duplicate name of x-ms-example, make sure every x-ms-example name unique. Duplicate x-ms-example: List Container Apps Secrets
    Location: Microsoft.App/stable/2022-03-01/DaprComponents.json#L281
    ⚠️ R4030 - UniqueXmsExample Do not have duplicate name of x-ms-example, make sure every x-ms-example name unique. Duplicate x-ms-example: List environments storages by subscription
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L225


    The following errors/warnings exist before current PR submission:

    Rule Message
    ⚠️ R2001 - AvoidNestedProperties Consider using x-ms-client-flatten to provide a better end user experience
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L792
    ⚠️ R2001 - AvoidNestedProperties Consider using x-ms-client-flatten to provide a better end user experience
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L290
    ⚠️ R2001 - AvoidNestedProperties Consider using x-ms-client-flatten to provide a better end user experience
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironments.json#L854
    ⚠️ R2001 - AvoidNestedProperties Consider using x-ms-client-flatten to provide a better end user experience
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L290
    ⚠️ R2029 - PageableOperation Based on the response model schema, operation 'ContainerAppsRevisionReplicas_ListReplicas' might be pageable. Consider adding the x-ms-pageable extension.
    Location: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L281
    ⚠️ R2029 - PageableOperation Based on the response model schema, operation 'ContainerAppsRevisionReplicas_ListReplicas' might be pageable. Consider adding the x-ms-pageable extension.
    Location: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L289
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'daprComponents' with immediate parent 'ManagedEnvironment', must have a list by immediate parent operation.
    Location: Microsoft.App/preview/2022-01-01-preview/DaprComponents.json#L258
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'storages' with immediate parent 'ManagedEnvironment', must have a list by immediate parent operation.
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironmentsStorages.json#L281
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'revisions' with immediate parent 'ContainerApp', must have a list by immediate parent operation.
    Location: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L393
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'replicas' with immediate parent 'Revision', must have a list by immediate parent operation.
    Location: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L500
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'daprComponents' with immediate parent 'ManagedEnvironment', must have a list by immediate parent operation.
    Location: Microsoft.App/stable/2022-03-01/DaprComponents.json#L311
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'certificates' with immediate parent 'ManagedEnvironment', must have a list by immediate parent operation.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironments.json#L845
    ⚠️ R3010 - TrackedResourceListByImmediateParent The child tracked resource, 'storages' with immediate parent 'ManagedEnvironment', must have a list by immediate parent operation.
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironmentsStorages.json#L281
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: ready
    Location: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L554
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: started
    Location: Microsoft.App/preview/2022-01-01-preview/ContainerAppsRevisions.json#L558
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: internal
    Location: Microsoft.App/preview/2022-01-01-preview/ManagedEnvironments.json#L610
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: enabled
    Location: Microsoft.App/stable/2022-03-01/ContainerApps.json#L558
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: external
    Location: Microsoft.App/stable/2022-03-01/ContainerApps.json#L594
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: allowInsecure
    Location: Microsoft.App/stable/2022-03-01/ContainerApps.json#L637
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: latestRevision
    Location: Microsoft.App/stable/2022-03-01/ContainerApps.json#L710
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: ready
    Location: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L562
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: started
    Location: Microsoft.App/stable/2022-03-01/ContainerAppsRevisions.json#L566
    ⚠️ R3018 - EnumInsteadOfBoolean Booleans are not descriptive and make them hard to use. Consider using string enums with allowed set of values defined. Property: internal
    Location: Microsoft.App/stable/2022-03-01/ManagedEnvironments.json#L667
    ️️✔️Avocado succeeded [Detail] [Expand]
    Validation passes for Avocado.
    ️️✔️~[Staging] ApiReadinessCheck succeeded [Detail] [Expand]
    ️️✔️ModelValidation succeeded [Detail] [Expand]
    Validation passes for ModelValidation.
    ️️✔️SemanticValidation succeeded [Detail] [Expand]
    Validation passes for SemanticValidation.
    ️️✔️Cross-Version Breaking Changes succeeded [Detail] [Expand]
    There are no breaking changes.
    ️️✔️CredScan succeeded [Detail] [Expand]
    There is no credential detected.
    ️️✔️SDK Track2 Validation succeeded [Detail] [Expand]
    Validation passes for SDKTrack2Validation

    ️️✔️PrettierCheck succeeded [Detail] [Expand]
    Validation passes for PrettierCheck.
    ️️✔️SpellCheck succeeded [Detail] [Expand]
    Validation passes for SpellCheck.
    ️️✔️Lint(RPaaS) succeeded [Detail] [Expand]
    Validation passes for Lint(RPaaS).
    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Apr 12, 2022

    Swagger Generation Artifacts

    ️️✔️ApiDocPreview succeeded [Detail] [Expand]
     Please click here to preview with your @microsoft account. 
    ️❌SDK Breaking Change Tracking failed [Detail]

    Breaking Changes Tracking

    ️✔️azure-sdk-for-go-track2 - armapp - 0.1.0
    azure-sdk-for-python-track2 - track2_azure-mgmt-app - 1.0.0b1
    +	Operation CertificatesOperations.create_or_update has a new signature
    +	Operation CertificatesOperations.create_or_update has a new signature
    +	Operation CertificatesOperations.delete has a new signature
    +	Operation CertificatesOperations.delete has a new signature
    +	Operation CertificatesOperations.get has a new signature
    +	Operation CertificatesOperations.get has a new signature
    +	Operation CertificatesOperations.list has a new signature
    +	Operation CertificatesOperations.update has a new signature
    +	Operation CertificatesOperations.update has a new signature
    +	Operation ContainerAppsRevisionReplicasOperations.get_replica has a new signature
    +	Operation ContainerAppsRevisionsOperations.activate_revision has a new signature
    +	Operation ContainerAppsRevisionsOperations.deactivate_revision has a new signature
    +	Operation ContainerAppsRevisionsOperations.get_revision has a new signature
    +	Operation ContainerAppsRevisionsOperations.restart_revision has a new signature
    +	Operation DaprComponentsOperations.create_or_update has a new signature
    +	Operation DaprComponentsOperations.delete has a new signature
    +	Operation DaprComponentsOperations.get has a new signature
    +	Operation ManagedEnvironmentsOperations.begin_create_or_update has a new signature
    +	Operation ManagedEnvironmentsOperations.begin_delete has a new signature
    +	Operation ManagedEnvironmentsOperations.get has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.create_or_update has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.create_or_update has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.delete has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.delete has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.get has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.get has a new signature
    +	Operation ManagedEnvironmentsStoragesOperations.list has a new signature
    azure-sdk-for-js - @azure/arm-app - 1.0.0
    ️⚠️ azure-sdk-for-python-track2 warning [Detail]
    • ⚠️Warning [Logs] Generate from f27a39e1cbc269c09a056b897c450ea6bfbea279. SDK Automation 14.0.0
      command	sh scripts/automation_init.sh ../azure-sdk-for-python_tmp/initInput.json ../azure-sdk-for-python_tmp/initOutput.json
      cmderr	[automation_init.sh] WARNING: Skipping azure-nspkg as it is not installed.
      command	sh scripts/automation_generate.sh ../azure-sdk-for-python_tmp/generateInput.json ../azure-sdk-for-python_tmp/generateOutput.json
    • ️✔️track2_azure-mgmt-app [View full logs]  [Preview SDK Changes] Breaking Change Detected
      info	[Changelog] **Features**
      info	[Changelog]
      info	[Changelog]   - Added operation ContainerAppsOperations.begin_update
      info	[Changelog]   - Added operation DaprComponentsOperations.list_secrets
      info	[Changelog]   - Added operation ManagedEnvironmentsOperations.begin_update
      info	[Changelog]   - Added operation group NamespacesOperations
      info	[Changelog]   - Model GithubActionConfiguration has a new parameter context_path
      info	[Changelog]   - Model GithubActionConfiguration has a new parameter image
      info	[Changelog]   - Model ManagedEnvironment has a new parameter dapr_ai_connection_string
      info	[Changelog]   - Model ManagedEnvironment has a new parameter zone_redundant
      info	[Changelog]   - Model TrafficWeight has a new parameter label
      info	[Changelog]
      info	[Changelog] **Breaking changes**
      info	[Changelog]
      info	[Changelog]   - Model GithubActionConfiguration no longer has parameter dockerfile_path
      info	[Changelog]   - Operation CertificatesOperations.create_or_update has a new signature
      info	[Changelog]   - Operation CertificatesOperations.create_or_update has a new signature
      info	[Changelog]   - Operation CertificatesOperations.delete has a new signature
      info	[Changelog]   - Operation CertificatesOperations.delete has a new signature
      info	[Changelog]   - Operation CertificatesOperations.get has a new signature
      info	[Changelog]   - Operation CertificatesOperations.get has a new signature
      info	[Changelog]   - Operation CertificatesOperations.list has a new signature
      info	[Changelog]   - Operation CertificatesOperations.update has a new signature
      info	[Changelog]   - Operation CertificatesOperations.update has a new signature
      info	[Changelog]   - Operation ContainerAppsRevisionReplicasOperations.get_replica has a new signature
      info	[Changelog]   - Operation ContainerAppsRevisionsOperations.activate_revision has a new signature
      info	[Changelog]   - Operation ContainerAppsRevisionsOperations.deactivate_revision has a new signature
      info	[Changelog]   - Operation ContainerAppsRevisionsOperations.get_revision has a new signature
      info	[Changelog]   - Operation ContainerAppsRevisionsOperations.list_revisions has a new signature
      info	[Changelog]   - Operation ContainerAppsRevisionsOperations.restart_revision has a new signature
      info	[Changelog]   - Operation DaprComponentsOperations.create_or_update has a new signature
      info	[Changelog]   - Operation DaprComponentsOperations.delete has a new signature
      info	[Changelog]   - Operation DaprComponentsOperations.get has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsOperations.begin_create_or_update has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsOperations.begin_delete has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsOperations.get has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.create_or_update has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.create_or_update has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.delete has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.delete has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.get has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.get has a new signature
      info	[Changelog]   - Operation ManagedEnvironmentsStoragesOperations.list has a new signature
      info	[Changelog]   - Removed operation ContainerAppsOperations.update
      info	[Changelog]   - Removed operation ManagedEnvironmentsOperations.update
    ️️✔️ azure-sdk-for-java succeeded [Detail] [Expand]
    ️️✔️ azure-sdk-for-go-track2 succeeded [Detail] [Expand]
    • ️✔️Succeeded [Logs] Generate from f27a39e1cbc269c09a056b897c450ea6bfbea279. SDK Automation 14.0.0
      command	sh ./eng/scripts/automation_init.sh ../../../../../azure-sdk-for-go_tmp/initInput.json ../../../../../azure-sdk-for-go_tmp/initOutput.json
      command	generator automation-v2 ../../../../../azure-sdk-for-go_tmp/generateInput.json ../../../../../azure-sdk-for-go_tmp/generateOutput.json
    • ️✔️armapp [View full logs]  [Preview SDK Changes]
      Only show 120 items here, please refer to log for details.
      info	[Changelog] - New struct `CookieExpiration`
      info	[Changelog] - New struct `CustomDomain`
      info	[Changelog] - New struct `CustomHostnameAnalysisResult`
      info	[Changelog] - New struct `CustomHostnameAnalysisResultProperties`
      info	[Changelog] - New struct `CustomOpenIDConnectProvider`
      info	[Changelog] - New struct `CustomScaleRule`
      info	[Changelog] - New struct `Dapr`
      info	[Changelog] - New struct `DaprComponent`
      info	[Changelog] - New struct `DaprComponentProperties`
      info	[Changelog] - New struct `DaprComponentsClient`
      info	[Changelog] - New struct `DaprComponentsClientCreateOrUpdateOptions`
      info	[Changelog] - New struct `DaprComponentsClientCreateOrUpdateResponse`
      info	[Changelog] - New struct `DaprComponentsClientDeleteOptions`
      info	[Changelog] - New struct `DaprComponentsClientDeleteResponse`
      info	[Changelog] - New struct `DaprComponentsClientGetOptions`
      info	[Changelog] - New struct `DaprComponentsClientGetResponse`
      info	[Changelog] - New struct `DaprComponentsClientListOptions`
      info	[Changelog] - New struct `DaprComponentsClientListResponse`
      info	[Changelog] - New struct `DaprComponentsClientListSecretsOptions`
      info	[Changelog] - New struct `DaprComponentsClientListSecretsResponse`
      info	[Changelog] - New struct `DaprComponentsCollection`
      info	[Changelog] - New struct `DaprMetadata`
      info	[Changelog] - New struct `DaprSecretsCollection`
      info	[Changelog] - New struct `DefaultAuthorizationPolicy`
      info	[Changelog] - New struct `DefaultErrorResponse`
      info	[Changelog] - New struct `DefaultErrorResponseError`
      info	[Changelog] - New struct `DefaultErrorResponseErrorDetailsItem`
      info	[Changelog] - New struct `EnvironmentVar`
      info	[Changelog] - New struct `Facebook`
      info	[Changelog] - New struct `ForwardProxy`
      info	[Changelog] - New struct `GitHub`
      info	[Changelog] - New struct `GithubActionConfiguration`
      info	[Changelog] - New struct `GlobalValidation`
      info	[Changelog] - New struct `Google`
      info	[Changelog] - New struct `HTTPScaleRule`
      info	[Changelog] - New struct `HTTPSettings`
      info	[Changelog] - New struct `HTTPSettingsRoutes`
      info	[Changelog] - New struct `IdentityProviders`
      info	[Changelog] - New struct `Ingress`
      info	[Changelog] - New struct `JwtClaimChecks`
      info	[Changelog] - New struct `LogAnalyticsConfiguration`
      info	[Changelog] - New struct `Login`
      info	[Changelog] - New struct `LoginRoutes`
      info	[Changelog] - New struct `LoginScopes`
      info	[Changelog] - New struct `LogsConfiguration`
      info	[Changelog] - New struct `ManagedEnvironment`
      info	[Changelog] - New struct `ManagedEnvironmentProperties`
      info	[Changelog] - New struct `ManagedEnvironmentStorage`
      info	[Changelog] - New struct `ManagedEnvironmentStorageProperties`
      info	[Changelog] - New struct `ManagedEnvironmentStoragesCollection`
      info	[Changelog] - New struct `ManagedEnvironmentsClient`
      info	[Changelog] - New struct `ManagedEnvironmentsClientBeginCreateOrUpdateOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsClientBeginDeleteOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsClientBeginUpdateOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsClientCreateOrUpdateResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsClientDeleteResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsClientGetOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsClientGetResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsClientListByResourceGroupOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsClientListByResourceGroupResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsClientListBySubscriptionOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsClientListBySubscriptionResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsClientUpdateResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsCollection`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClient`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientCreateOrUpdateOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientCreateOrUpdateResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientDeleteOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientDeleteResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientGetOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientGetResponse`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientListOptions`
      info	[Changelog] - New struct `ManagedEnvironmentsStoragesClientListResponse`
      info	[Changelog] - New struct `ManagedServiceIdentity`
      info	[Changelog] - New struct `NamespacesClient`
      info	[Changelog] - New struct `NamespacesClientCheckNameAvailabilityOptions`
      info	[Changelog] - New struct `NamespacesClientCheckNameAvailabilityResponse`
      info	[Changelog] - New struct `Nonce`
      info	[Changelog] - New struct `OpenIDConnectClientCredential`
      info	[Changelog] - New struct `OpenIDConnectConfig`
      info	[Changelog] - New struct `OpenIDConnectLogin`
      info	[Changelog] - New struct `OpenIDConnectRegistration`
      info	[Changelog] - New struct `OperationDetail`
      info	[Changelog] - New struct `OperationDisplay`
      info	[Changelog] - New struct `OperationsClient`
      info	[Changelog] - New struct `OperationsClientListOptions`
      info	[Changelog] - New struct `OperationsClientListResponse`
      info	[Changelog] - New struct `ProxyResource`
      info	[Changelog] - New struct `QueueScaleRule`
      info	[Changelog] - New struct `Registration`
      info	[Changelog] - New struct `RegistryCredentials`
      info	[Changelog] - New struct `RegistryInfo`
      info	[Changelog] - New struct `Replica`
      info	[Changelog] - New struct `ReplicaCollection`
      info	[Changelog] - New struct `ReplicaContainer`
      info	[Changelog] - New struct `ReplicaProperties`
      info	[Changelog] - New struct `Resource`
      info	[Changelog] - New struct `Revision`
      info	[Changelog] - New struct `RevisionCollection`
      info	[Changelog] - New struct `RevisionProperties`
      info	[Changelog] - New struct `Scale`
      info	[Changelog] - New struct `ScaleRule`
      info	[Changelog] - New struct `ScaleRuleAuth`
      info	[Changelog] - New struct `Secret`
      info	[Changelog] - New struct `SecretsCollection`
      info	[Changelog] - New struct `SourceControl`
      info	[Changelog] - New struct `SourceControlCollection`
      info	[Changelog] - New struct `SourceControlProperties`
      info	[Changelog] - New struct `SystemData`
      info	[Changelog] - New struct `Template`
      info	[Changelog] - New struct `TrackedResource`
      info	[Changelog] - New struct `TrafficWeight`
      info	[Changelog] - New struct `Twitter`
      info	[Changelog] - New struct `TwitterRegistration`
      info	[Changelog] - New struct `UserAssignedIdentity`
      info	[Changelog] - New struct `VnetConfiguration`
      info	[Changelog] - New struct `Volume`
      info	[Changelog] - New struct `VolumeMount`
      info	[Changelog]
      info	[Changelog] Total 0 breaking change(s), 630 additive change(s).
    ️⚠️ azure-sdk-for-js warning [Detail]
    • ⚠️Warning [Logs] Generate from f27a39e1cbc269c09a056b897c450ea6bfbea279. SDK Automation 14.0.0
      command	sh .scripts/automation_init.sh ../azure-sdk-for-js_tmp/initInput.json ../azure-sdk-for-js_tmp/initOutput.json
      cmderr	[automation_init.sh]  deprecated read-package-tree@5.1.6: The functionality that this package provided is now in @npmcli/arborist
      cmderr	[automation_init.sh]  uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
      cmderr	[automation_init.sh] npm WARN deprecated @opentelemetry/types@0.2.0: Package renamed to @opentelemetry/api, see https://github.com/open-telemetry/opentelemetry-js
      cmderr	[automation_init.sh] npm WARN @octokit/plugin-request-log@1.0.4 requires a peer of @octokit/core@>=3 but none is installed. You must install peer dependencies yourself.
      warn	File azure-sdk-for-js_tmp/initOutput.json not found to read
      command	sh .scripts/automation_generate.sh ../azure-sdk-for-js_tmp/generateInput.json ../azure-sdk-for-js_tmp/generateOutput.json
    • ️✔️@azure/arm-app [View full logs]  [Preview SDK Changes] Breaking Change Detected
      info	[Changelog] **Features**
      info	[Changelog]
      info	[Changelog]   - Added operation group Namespaces
      info	[Changelog]   - Added operation ContainerApps.beginUpdate
      info	[Changelog]   - Added operation ContainerApps.beginUpdateAndWait
      info	[Changelog]   - Added operation DaprComponents.listSecrets
      info	[Changelog]   - Added operation ManagedEnvironments.beginUpdate
      info	[Changelog]   - Added operation ManagedEnvironments.beginUpdateAndWait
      info	[Changelog]   - Added Interface CheckNameAvailabilityRequest
      info	[Changelog]   - Added Interface CheckNameAvailabilityResponse
      info	[Changelog]   - Added Interface DaprComponentsListSecretsOptionalParams
      info	[Changelog]   - Added Interface DaprSecretsCollection
      info	[Changelog]   - Added Interface NamespacesCheckNameAvailabilityOptionalParams
      info	[Changelog]   - Added Type Alias CheckNameAvailabilityReason
      info	[Changelog]   - Added Type Alias DaprComponentsListSecretsResponse
      info	[Changelog]   - Added Type Alias NamespacesCheckNameAvailabilityResponse
      info	[Changelog]   - Interface ContainerAppsRevisionsListRevisionsNextOptionalParams has a new optional parameter filter
      info	[Changelog]   - Interface ContainerAppsRevisionsListRevisionsOptionalParams has a new optional parameter filter
      info	[Changelog]   - Interface ContainerAppsUpdateOptionalParams has a new optional parameter resumeFrom
      info	[Changelog]   - Interface ContainerAppsUpdateOptionalParams has a new optional parameter updateIntervalInMs
      info	[Changelog]   - Interface GithubActionConfiguration has a new optional parameter contextPath
      info	[Changelog]   - Interface GithubActionConfiguration has a new optional parameter image
      info	[Changelog]   - Interface ManagedEnvironmentsUpdateOptionalParams has a new optional parameter resumeFrom
      info	[Changelog]   - Interface ManagedEnvironmentsUpdateOptionalParams has a new optional parameter updateIntervalInMs
      info	[Changelog]   - Interface TrafficWeight has a new optional parameter label
      info	[Changelog]   - Class ContainerAppsAPIClient has a new parameter namespaces
      info	[Changelog]   - Type Alias ManagedEnvironment has a new parameter daprAIConnectionString
      info	[Changelog]   - Type Alias ManagedEnvironment has a new parameter zoneRedundant
      info	[Changelog]   - Added Enum KnownCheckNameAvailabilityReason
      info	[Changelog]
      info	[Changelog] **Breaking Changes**
      info	[Changelog]
      info	[Changelog]   - Removed operation ContainerApps.update
      info	[Changelog]   - Removed operation ManagedEnvironments.update
      info	[Changelog]   - Interface GithubActionConfiguration no longer has parameter dockerfilePath
    ️⚠️ azure-resource-manager-schemas warning [Detail]
    • ⚠️Warning [Logs] Generate from f27a39e1cbc269c09a056b897c450ea6bfbea279. Schema Automation 14.0.0
      command	.sdkauto/initScript.sh ../azure-resource-manager-schemas_tmp/initInput.json ../azure-resource-manager-schemas_tmp/initOutput.json
      cmderr	[initScript.sh] WARN old lockfile
      cmderr	[initScript.sh] npm WARN old lockfile The package-lock.json file was created with an old version of npm,
      cmderr	[initScript.sh] npm WARN old lockfile so supplemental metadata must be fetched from the registry.
      cmderr	[initScript.sh] npm WARN old lockfile
      cmderr	[initScript.sh] npm WARN old lockfile This is a one-time fix-up, please be patient...
      cmderr	[initScript.sh] npm WARN old lockfile
      warn	File azure-resource-manager-schemas_tmp/initOutput.json not found to read
      command	.sdkauto/generateScript.sh ../azure-resource-manager-schemas_tmp/generateInput.json ../azure-resource-manager-schemas_tmp/generateOutput.json
    Posted by Swagger Pipeline | How to fix these errors?

    Comment on lines +430 to +431
    "Multiple",
    "Single"
    Copy link
    Contributor Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    in this case, the API returns these in TitleCase:

    {
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/stedev-ca-regtest/providers/Microsoft.App/containerApps/stedev-ca-regtest",
        "name": "stedev-ca-regtest",
        "type": "Microsoft.App/containerApps",
        "location": "West Europe",
        "systemData": {
            "createdBy": "XXX",
            "createdByType": "User",
            "createdAt": "2022-04-08T10:38:17.4255847",
            "lastModifiedBy": "XXX",
            "lastModifiedByType": "User",
            "lastModifiedAt": "2022-04-08T10:38:17.4255847"
        },
        "properties": {
            "provisioningState": "Succeeded",
            "managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/stedev-ca-regtest/providers/Microsoft.App/managedenvironments/stedev-ca-regtest",
            "outboundIpAddresses": [
                "20.31.240.94",
                "20.31.240.109",
                "20.31.240.114"
            ],
            "latestRevisionName": "stedev-ca-regtest--bkb6i1h",
            "latestRevisionFqdn": "stedev-ca-regtest--bkb6i1h.ashycoast-1ca0508f.westeurope.azurecontainerapps.io",
            "customDomainVerificationId": "XXXXXXX",
            "configuration": {
                "activeRevisionsMode": "Single",
                "ingress": {
                    "fqdn": "stedev-ca-regtest.ashycoast-1ca0508f.westeurope.azurecontainerapps.io",
                    "external": true,
                    "targetPort": 80,
                    "transport": "Auto",
                    "traffic": [
                        {
                            "weight": 100,
                            "latestRevision": true
                        }
                    ],
                    "allowInsecure": false
                },
                "registries": []
            },
            "template": {
                "containers": [
                    {
                        "image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest",
                        "name": "simple-hello-world-container",
                        "command": [],
                        "resources": {
                            "cpu": 0.25,
                            "memory": "0.5Gi"
                        }
                    }
                ],
                "scale": {
                    "maxReplicas": 10
                }
            }
        },
        "identity": {
            "type": "None"
        }
    }
    

    "multiple",
    "single"
    "Multiple",
    "Single"
    Copy link
    Contributor Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    in this case, the API returns these in TitleCase:

    {
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/stedev-ca-regtest/providers/Microsoft.App/containerApps/stedev-ca-regtest",
        "name": "stedev-ca-regtest",
        "type": "Microsoft.App/containerApps",
        "location": "West Europe",
        "systemData": {
            "createdBy": "XXX",
            "createdByType": "User",
            "createdAt": "2022-04-08T10:38:17.4255847",
            "lastModifiedBy": "XXX",
            "lastModifiedByType": "User",
            "lastModifiedAt": "2022-04-08T10:38:17.4255847"
        },
        "properties": {
            "provisioningState": "Succeeded",
            "managedEnvironmentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/stedev-ca-regtest/providers/Microsoft.App/managedenvironments/stedev-ca-regtest",
            "outboundIpAddresses": [
                "20.31.240.94",
                "20.31.240.109",
                "20.31.240.114"
            ],
            "latestRevisionName": "stedev-ca-regtest--bkb6i1h",
            "latestRevisionFqdn": "stedev-ca-regtest--bkb6i1h.ashycoast-1ca0508f.westeurope.azurecontainerapps.io",
            "customDomainVerificationId": "XXXXXXX",
            "configuration": {
                "activeRevisionsMode": "Single",
                "ingress": {
                    "fqdn": "stedev-ca-regtest.ashycoast-1ca0508f.westeurope.azurecontainerapps.io",
                    "external": true,
                    "targetPort": 80,
                    "transport": "Auto",
                    "traffic": [
                        {
                            "weight": 100,
                            "latestRevision": true
                        }
                    ],
                    "allowInsecure": false
                },
                "registries": []
            },
            "template": {
                "containers": [
                    {
                        "image": "mcr.microsoft.com/azuredocs/containerapps-helloworld:latest",
                        "name": "simple-hello-world-container",
                        "command": [],
                        "resources": {
                            "cpu": 0.25,
                            "memory": "0.5Gi"
                        }
                    }
                ],
                "scale": {
                    "maxReplicas": 10
                }
            }
        },
        "identity": {
            "type": "None"
        }
    }
    

    @openapi-workflow-bot
    Copy link

    Hi @tombuildsstuff, Your PR has some issues. Please fix the CI sequentially by following the order of Avocado, semantic validation, model validation, breaking change, lintDiff. If you have any questions, please post your questions in this channel https://aka.ms/swaggersupport.

    TaskHow to fixPriority
    AvocadoFix-AvocadoHigh
    Semantic validationFix-SemanticValidation-ErrorHigh
    Model validationFix-ModelValidation-ErrorHigh
    LintDiffFix-LintDiffhigh
    If you need further help, please feedback via swagger feedback.

    @openapi-workflow-bot
    Copy link

    Hi @tombuildsstuff, one or multiple breaking change(s) is detected in your PR. Please check out the breaking change(s), and provide business justification in the PR comment and @ PR assignee why you must have these change(s), and how external customer impact can be mitigated. Please ensure to follow breaking change policy to request breaking change review and approval before proceeding swagger PR review.
    Action: To initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
    If you want to know the production traffic statistic, please see ARM Traffic statistic.
    If you think it is false positive breaking change, please provide the reasons in the PR comment, report to Swagger Tooling Team via https://aka.ms/swaggerfeedback.

    @tombuildsstuff
    Copy link
    Contributor Author

    @JeffreyRichter a thought which came to mind when putting this together - have you considered adding a linter to ensure these method parameters are consistent? This seems like something which should be consistent across all usages of a given Resource?

    @JeffreyRichter
    Copy link
    Member

    @tombuildsstuff I don't have enough context on this PR. Do you want the linter tool to check casing for consistency or do you want consistent words (multiple/single) to be used across services? I think the former. Azure's guidelines are to use camel casing. I would have thought the linter already checks this. Perhaps @mikekistler can look into this.

    Copy link
    Member

    @mikekistler mikekistler left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I do not think you should be making any changes to the 2022-01-01-preview API. Since there is now a stable 2022-03-01 api version, the preview should be retired 90 days after the stable is available, so there is little value in making changes at this point.

    As for the changes to 2022-03-01, these will result in breaking changes to SDKs generated from this API definition, so could break customers. We need to avoid that unless absolutely necessary, and "inconsistency" does not meet that bar. Can you give an explanation for why this change is absolutely necessary?

    @tombuildsstuff
    Copy link
    Contributor Author

    @JeffreyRichter

    @tombuildsstuff I don't have enough context on this PR. Do you want the linter tool to check casing for consistency or do you want consistent words (multiple/single) to be used across services. ? I think the former. Azure's guidelines are to use camel casing. I would have thought the linter already checks this. Perhaps @mikekistler can look into this.

    I'm referring to the segments within the URI for user specified segments - if multiple resources are operating on the same URI those segments should be consistently named and cased, for example consider the following endpoints:

    /apps/{name}
    /apps/{appName}/keys/{name}
    /apps/{appName}/keys/{keyName}/rotate
    /apps/{applicationName}/listKeys

    Whilst these URIs are all valid in the Swagger, these inconsistencies lead to inconsistencies within the SDKs etc where these are used as method parameters. Instead if these were all consistent:

    /apps/{appName}
    /apps/{appName}/keys/{keyName}
    /apps/{appName}/keys/{keyName}/rotate
    /apps/{appName}/listKeys

    When the methods are generated for those, users have a consistent parameter name for a given value - which has UX benefits.

    As such I'm proposing a linter to ensure that where multiple Swagger Resources are operating on the same Resource, that the linter validates that the same parameter name (and casing, as you've mentioned these should be camelCase) is used across all of them. This would both make the UX consistent as defined above, and in our case (as we're using the Swagger Endpoints as Identifiers) remove the perpetual diff's we're seeing as in this instance.


    @mikekistler

    Per this comment/API response - the Swagger doesn't match the API definition, so this isn't correctly defined for both API's either way: #18660 (comment)

    I do not think you should be making any changes to the 2022-01-01-preview API.

    We can revert these if needed, that's fine - at this point in time only the Preview API is used in SDK's (AFAIK) - the Stable API doesn't appear to be rolled out either to Azure Public or the SDKs.

    Since there is now a stable 2022-03-01 api version, the preview should be retired 90 days after the stable is available, so there is little value in making changes at this point.

    Is this a new policy? There's many Azure API's which don't comply with this right now (SQL comes to mind, which due to using a composite API version still makes use of Preview functionality from 2015 iirc).

    As for the changes to 2022-03-01, these will result in breaking changes to SDKs generated from this API definition, so could break customers. We need to avoid that unless absolutely necessary, and "inconsistency" does not meet that bar. Can you give an explanation for why this change is absolutely necessary?

    There's two sets of changes included for each API version here:

    1. Fixing the values returned by the API for the constants
    2. Making each of the Resource URIs consistent (as explained in the first half of this comment)

    In the case of updating the values used for the constant - these are the actual values returned from the API, see this comment for an example response payload: XXX. If needs be we can revert this for now, but given this is what the API is returning (and that AFAIK the Stable API isn't rolled out to SDKs yet) - I don't believe this is a breaking change at this point in time (for the Stable API, at least)?

    For the other - as mentioned above we're making use of the Resource URI as an Identifier, which gets transformed into an object (in our case a Go struct), which we then pass into SDK methods rather than the individual components. This has the UX benefit of highlighting which resource will be modified by which operation, verses outputting the individual fields - and also reduces the amount of code needed (since you can build up the object one time, then create/update/retrieve/delete it as needed).

    As it stands right now these URIs being inconsistent means that we're seeing the following perpetual diff:

    Screenshot 2022-04-13 at 09 40 54

    This means that we're unable to support this resource within Terraform due to the perpetual changes - as such this PR fixes this consistency issue so that we can support this.

    As mentioned in the first half of this comment, I think there's UX benefits for end-users in having these consistent (since this'll lead to consistent parameter names in the SDKs etc) - so I'm wondering if there's potentially a missing linter for this too?

    Hope that helps clarify that - but please let us know if there's anything else you need to get this merged.

    @mikekistler
    Copy link
    Member

    On the specific topic of the linter rule, you are right that the names should be consistent and the linter can/should check for this. There is already an issue open to add this linter rule to the standard PR checks:

    https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1424461

    I added a comment there to hopefully raise the priority on this.

    And it is already implemented in the Azure API Style Guide linter rules -- here's a screen cap of the linter running in VSCode flagging this particular issue:

    image

    So in short, we agree on using consistent names!

    @mikekistler
    Copy link
    Member

    On the other points in this PR:

    • Changing the enum values to match the service. It is regrettable that this was not caught earlier but changing the API def to match the service is generally an approved breaking change.

    • We can revert these [the changes to the preview version] if needed. Yes please.

    • The 2022-03-01 stable is not rolled out. This isn't a great situation. Our PR automation assumes that a "stable" API that is merged to main in this repo is considered "released". But if this truly is the case, then this might make the path param name changes acceptable.

    • The preview should be retired 90 days after the stable is available. This is not a new policy but I'll grant you that it needs to be more clearly/broadly communicated and we know many services are not in compliance. We can't fix everything all at once ;-).

    tl;dr Keep the constant name changes and path param changes in the stable version only, come to the Breaking Changes office hours and plead your case that the API is not yet rolled out, and there's a fair chance this will be approved.

    @ruslany
    Copy link
    Contributor

    ruslany commented Apr 26, 2022

    @mikekistler , @tombuildsstuff - both 2022-03-01 and 2022-01-01-preview API versions have been rolled out in production, but the SDK clients haven't been released for any of those versions. Because of that I think it should be ok to merge this PR as it now matches the casing to what RP actually returns.

    Thanks @tombuildsstuff for creating this PR - it is unfortunate we haven't caught the casing of the enum values earlier.

    @mikekistler
    Copy link
    Member

    Since this PR is flagged as "BreakingChangeReviewRequired", please open a breaking change intake and come to the next Breaking Change office hours (Mondays 10-11 PT). I don't expect any issues with getting this approved but it should go through the process.

    @ruslany
    Copy link
    Contributor

    ruslany commented Apr 27, 2022

    @mikekistler - our team also create this PR to fix a few other case inconsistencies for the enum values. #18839

    @ruslany
    Copy link
    Contributor

    ruslany commented May 10, 2022

    @tombuildsstuff - can you please update the PR to be in sync with the latest state of the main branch?

    @tombuildsstuff
    Copy link
    Contributor Author

    Closing as per this comment since this has been merged via main - thanks both.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    CI-BreakingChange-JavaScript customer-reported Issues that are reported by GitHub users external to the Azure organization.
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    5 participants