-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Add API Management Version Sets #2483
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
Merged
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
6b255d0
Added ApiVersionSets
darrelmiller 84cbee3
Merge remote-tracking branch 'upstream/master' into dm/versionsets
darrelmiller 5fec97d
Fixes based on CR
darrelmiller 74fbf1f
Merged with master
darrelmiller 0aed758
Refactored JSON Schemas for payloads
darrelmiller cc6f70e
Merge remote-tracking branch 'upstream/master' into dm/versionsets
darrelmiller 8578f92
fixed names and reference
darrelmiller e1f8c06
Fixed reference to schema for ApiVersionSets
darrelmiller 0c42317
Fixed ApiVersionSetCreate example
darrelmiller File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that changing the type of the property
apiVersionSetin this model is breaking change.If we take the diff of
ApiVersionSetContract(old type) andApiVersionSetContractProperties(new type), it looks like the read-only propertiesid,nameandtypewon't be available for consumer any more.Changing the type is a SDK breaking change. This requires major SDK version upgrade.
Removing properties in the response of a stable api call (without bumping api version) is service side breaking change, which requires ARM approval.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anuchandy This isn't breaking a change to the current API, this is fixing an incorrect description. Customer's who attempt to update those fields in the GA release will not be able to.
In the preview release of this API, the customers could create ApiVersionSet directly when creating the API, but it was decided that the ARM guidelines prevented this from being allowed. Therefore we had to remove this functionality for our customers in our GA release. The change to make the fields read-only was missed when doing the update. Our customers are now waiting for the documentation to be updated so they can use the new ARM compliant way of creating these things in a two step process.
If you could unblock this PR so that we can get that documentation to the customer, it would be most appreciated.
/cc @ravbhatnagar
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@darrelmiller -
One question, is it the case that service never used to return
id,nameandtypehence swagger was wrong and we are fixing that issue in this PR?Let me also explain the reason I am thinking this as SDK breaking change. All below SDK issues can be addressed by bumping up SDK version.
The
ApiRevisionInfoContractin the current SDKThe
ApiRevisionInfoContractin the new SDK (based on this PR)application code using current sdk
application code using new sdk (based on this PR) [broken]
In this prespective this is a SDK breaking change. When an existing application based on current SDK switch to new SDK (generated from this PR), if their application is using
ApiRevisionInfoContract.apiVersionSetproperty then they need to change the type.This issue can be addressed by bumping up the major version of the SDK.
As i mentioned earlier, the read-only properties
id,nameandtypewon't be available when customer accessApiRevisionInfoContract.apiVersionSet, right?application code using current sdk
application code using new sdk (based on this PR) [broken]
again if we bump up SDK version then this is fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also we need ARM review because there is a new swagger
apimversionsets.json, this is the first PR adding this swagger. So as per the established process, it is required to have this sign-ed off by ARM in this repo. I'm sending an email thread requesting ARM to take a look.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anuchandy - I think what @darrelmiller is saying is that at GA, customer could not update/assign the value of id, name, type since they were read only. Swagger didnt reflect it. And so now, swagger is updating the description correctly to reflect the service state. If true, this is not a breaking change, since it would have never worked for the customer even if he tried to update.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks @ravbhatnagar got it. Still when customer compiles existing application (that was based current SDK) with the new sdk (generated from this PR), they will see compiler error. That should be fine given it's a side effect of correcting the swagger to reflect actual service state.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anuchandy The current SDK is from March 2017 and is a preview https://www.nuget.org/packages/Microsoft.Azure.Management.ApiManagement/3.4.0-preview
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@darrelmiller thanks for letting me know. Based on the process we established, i'll add
potential SDK breaking changestag for future reference.Once we conclude the below discussion with ARM team, will merge this PR.