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

Update WebApps swagger: correct host key create/update requests #17653

Closed
wants to merge 3 commits into from

Conversation

allenhumphreys
Copy link

@allenhumphreys allenhumphreys commented Feb 3, 2022

fixes #14557

This seems to be incorrect in every single WebApps API version. I have no idea if changes are accepted from the public. I'd like to get this fixed so the Go SDK can be used to create/update host keys.

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 in s360
    • 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 langauge 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, @allenhumphreys 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. vsswagger@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.

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Feb 3, 2022

    Swagger Validation Report

    ️❌BreakingChange: 16 Errors, 0 Warnings failed [Detail]
    Rule Message
    1033 - RemovedProperty The new version is missing a property found in the old version. Was 'value' renamed or removed?
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L23262:7
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L23259:7
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L23262:7
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L23259:7
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L3936:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L3936:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L3956:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L3956:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L3950:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L3950:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L4280:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L4280:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L4300:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L4300:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L4294:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L4294:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L12753:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L12753:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L12773:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L12773:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L12767:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L12767:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L13146:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L13146:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L13166:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L13166:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L13160:13
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L13160:13
    1034 - AddedRequiredProperty The new version has new required property 'properties' that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L23256:5
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L23256:5
    1041 - AddedPropertyInResponse The new version has a new property 'properties' in response that was not found in the old version.
    New: Microsoft.Web/stable/2021-03-01/WebApps.json#L23262:7
    Old: Microsoft.Web/stable/2021-03-01/WebApps.json#L23259:7
    ️⚠️LintDiff: 0 Warnings warning [Detail]
    The following errors/warnings exist before current PR submission:

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

    Rule Message
    R4019 - GetCollectionResponseSchema The response in the GET collection operation 'AppServicePlans_ListVnets' does not match the response definition in the individual GET operation 'AppServicePlans_GetVnetFromServerFarm' .
    Location: Microsoft.Web/stable/2021-03-01/AppServicePlans.json#L884
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'DeletedWebApps' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/DeletedWebApps.json#L106
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Diagnostics' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Diagnostics.json#L281
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Diagnostics' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Diagnostics.json#L334
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Diagnostics' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Diagnostics.json#L954
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Diagnostics' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Diagnostics.json#L1014
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Recommendations' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Recommendations.json#L102
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Recommendations' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Recommendations.json#L405
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'Recommendations' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/Recommendations.json#L712
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L118
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L161
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L206
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L267
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L313
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L375
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L432
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L488
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L558
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L608
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L660
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L718
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L781
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L844
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L901
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L955
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L1009
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L1066
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L1125
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L1206
    ⚠️ R1001 - OperationIdNounVerb Per the Noun_Verb convention for Operation Ids, the noun 'StaticSites' should not appear after the underscore. Note: If you have already shipped an SDK on top of this spec, fixing this warning may introduce a breaking change.
    Location: Microsoft.Web/stable/2021-03-01/StaticSites.json#L1267
    ️️✔️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 pending [Detail]
    ️❌PrettierCheck: 1 Errors, 0 Warnings failed [Detail]
    Rule Message
    HowToFix Code style issues found
    path: Microsoft.Web/stable/2021-03-01/WebApps.json
    ️️✔️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?

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

    ghost commented Feb 3, 2022

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

    @openapi-pipeline-app
    Copy link

    openapi-pipeline-app bot commented Feb 3, 2022

    Swagger Generation Artifacts

    ️️✔️ApiDocPreview succeeded [Detail] [Expand]

    Only 0 items are rendered, please refer to log for more details.

    ️❌SDK Breaking Change Tracking failed [Detail]

    Only 0 items are rendered, please refer to log for more details.

    ️️✔️ azure-sdk-for-net succeeded [Detail] [Expand]

    Only 0 items are rendered, please refer to log for more details.

    ️⚠️ azure-sdk-for-python-track2 warning [Detail]

    Only 0 items are rendered, please refer to log for more details.

    ️⚠️ azure-sdk-for-java warning [Detail]

    Only 0 items are rendered, please refer to log for more details.

    ️️✔️ azure-sdk-for-go succeeded [Detail] [Expand]

    Only 0 items are rendered, please refer to log for more details.

    ️️✔️ azure-sdk-for-go-track2 succeeded [Detail] [Expand]

    Only 0 items are rendered, please refer to log for more details.

    ️⚠️ azure-sdk-for-js warning [Detail]

    Only 0 items are rendered, please refer to log for more details.

    ️🔄 azure-resource-manager-schemas inProgress [Detail]
    Posted by Swagger Pipeline | How to fix these errors?

    @openapi-workflow-bot
    Copy link

    Hi @allenhumphreys, 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 @allenhumphreys, 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.

    @openapi-workflow-bot
    Copy link

    NewApiVersionRequired reason:

    A service’s API is a contract with customers and is represented by using the api-version query parameter. Changes such as adding an optional property to a request/response or introducing a new operation is a change to the service’s contract and therefore requires a new api-version value. This is critically important for documentation, client libraries, and customer support.

    EXAMPLE: if a customer calls a service in the public cloud using api-version=2020-07-27, the new property or operation may exist but if they call the service in a government cloud, air-gapped cloud, or Azure Stack Hub cloud using the same api-version, the property or operation may not exist. Because there is no clear relationship between the service api-version and the new property/operation, customers can’t trust the documentation and Azure customer have difficulty helping customers diagnose issues. In addition, each client library version documents the service version it supports. When an optional property or new operation is added to a service and its Swagger, new client libraries must be produced to expose this functionality to customers. Without updating the api-version, it is unclear to customers which version of a client library supports these new features.

    @allenhumphreys
    Copy link
    Author

    I know this is popping up as a breaking change, but it's really just aligning the swagger with the implementation. The generated methods, at least in the Go SDK, are unusable in their current form. The API throws a 400 if the properties field is missing. While name can remain at the top level, the value parameter is only accepted in the properties field when one wants to set the value of the secret.

    @ghost
    Copy link

    ghost commented Feb 20, 2022

    Hi, @allenhumphreys. Your PR has no update for 14 days and it is marked as stale PR. If no further update for over 14 days, the bot will close the PR. If you want to refresh the PR, please remove no-recent-activity label.

    @ghost ghost added the no-recent-activity label Feb 20, 2022
    @allenhumphreys
    Copy link
    Author

    @msftbot i cannot remove labels

    @ghost ghost removed the no-recent-activity label Feb 20, 2022
    @allenhumphreys
    Copy link
    Author

    It’s unfortunate no one looks at my issues

    @ghost ghost removed the no-recent-activity label Apr 3, 2022
    @ghost
    Copy link

    ghost commented Apr 24, 2022

    Hi, @allenhumphreys. Your PR has no update for 14 days and it is marked as stale PR. If no further update for over 14 days, the bot will close the PR. If you want to refresh the PR, please remove no-recent-activity label.

    @ghost ghost added the no-recent-activity label Apr 24, 2022
    @allenhumphreys
    Copy link
    Author

    Someday, somewhere, someone might look at this

    @ghost ghost removed the no-recent-activity label Apr 24, 2022
    @ghost
    Copy link

    ghost commented May 15, 2022

    Hi, @allenhumphreys. Your PR has no update for 14 days and it is marked as stale PR. If no further update for over 14 days, the bot will close the PR. If you want to refresh the PR, please remove no-recent-activity label.

    @ghost ghost added the no-recent-activity label May 15, 2022
    @allenhumphreys
    Copy link
    Author

    Hi

    @ghost ghost removed the no-recent-activity label May 15, 2022
    @alexwieseawe
    Copy link

    @allenhumphreys wow - hoping we can get this merged, one day.

    @William-LP
    Copy link

    @naveedaz : Are changes from public accepted by msft ? Any chance that PR will be reviewed and merged some day?

    @alexwieseawe
    Copy link

    @ArcturusZhang could you please take a look at this one? It's not a breaking change it's actually a fixing change

    @weidongxu-microsoft weidongxu-microsoft mentioned this pull request Jun 16, 2022
    25 tasks
    @naveedaz
    Copy link
    Contributor

    @mathewc Can you please validate this change?

    @mathewc
    Copy link
    Member

    mathewc commented Jun 17, 2022

    @mathewc Can you please validate this change?

    These changes don't look right. They end up creating the following definition for KeyInfo:

    "KeyInfo": {
          "description": "Function key info.",
          "type": "object",
          "required": [
            "properties"
           ],
          "properties": {
            "name": {
              "description": "Key name",
              "type": "string"
            },
            "properties": {
              "description": "Key properties",
              "type": "object",
              "properties": {
                "value": {
                  "description": "Key value",
                  "type": "string"
                }
              }
            }
          }
        }

    Currently you can PUT the following payload format to create a key, e.g. using ArmClient to test:

    PUT /subscriptions/mysub/resourceGroups/myrg/providers/Microsoft.Web/sites/mysite/host/default/systemkeys/testkey?api-version=2021-03-01

    {
      "properties": {
        "name":"testkey",
        "value":"abc123"
      }
    }

    So the APIs take a key payload with properties for name and value. And that's what the existing KeyInfo definition declares here:

    "KeyInfo": {
          "description": "Function key info.",
          "type": "object",
          "properties": {
            "name": {
              "description": "Key name",
              "type": "string"
            },
            "value": {
              "description": "Key value",
              "type": "string"
            }
          }
        }

    @allenhumphreys
    Copy link
    Author

    @mathewc Thanks for looking at this. I think there might be some confusion we'll need to clear up and get to the bottom of.

    The existing KeyInfo declaration is meant to be the request body of PUT /subscriptions/mysub/resourceGroups/myrg/providers/Microsoft.Web/sites/mysite/host/default/systemkeys/testkey?api-version=2021-03-01.

    However, the existing OpenAPI definition describes a model that looks like this:

    {
        "name": "<keyname>", 
        "value":"<keyvalue>"
    }
    "KeyInfo": {
          "description": "Function key info.",
          "type": "object",
          "properties": { <~~~~ The properties of the object KeyInfo
            "name": {                <~~~ are `name`
              "description": "Key name",
              "type": "string"
            },
            "value": {                 <~~~ and `value`
              "description": "Key value",
              "type": "string"
            }
          }
        }
    

    The above declaration says "An object, KeyInfo, has 2 properties, "name" and "value".

    The API actually expects "Any object, KeyInfo, with 1 property, "properties"; where the property "properties" has 2 properties, "name" and "value".

    "KeyInfo": {
           "description": "Function key info.",
           "type": "object",
           "required": [
             "properties"
            ],
           "properties": {                                    <~~~~ The properties of the object KeyInfo
             "name": {                                                   <~~~~~ are `name`
               "description": "Key name",
               "type": "string"
             },
             "properties": {.                                 <~~~~~ and an object property `properties` 
               "description": "Key properties",
               "type": "object",
               "properties": {
                 "value": {                                             <~~~~ with a property `value`
                   "description": "Key value",
                   "type": "string"
                 }
               }
             }
    

    This is the change I made. And I think perhaps the confusion came in with the OpenAPI schema using "properties" in the way it does.

    Ultimately, the GoSDK generates a body like, which matches the existing spec for KeyInfo:

    {
        "name": "<keyname>", 
        "value":"<keyvalue>"
    }

    which is wrong and leads to the generated Go SDK being unable to call this API.

    Additional info from my investigation:

    Using the Azure CLI, I can make this API call using az functionapp keys set --subscription <sub> --name "app-name" --resource-group <rg> --key-type functionKeys --key-name TestTest --key-value "Value" --debug and I can see the body looks like this:

    {"properties": {"name": "TestTest", "value": "Value"}}
    

    Now, the Open API spec I've suggested doesn't match the body generated by the Azure CLI. However, when formulating my change I actually probed the API a little. I found that properties is required, and name can appear in either the top level object or in the properties property. As I don't have access to the implementation, I can't really authoritatively say what is absolutely right. I can say for sure that the existing OpenAPI definition for KeyInfo is wrong.

    Hopefully this information helps!

    @mathewc
    Copy link
    Member

    mathewc commented Jun 20, 2022

    Thanks for the clarification @allenhumphreys. Yes, I see what you mean now. The request body for these APIs should indeed follow an ARM resource model schema, with a "properties" member containing the key name/value properties. The problem I see with making a direct change to the spec as in this PR is that it doesn't change it at the source resource definition (our internal codebase from which we generate this swagger). So next time we auto-gen swagger and update in this repo, your changes would get overridden.

    Instead, we should make the required change at the the source, so the correct swagger is generated by our tools. We have an annotation in our source for model types [AzureProxyOnlyResource] that is applied to simple types like this (but not KeyInfo). An example of a type with this applied is HostNameBinding, which ends up being generated with the required nested properties structure. I think KeyInfo needs to follow the same approach.

    @naveedaz I've created a tracking item on the App Service side (Work Item 14770455) to make changes required on the service side so the swagger we generate is correct.

    @allenhumphreys
    Copy link
    Author

    @mathewc That makes perfect sense! I wasn't sure which direction the generation went, so I opened a PR to start a conversation hoping to get it fixed. Is there anything else I should do to help get it prioritized or picked up internally?

    @jbizcloud
    Copy link

    +1 can you take a look?

    @mathewc
    Copy link
    Member

    mathewc commented Jun 23, 2022

    @allenhumphreys - no there isn't anything else you need to do. You opened the issue and created a draft PR (thanks!) which helped everyone understand the issue. What remains is for our control plane team to fix the issue on our side, and the swagger updates would then be part of our next scheduled update.

    Likely this PR should be closed at this point, and discussion going forward can happen on #14557 which links here and retains all the context.

    @allenhumphreys
    Copy link
    Author

    Thank you so much @mathewc ! I look forward to having this fixed and being able to add some key management to terraform azurerm provider in the future.!

    @mathewc
    Copy link
    Member

    mathewc commented Jun 30, 2022

    PR for swagger update is in progress on our side in our internal service repo. Will update here when progress is made.

    @allenhumphreys
    Copy link
    Author

    I'm very thankful for that status update @MatthewC ❤️

    @JDECOMBE
    Copy link

    Hi, it seems that the changes made here haven't been propagated to the .NET SDK which still creates a body { "name": "<secret-name>", "value": "<secret-value>"}.
    Do I need to do anything to get it fixed (PR, specific issue, etc.) ?

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    CI-BreakingChange-Go-V2 CI-BreakingChange-JavaScript CI-FixRequiredOnFailure 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.

    BadRequest when Create Or Update Host Secret (aka Api Key) for Function App
    8 participants