-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Breaking Changes - Permission models #7517
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
Breaking Changes - Permission models #7517
Conversation
|
Can one of the admins verify this patch? |
|
Recordings that are failing are related to Rehydrate, not related to this PR |
c607fac to
075d8a1
Compare
c1bc9a6 to
bde842a
Compare
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.
This is an enum of service values and should not be changed.
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.
We should construct self._str in here, and keep it around (or use directly the input from from_string. Then we can return it in __str__. This should keep the "non-lossy" behaviour discussed in the review
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.
You don't need to do this because strings are iterable in Python:
for letter in permission_str:
read = (letter == 'r')
or you could just use the same logic that's in the constructor:
read = ('r' in permission)
write = ('w' in permission)
...
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.
We don't want to raise here, as we want to be able to support strings from future API versions that may have additional letters. Instead, we parse what we can, but keep the original string around and use that for the actual query.
def from_string(cls, permissions):
# parse string
parsed = cls(read=True, write=False, ....)
parsed._str = permissions # keeping original value
return parsed
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.
list is a reserved word that we should avoid redefining.
Maybe use names like: p_read, p_write, p_list...
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.
Same comments re AccountSasPermissions
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.
Should be read=True, delete=True
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.
There's quite a few of these - I wont comment all of them
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.
Cons of carelessly mass refactoring 😬
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.
Should be read=True, delete=True
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.
Should be read=True, delete=True
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.
We should update these so that we confirm that parsing does not fail for invalid characters, and that the invalid characters are still used in the query string.
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.
@zezha-msft @xiafu-msft @annatisch
Do you think there should be a limit on the length of the string that should be passed?
Something like
if len(permission) > 8:
raise ValueError("")
This would prevent someone to pass a really long string and slow down things. But on the other hand, adding the check might make it less forward-compatible, since if there are any new accepted letters that are added later, the length check might potentially break things.
One option as a middle ground is to limit the length to a larger number (like say, 100). Do you have any thoughts/ opinions?
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.
I feel maybe it's not necessary. We only check if an letter is in the passed str using if 'r' in permission, so the returned permission will never be longer than 8(for now)?
|
those Permissions are under _shared folder, so we are supporsed to rename all in azure-storage-queue and azure-storage-file. Do we plan to rename all Permissions in another pr or do we have any other plan? |
901ce30 to
1710da0
Compare
| p_process = 'p' in permission | ||
|
|
||
| parsed = cls(p_read, p_write, p_delete, p_list, p_add, p_create, p_update, p_process) | ||
| parsed._str = permission # pylint: disable = protected-access |
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.
A little bit confused about this.
If permission is 'abcd' I guess parsed._str should be 'dc' instead of 'abcd'?
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.
no, the parsed._str will be 'abcd' for non-lossy behavior. (We want to keep the original string.)
| p_delete = 'd' in permission | ||
| p_list = 'l' in permission | ||
| parsed = cls(p_read, p_write, p_delete, p_list) | ||
| parsed._str = permission # pylint: disable = protected-access |
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.
same question as the one in AccountSasPermission
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.
no, the parsed._str will be 'abcd' for non-lossy behavior. (We want to keep the original string.)
|
|
||
| class BlobPermissions(object): | ||
| """BlobPermissions class to be used with | ||
| @classmethod |
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.
I know we want to remove the enum like parameters. While some existing customers may feel more comfortable using that, can we just not write that in the api doc and leave these in the class. Those add or will give users more flexibility to use the api I feel like. And I feel like removing everything to make the code cleaner could cause a regression in user experience.
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.
i believe it was decided in the api review to remove enum like params. also, having both enum-params and string is creating a very un-readable object
|
|
* Update msrest and regenerate swagger. (#7308) * Update msrest and regenerate swagger. * override to get green CI. * Fix to have no content type when request body is empty (#7343) * Correct return types for list_secrets, _versions (#7268) * More useful exceptions for Key Vault errors (#7086) * Fix to have no content type when request body is empty * [Blob] Set tier and rehydrate (#7269) * [BlockBlob][Tier]Add BlobTier Support For CopyBlob/PutBlob/PutBlockList * [BlockBlob][Tier]Add Recordings for Standard BlobTier Support * [BlockBlob][Rehydrate]Enable Rehydrate Priority for Copy/SetTier * [BlockBlob][Rehydrate]Recordings for Rehydrate Priority for Copy/SetTier * [Blob] Echo client (#7350) * [EchoClientId]Verify Client Request ID in Response Same as in Request * [BlockBlob][Rehydrate]Fix Recordings * Refactor max_connections to max_concurrency (#7531) * Rename max_connections to max_concurrency * Other non breaking changes * comment changes * Use generated version as constant API version (#7547) * Re-recording from #7555 (#7585) * Storage batch API (#7387) * delete_blobs POC * Storage POC WIP * Storage POC async * Storage WIP * Storage clean-up * Storage options * Autorest remark * Use config option * SetBlobTier WIP * Working and tested delete_blobs + options * Set standard tier with tests * Adapt tests for playback mode * Move batch_send to common mixin * Python 2.7 compat * Fix snapshot bug * Re-record * Pass kwargs to batch * Clean x-ms-client-request-id from body if multipart response * remove duplicated comp=tier * Disable batch tests on Python 2.7 * pylint * Batch ChangeLog (#7593) * [Storage Blob] Regenerate Swagger (#7572) * Regenerate Swagger * small fix * adjusts literalincludes for msft docs (#7599) * Download sparse blob (#7555) * [PageBlob]Optimize Download Sparse File * Breaking Changes - Permission models (#7517) * Rename Permission related models to SasPermissions * Rewrite Permission Models * refactor tests * some tests * comment changes * remove length checks * QueuePermissions * File Permissions * blobs minor tweaks * minor fix * pylint fix * pylint * Fix batch docstrings (#7600) * Fix batch docstrings * pylint * [Rename]rename max_connections to max_concurrency (#7606) * small edits to lease client docs (#7550) * small edits to lease client docs * whitespace * Setup identity for unified pipelines. (#7578) * Setup keyvault for unified pipelines. (#7579) * Setup eventhubs for publishing via unified pipelines. (#7580) * Setup eventhubs for publishing via unified pipelines. * Fixed missing punctuation. * Setup cosmos for release via unified pipelines. (#7581) * bump CI * Manual network september (#7576) * generated files * adding 2019-07-01 * history and version * rerun tests * updated version * removed subscription id from tests * rerun tests again * replaced subscription id * [AutoPR] reservations/resource-manager (#7569) * [AutoPR reservations/resource-manager] [Hub Generated] Review request for Microsoft.Capacity to add version preview/2019-04-01 (#7251) * Generated from f19a2e5b7f384018b74b21b7b8b8782d95b456f9 fixed x-ms-enum value * Generated from 2f56008117d578bec6cc8b8c832926f45a0fe52e fixed catalog definition * Generated from cac978330e8c7b9583812a735cfeac97fb267056 reverted breaking operation id change * added version and history * [AutoPR] sql/resource-manager (#7535) * Generated from 9402dbf3fb3d5fffcb80f501b1fc857ff97ab723 (#7329) Fixing PR validation errors * regenerated * history and version * Setup app configuration with unified pipelines. (#7582) * [AutoPR] resources/resource-manager (#7549) * regenerated * updated history and version * updated date * Correct import_key parameter type (#7590) * add doc for tracing (#7616) * Add a from_blob_url method (#7567) * Add a from_blob_url method * Update tests * Recordings - common blob * Revert "Recordings - common blob" This reverts commit ad07f34c25f7662cbaed8b33ac05a1a6f6270dae. * comment changes * undo get_client changes * redo recordings * from_container_url * fix tests * tests fix for container url * pylint fix * Fix some docstring * docstrings * Doc imprvment for Storage (#7601) * Docstring improvement * File docstring * Queue docstrings * More doc fixes * More doc fixes * Revert "small edits to lease client docs (#7550)" (#7631) This reverts commit ed20b58. * kwarg-ify methods (#7611) * changeset1 * changeset-2 * changeset-3 * changeset-4 * minor fix * some final tweaks * pylint * minor fixes * max_concurrency * lease_id * pylint * fix * [Storage] Consolidate offset and range parameters (#7598) * Updated blob sync tests * Offset refactor APIS (#19) * rename to offset and length * fix * more changes * Updated blob sync tests * Temp block async tests * Fix upload page behaviour * Fix clear page behaviour * Update from_url offset behaviour * Update page ranges * Fix download blob behaviour * Some cleanup * Fixed page size * More test fixes * Some more fixes * Fixed page tests * Fixed encryption tests * Fix common test * append anf page blob async * some more test fixes * Fix live tests * more changes async * Fix sparse blob test * Last tests * update docstrings * pylint * Some Final tweaks (#7653) * Some final tweaks * comments * Fix live tests (#7665) * fix live tests * oops * few changes
* Update msrest and regenerate swagger. (Azure#7308) * Update msrest and regenerate swagger. * override to get green CI. * Fix to have no content type when request body is empty (Azure#7343) * Correct return types for list_secrets, _versions (Azure#7268) * More useful exceptions for Key Vault errors (Azure#7086) * Fix to have no content type when request body is empty * [Blob] Set tier and rehydrate (Azure#7269) * [BlockBlob][Tier]Add BlobTier Support For CopyBlob/PutBlob/PutBlockList * [BlockBlob][Tier]Add Recordings for Standard BlobTier Support * [BlockBlob][Rehydrate]Enable Rehydrate Priority for Copy/SetTier * [BlockBlob][Rehydrate]Recordings for Rehydrate Priority for Copy/SetTier * [Blob] Echo client (Azure#7350) * [EchoClientId]Verify Client Request ID in Response Same as in Request * [BlockBlob][Rehydrate]Fix Recordings * Refactor max_connections to max_concurrency (Azure#7531) * Rename max_connections to max_concurrency * Other non breaking changes * comment changes * Use generated version as constant API version (Azure#7547) * Re-recording from Azure#7555 (Azure#7585) * Storage batch API (Azure#7387) * delete_blobs POC * Storage POC WIP * Storage POC async * Storage WIP * Storage clean-up * Storage options * Autorest remark * Use config option * SetBlobTier WIP * Working and tested delete_blobs + options * Set standard tier with tests * Adapt tests for playback mode * Move batch_send to common mixin * Python 2.7 compat * Fix snapshot bug * Re-record * Pass kwargs to batch * Clean x-ms-client-request-id from body if multipart response * remove duplicated comp=tier * Disable batch tests on Python 2.7 * pylint * Batch ChangeLog (Azure#7593) * [Storage Blob] Regenerate Swagger (Azure#7572) * Regenerate Swagger * small fix * adjusts literalincludes for msft docs (Azure#7599) * Download sparse blob (Azure#7555) * [PageBlob]Optimize Download Sparse File * Breaking Changes - Permission models (Azure#7517) * Rename Permission related models to SasPermissions * Rewrite Permission Models * refactor tests * some tests * comment changes * remove length checks * QueuePermissions * File Permissions * blobs minor tweaks * minor fix * pylint fix * pylint * Fix batch docstrings (Azure#7600) * Fix batch docstrings * pylint * [Rename]rename max_connections to max_concurrency (Azure#7606) * small edits to lease client docs (Azure#7550) * small edits to lease client docs * whitespace * Setup identity for unified pipelines. (Azure#7578) * Setup keyvault for unified pipelines. (Azure#7579) * Setup eventhubs for publishing via unified pipelines. (Azure#7580) * Setup eventhubs for publishing via unified pipelines. * Fixed missing punctuation. * Setup cosmos for release via unified pipelines. (Azure#7581) * bump CI * Manual network september (Azure#7576) * generated files * adding 2019-07-01 * history and version * rerun tests * updated version * removed subscription id from tests * rerun tests again * replaced subscription id * [AutoPR] reservations/resource-manager (Azure#7569) * [AutoPR reservations/resource-manager] [Hub Generated] Review request for Microsoft.Capacity to add version preview/2019-04-01 (Azure#7251) * Generated from f19a2e5b7f384018b74b21b7b8b8782d95b456f9 fixed x-ms-enum value * Generated from 2f56008117d578bec6cc8b8c832926f45a0fe52e fixed catalog definition * Generated from cac978330e8c7b9583812a735cfeac97fb267056 reverted breaking operation id change * added version and history * [AutoPR] sql/resource-manager (Azure#7535) * Generated from 9402dbf3fb3d5fffcb80f501b1fc857ff97ab723 (Azure#7329) Fixing PR validation errors * regenerated * history and version * Setup app configuration with unified pipelines. (Azure#7582) * [AutoPR] resources/resource-manager (Azure#7549) * regenerated * updated history and version * updated date * Correct import_key parameter type (Azure#7590) * add doc for tracing (Azure#7616) * Add a from_blob_url method (Azure#7567) * Add a from_blob_url method * Update tests * Recordings - common blob * Revert "Recordings - common blob" This reverts commit ad07f34c25f7662cbaed8b33ac05a1a6f6270dae. * comment changes * undo get_client changes * redo recordings * from_container_url * fix tests * tests fix for container url * pylint fix * Fix some docstring * docstrings * Doc imprvment for Storage (Azure#7601) * Docstring improvement * File docstring * Queue docstrings * More doc fixes * More doc fixes * Revert "small edits to lease client docs (Azure#7550)" (Azure#7631) This reverts commit ed20b58. * kwarg-ify methods (Azure#7611) * changeset1 * changeset-2 * changeset-3 * changeset-4 * minor fix * some final tweaks * pylint * minor fixes * max_concurrency * lease_id * pylint * fix * [Storage] Consolidate offset and range parameters (Azure#7598) * Updated blob sync tests * Offset refactor APIS (Azure#19) * rename to offset and length * fix * more changes * Updated blob sync tests * Temp block async tests * Fix upload page behaviour * Fix clear page behaviour * Update from_url offset behaviour * Update page ranges * Fix download blob behaviour * Some cleanup * Fixed page size * More test fixes * Some more fixes * Fixed page tests * Fixed encryption tests * Fix common test * append anf page blob async * some more test fixes * Fix live tests * more changes async * Fix sparse blob test * Last tests * update docstrings * pylint * Some Final tweaks (Azure#7653) * Some final tweaks * comments * Fix live tests (Azure#7665) * fix live tests * oops * few changes
* Update msrest and regenerate swagger. (#7308) * Update msrest and regenerate swagger. * override to get green CI. * Fix to have no content type when request body is empty (#7343) * Correct return types for list_secrets, _versions (#7268) * More useful exceptions for Key Vault errors (#7086) * Fix to have no content type when request body is empty * [Blob] Set tier and rehydrate (#7269) * [BlockBlob][Tier]Add BlobTier Support For CopyBlob/PutBlob/PutBlockList * [BlockBlob][Tier]Add Recordings for Standard BlobTier Support * [BlockBlob][Rehydrate]Enable Rehydrate Priority for Copy/SetTier * [BlockBlob][Rehydrate]Recordings for Rehydrate Priority for Copy/SetTier * [Blob] Echo client (#7350) * [EchoClientId]Verify Client Request ID in Response Same as in Request * [BlockBlob][Rehydrate]Fix Recordings * Refactor max_connections to max_concurrency (#7531) * Rename max_connections to max_concurrency * Other non breaking changes * comment changes * Use generated version as constant API version (#7547) * Re-recording from #7555 (#7585) * Storage batch API (#7387) * delete_blobs POC * Storage POC WIP * Storage POC async * Storage WIP * Storage clean-up * Storage options * Autorest remark * Use config option * SetBlobTier WIP * Working and tested delete_blobs + options * Set standard tier with tests * Adapt tests for playback mode * Move batch_send to common mixin * Python 2.7 compat * Fix snapshot bug * Re-record * Pass kwargs to batch * Clean x-ms-client-request-id from body if multipart response * remove duplicated comp=tier * Disable batch tests on Python 2.7 * pylint * Batch ChangeLog (#7593) * [Storage Blob] Regenerate Swagger (#7572) * Regenerate Swagger * small fix * adjusts literalincludes for msft docs (#7599) * Download sparse blob (#7555) * [PageBlob]Optimize Download Sparse File * Breaking Changes - Permission models (#7517) * Rename Permission related models to SasPermissions * Rewrite Permission Models * refactor tests * some tests * comment changes * remove length checks * QueuePermissions * File Permissions * blobs minor tweaks * minor fix * pylint fix * pylint * Fix batch docstrings (#7600) * Fix batch docstrings * pylint * [Rename]rename max_connections to max_concurrency (#7606) * small edits to lease client docs (#7550) * small edits to lease client docs * whitespace * Setup identity for unified pipelines. (#7578) * Setup keyvault for unified pipelines. (#7579) * Setup eventhubs for publishing via unified pipelines. (#7580) * Setup eventhubs for publishing via unified pipelines. * Fixed missing punctuation. * Setup cosmos for release via unified pipelines. (#7581) * bump CI * Manual network september (#7576) * generated files * adding 2019-07-01 * history and version * rerun tests * updated version * removed subscription id from tests * rerun tests again * replaced subscription id * [AutoPR] reservations/resource-manager (#7569) * [AutoPR reservations/resource-manager] [Hub Generated] Review request for Microsoft.Capacity to add version preview/2019-04-01 (#7251) * Generated from f19a2e5b7f384018b74b21b7b8b8782d95b456f9 fixed x-ms-enum value * Generated from 2f56008117d578bec6cc8b8c832926f45a0fe52e fixed catalog definition * Generated from cac978330e8c7b9583812a735cfeac97fb267056 reverted breaking operation id change * added version and history * [AutoPR] sql/resource-manager (#7535) * Generated from 9402dbf3fb3d5fffcb80f501b1fc857ff97ab723 (#7329) Fixing PR validation errors * regenerated * history and version * Setup app configuration with unified pipelines. (#7582) * [AutoPR] resources/resource-manager (#7549) * regenerated * updated history and version * updated date * Correct import_key parameter type (#7590) * add doc for tracing (#7616) * Add a from_blob_url method (#7567) * Add a from_blob_url method * Update tests * Recordings - common blob * Revert "Recordings - common blob" This reverts commit ad07f34c25f7662cbaed8b33ac05a1a6f6270dae. * comment changes * undo get_client changes * redo recordings * from_container_url * fix tests * tests fix for container url * pylint fix * Fix some docstring * docstrings * Doc imprvment for Storage (#7601) * Docstring improvement * File docstring * Queue docstrings * More doc fixes * More doc fixes * Revert "small edits to lease client docs (#7550)" (#7631) This reverts commit ed20b58. * kwarg-ify methods (#7611) * changeset1 * changeset-2 * changeset-3 * changeset-4 * minor fix * some final tweaks * pylint * minor fixes * max_concurrency * lease_id * pylint * fix * [Storage] Consolidate offset and range parameters (#7598) * Updated blob sync tests * Offset refactor APIS (#19) * rename to offset and length * fix * more changes * Updated blob sync tests * Temp block async tests * Fix upload page behaviour * Fix clear page behaviour * Update from_url offset behaviour * Update page ranges * Fix download blob behaviour * Some cleanup * Fixed page size * More test fixes * Some more fixes * Fixed page tests * Fixed encryption tests * Fix common test * append anf page blob async * some more test fixes * Fix live tests * more changes async * Fix sparse blob test * Last tests * update docstrings * pylint * Some Final tweaks (#7653) * Some final tweaks * comments * Fix live tests (#7665) * fix live tests * oops * few changes
Resolves #7508
Resolves #7510
Following changes are made to AccountPermissions, ContainerPermissions and BlobPermissions
***Permissionsto***SasPermissions__add__and or` methodsfrom_string