)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements: huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_557c0872","line":18,"updated":"2015-07-12 21:27:12.000000000","message":"This link doesn\u0027t work.  Should be\n\nImplements blueprint huawei-driver-support-dedup-compression","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements: huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_2027a8b7","line":18,"in_reply_to":"9a41bdd9_557c0872","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"8096cfbe1a09ab3d484ed24cb197295f536cbfe0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei manila driver support dedup and compression"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manila \"share types\" may contain qualified extra-specs -"},{"line_number":10,"context_line":"extra-specs that have significance only for the backend driver"},{"line_number":11,"context_line":"and which are reported back to the scheduler."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_e4662b50","line":10,"updated":"2015-07-15 17:07:08.000000000","message":"This would be true if you used scoped extra-specs like \"huawei:enablededup\", but you are using \"capabilities:\" so they have significance to the CapabilityFilter also.  Please clarify.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"8096cfbe1a09ab3d484ed24cb197295f536cbfe0","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:enablededup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements blueprint huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_9f43e612","line":15,"updated":"2015-07-15 17:07:08.000000000","message":"To be more consistent with some common capabilities, I\u0027d suggest: dedup_enabled and compression_enabled.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"0c10e4820ed07c9342723c8e3a0eb4c3560dafb0","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:enablededup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements blueprint huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_05668d29","line":15,"in_reply_to":"9a41bdd9_65ec39bb","updated":"2015-07-16 08:21:21.000000000","message":"sorry, s/capabilite/capability","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"0e2a1a1f5792adcb9a430163b140f5bd8b321746","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:enablededup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements blueprint huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_258883c4","line":15,"in_reply_to":"9a41bdd9_9f43e612","updated":"2015-07-15 21:45:55.000000000","message":"+1\n\nI\u0027d suggest using the NetApp driver (see lib_base.py) as a reference for these.  The qualified extra specs for these are netapp:dedup and netapp:compression.  What\u0027s wrong with huawei:dedup and huawei:compression?","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ee453b2ff6af980a0a65ab46f9b248a0e11fe227","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:enablededup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements blueprint huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_65ec39bb","line":15,"in_reply_to":"9a41bdd9_9f43e612","updated":"2015-07-16 08:17:53.000000000","message":"We all have the same capabilite, How about we consisitent the capabilite of dedup and compression, use capabilities:dedup\u003d\u0027\u003cis\u003e true\u0027. The CapabilityFilter can choose backend in netapp, huawei, or the vendor of support this capabilities. It can truly use all vendors array as a large storage pool.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"8096cfbe1a09ab3d484ed24cb197295f536cbfe0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:enablededup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:enablecompression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I8942ade76e04de7670306434d0479ad334940cc8"},{"line_number":18,"context_line":"Implements blueprint huawei-driver-support-dedup-compression"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a41bdd9_7f5702ca","line":16,"updated":"2015-07-15 17:07:08.000000000","message":"Also to be clear. I think there is a difference between _enabled and _support. So here you are not claiming the possibility of dedup but stating that it is in fact enabled.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"66ab37075693f0ab0eca7bdea13d8242aede2a19","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhongjun \u003cjun.zhongjun@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-30 11:46:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei manila driver support dedup, compression, thin and thick"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manila \"share types\" may contain qualified extra-specs -"},{"line_number":10,"context_line":"extra-specs that have significance only for the backend driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_a66307dd","line":7,"updated":"2015-07-30 03:59:12.000000000","message":"The first line should be limited to 50 characters. https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"bf63c386f35b3af03e13ee848f5948874e826b68"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d345c7d350098446f5e468d7b876f5068ccfffec","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhongjun \u003cjun.zhongjun@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-30 11:46:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei manila driver support dedup, compression, thin and thick"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manila \"share types\" may contain qualified extra-specs -"},{"line_number":10,"context_line":"extra-specs that have significance only for the backend driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a50d1a3_6ea87121","line":7,"in_reply_to":"3a50d1a3_a66307dd","updated":"2015-07-30 08:34:58.000000000","message":"Done","commit_id":"bf63c386f35b3af03e13ee848f5948874e826b68"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":10,"context_line":"extra-specs that have significance for the backend driver"},{"line_number":11,"context_line":"and the CapabilityFilter."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:huawei_dedup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:huawei_compression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":"  * capabilities:thin_provisioning_support\u003d\u0027\u003cis\u003e True\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"1a4dcd0f_e88e3acf","line":13,"updated":"2015-08-05 18:15:36.000000000","message":"This commit makes the Huawei driver report the following boolean capabilities:\n\n\t\t\t* capabilities:huawei_dedup\n\t\t\t* capabilities:huawei_compression\n\t\t\t* capabilities:thin_provisioning_support\n\t\t\t* capabilities:thick_provisioning_support\n\nThe scheduler will choose a host that supports the needed capability when the CapabilityFilter is used and a share type uses one or more of the following extra-specs:","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":10,"context_line":"extra-specs that have significance for the backend driver"},{"line_number":11,"context_line":"and the CapabilityFilter."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This commit adds the following boolean qualified extra-specs:"},{"line_number":14,"context_line":"  * capabilities:huawei_dedup\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":15,"context_line":"  * capabilities:huawei_compression\u003d\u0027\u003cis\u003e True\u0027"},{"line_number":16,"context_line":"  * capabilities:thin_provisioning_support\u003d\u0027\u003cis\u003e True\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"1a4dcd0f_9ee6b513","line":13,"in_reply_to":"1a4dcd0f_e88e3acf","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"}],"manila/share/drivers/huawei/base.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @abc.abstractmethod"},{"line_number":55,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":56,"context_line":"        \"\"\"Extends size of existing share.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4b7b9f28","side":"PARENT","line":55,"updated":"2015-07-08 10:19:06.000000000","message":"Why it is removed? Goal of commit is completely different.","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @abc.abstractmethod"},{"line_number":55,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":56,"context_line":"        \"\"\"Extends size of existing share.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_56c87f55","side":"PARENT","line":55,"in_reply_to":"9a41bdd9_d5901898","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @abc.abstractmethod"},{"line_number":55,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":56,"context_line":"        \"\"\"Extends size of existing share.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d5901898","side":"PARENT","line":55,"in_reply_to":"ba3cc151_4b7b9f28","updated":"2015-07-12 21:27:12.000000000","message":"+1. Rebase problem?","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        \"\"\"Deny access to the share.\"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @abc.abstractmethod"},{"line_number":55,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":56,"context_line":"        \"\"\"Extends size of existing share.\"\"\""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f6c43341","side":"PARENT","line":55,"in_reply_to":"ba3cc151_4b7b9f28","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"}],"manila/share/drivers/huawei/constants.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 720"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"OPTS_CAPABILITE \u003d {"},{"line_number":26,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":27,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":28,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_cb956f33","line":25,"updated":"2015-07-08 10:19:06.000000000","message":"CAPABILITE?","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 720"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"OPTS_CAPABILITE \u003d {"},{"line_number":26,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":27,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":28,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_4052f168","line":25,"in_reply_to":"9a41bdd9_15de806d","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 720"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"OPTS_CAPABILITE \u003d {"},{"line_number":26,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":27,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":28,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_805f9971","line":25,"in_reply_to":"ba3cc151_cb956f33","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 720"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"OPTS_CAPABILITE \u003d {"},{"line_number":26,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":27,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":28,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_15de806d","line":25,"in_reply_to":"ba3cc151_cb956f33","updated":"2015-07-12 21:27:12.000000000","message":"Seems to be wrong spelling.\n\nOPTS_CAPABILITIES","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3375ed6f950c4620fa3ca66942354f85374dbf4f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"ERROR_CONNECT_TO_SERVER \u003d -403"},{"line_number":31,"context_line":"ERROR_UNAUTHORIZED_TO_SERVER \u003d -401"},{"line_number":32,"context_line":"OPTS_CAPABILITIES \u003d {"},{"line_number":33,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":34,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":35,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_70a7a3a7","line":33,"updated":"2015-07-31 14:49:32.000000000","message":"huawei_dedup?","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2812f4c73908126f72ab990d0d392a3738b56b9a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"ERROR_CONNECT_TO_SERVER \u003d -403"},{"line_number":31,"context_line":"ERROR_UNAUTHORIZED_TO_SERVER \u003d -401"},{"line_number":32,"context_line":"OPTS_CAPABILITIES \u003d {"},{"line_number":33,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":34,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":35,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_c1c1d6e5","line":33,"in_reply_to":"3a50d1a3_70a7a3a7","updated":"2015-08-03 07:49:04.000000000","message":"Done","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"3375ed6f950c4620fa3ca66942354f85374dbf4f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"ERROR_UNAUTHORIZED_TO_SERVER \u003d -401"},{"line_number":32,"context_line":"OPTS_CAPABILITIES \u003d {"},{"line_number":33,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":34,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":35,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_d0aeb780","line":34,"updated":"2015-07-31 14:49:32.000000000","message":"huawei_compression?","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2812f4c73908126f72ab990d0d392a3738b56b9a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"ERROR_UNAUTHORIZED_TO_SERVER \u003d -401"},{"line_number":32,"context_line":"OPTS_CAPABILITIES \u003d {"},{"line_number":33,"context_line":"    \u0027enablededup\u0027: False,"},{"line_number":34,"context_line":"    \u0027enablecompression\u0027: False,"},{"line_number":35,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_61b24298","line":34,"in_reply_to":"3a50d1a3_d0aeb780","updated":"2015-08-03 07:49:04.000000000","message":"Done","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"7e3e1958c148c492208d68cc595f01c3f0cd80ee","unresolved":false,"context_lines":[{"line_number":33,"context_line":"OPTS_CAPABILITIES \u003d {"},{"line_number":34,"context_line":"    \u0027dedupe\u0027: False,"},{"line_number":35,"context_line":"    \u0027compression\u0027: False,"},{"line_number":36,"context_line":"    \u0027thin_provisioning\u0027: False,"},{"line_number":37,"context_line":"    \u0027thick_provisioning\u0027: False,"},{"line_number":38,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_73b4b0f1","line":36,"updated":"2015-08-18 09:34:07.000000000","message":"According to designed doc with common capabilities, we are going to have only one of these - \"thin_provisioning\". So, please review doc with common capabilities - [1].\n\n[1] https://review.openstack.org/#/c/209781/","commit_id":"7ff92566d379b85830751ae8c5746f11130ecce0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2baef57c7a3dfb1618939d20cf341a265fcf1aca","unresolved":false,"context_lines":[{"line_number":33,"context_line":"OPTS_CAPABILITIES \u003d {"},{"line_number":34,"context_line":"    \u0027dedupe\u0027: False,"},{"line_number":35,"context_line":"    \u0027compression\u0027: False,"},{"line_number":36,"context_line":"    \u0027thin_provisioning\u0027: False,"},{"line_number":37,"context_line":"    \u0027thick_provisioning\u0027: False,"},{"line_number":38,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":27,"id":"fa1b9901_10c51f8d","line":36,"in_reply_to":"fa1b9901_73b4b0f1","updated":"2015-08-18 12:57:41.000000000","message":"Thank you for your provide good method, have already modified, please recheck patch 28.","commit_id":"7ff92566d379b85830751ae8c5746f11130ecce0"}],"manila/share/drivers/huawei/huawei_nas.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        location \u003d self.plugin.create_share(share, share_server)"},{"line_number":99,"context_line":"        return location"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":102,"context_line":"        LOG.debug(\"Extend a share.\")"},{"line_number":103,"context_line":"        self.plugin.extend_share(share, new_size, share_server)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4ba2bf9a","side":"PARENT","line":101,"updated":"2015-07-08 10:19:06.000000000","message":"And here removed? I guess it was removed by mistake?","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        location \u003d self.plugin.create_share(share, share_server)"},{"line_number":99,"context_line":"        return location"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":102,"context_line":"        LOG.debug(\"Extend a share.\")"},{"line_number":103,"context_line":"        self.plugin.extend_share(share, new_size, share_server)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a0c73d11","side":"PARENT","line":101,"in_reply_to":"9a41bdd9_d5e7b83e","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        location \u003d self.plugin.create_share(share, share_server)"},{"line_number":99,"context_line":"        return location"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":102,"context_line":"        LOG.debug(\"Extend a share.\")"},{"line_number":103,"context_line":"        self.plugin.extend_share(share, new_size, share_server)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_d5e7b83e","side":"PARENT","line":101,"in_reply_to":"ba3cc151_4ba2bf9a","updated":"2015-07-12 21:27:12.000000000","message":"+1","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        location \u003d self.plugin.create_share(share, share_server)"},{"line_number":99,"context_line":"        return location"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def extend_share(self, share, new_size, share_server\u003dNone):"},{"line_number":102,"context_line":"        LOG.debug(\"Extend a share.\")"},{"line_number":103,"context_line":"        self.plugin.extend_share(share, new_size, share_server)"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e04ea5c0","side":"PARENT","line":101,"in_reply_to":"ba3cc151_4ba2bf9a","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"}],"manila/share/drivers/huawei/huawei_utils.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_ebc15330","line":1,"updated":"2015-07-08 10:19:06.000000000","message":"2013?","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e0fc6540","line":1,"in_reply_to":"ba3cc151_ebc15330","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_cbe32fd8","line":2,"updated":"2015-07-08 10:19:06.000000000","message":"2012?","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# Copyright (c) 2012 OpenStack LLC."},{"line_number":3,"context_line":"# All Rights Reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_609ff503","line":2,"in_reply_to":"ba3cc151_cbe32fd8","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    opts \u003d {}"},{"line_number":45,"context_line":"    opts.update(opts_capabilite)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    for key, value in specs.iteritems():"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Get the scope, if using scope format"},{"line_number":50,"context_line":"        scope \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_ebef13af","line":47,"updated":"2015-07-08 10:19:06.000000000","message":"Please, use py 2/3 compatible things. Here you can use \"specs.items()\"","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    opts \u003d {}"},{"line_number":45,"context_line":"    opts.update(opts_capabilite)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    for key, value in specs.iteritems():"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # Get the scope, if using scope format"},{"line_number":50,"context_line":"        scope \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a063bd19","line":47,"in_reply_to":"ba3cc151_ebef13af","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            words \u003d value.split()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":71,"context_line":"                LOG.error(_LE(\u0027Replication must be specified as \u0027"},{"line_number":72,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":73,"context_line":"            else:"},{"line_number":74,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4b6cff34","line":71,"updated":"2015-07-08 10:19:06.000000000","message":"Replication?","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            words \u003d value.split()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":71,"context_line":"                LOG.error(_LE(\u0027Replication must be specified as \u0027"},{"line_number":72,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":73,"context_line":"            else:"},{"line_number":74,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_a04add81","line":71,"in_reply_to":"9a41bdd9_5541680a","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            words \u003d value.split()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":71,"context_line":"                LOG.error(_LE(\u0027Replication must be specified as \u0027"},{"line_number":72,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":73,"context_line":"            else:"},{"line_number":74,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_007f09ab","line":71,"in_reply_to":"ba3cc151_4b6cff34","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            words \u003d value.split()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":71,"context_line":"                LOG.error(_LE(\u0027Replication must be specified as \u0027"},{"line_number":72,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":73,"context_line":"            else:"},{"line_number":74,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_5541680a","line":71,"in_reply_to":"ba3cc151_4b6cff34","updated":"2015-07-12 21:27:12.000000000","message":"Seems to be wrong message.","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"84a580daedfc54369997e29109342a92c8f53c4a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if len(key_split) \u003d\u003d 1:"},{"line_number":55,"context_line":"            key \u003d key_split[0]"},{"line_number":56,"context_line":"        else:"},{"line_number":57,"context_line":"            scope \u003d key_split[0]"},{"line_number":58,"context_line":"            key \u003d key_split[1]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if scope:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_e773df7e","line":57,"updated":"2015-07-14 12:24:03.000000000","message":"We can get here IndexError exception when len(key_split) is equal to zero. Need to explicitly do something on length equal to zero.\n\nSo need to fix mentioned case and covered with unit tests.","commit_id":"0b04d55e4b7b54c32a125a28703024da3e43953f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"b020ce6c5b7171c6922ae0c567b8231835d0fcab","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if len(key_split) \u003d\u003d 1:"},{"line_number":55,"context_line":"            key \u003d key_split[0]"},{"line_number":56,"context_line":"        else:"},{"line_number":57,"context_line":"            scope \u003d key_split[0]"},{"line_number":58,"context_line":"            key \u003d key_split[1]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if scope:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_8053a6e1","line":57,"in_reply_to":"9a41bdd9_e773df7e","updated":"2015-07-15 09:10:54.000000000","message":"Done","commit_id":"0b04d55e4b7b54c32a125a28703024da3e43953f"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"8096cfbe1a09ab3d484ed24cb197295f536cbfe0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return opts"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_opts_from_specs(opts_capabilite, specs):"},{"line_number":39,"context_line":"    opts \u003d {}"},{"line_number":40,"context_line":"    opts.update(opts_capabilite)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_c966a050","line":38,"updated":"2015-07-15 17:07:08.000000000","message":"s/opts_capabilite/opts_capability/","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ee453b2ff6af980a0a65ab46f9b248a0e11fe227","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return opts"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_opts_from_specs(opts_capabilite, specs):"},{"line_number":39,"context_line":"    opts \u003d {}"},{"line_number":40,"context_line":"    opts.update(opts_capabilite)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_62fd0fb0","line":38,"in_reply_to":"9a41bdd9_c966a050","updated":"2015-07-16 08:17:53.000000000","message":"I will do.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        specs \u003d share_types.get_share_type_extra_specs(type_id)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        opts \u003d _get_opts_from_specs(constants.OPTS_CAPABILITIES, specs)"},{"line_number":33,"context_line":"        LOG.debug(\u0027Get share type extra specs: %(opts)s\u0027, {\u0027opts\u0027: opts})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    return opts"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c33241f2","line":33,"updated":"2015-08-05 18:15:36.000000000","message":"OK, but with only 1 you could just \u0027...%s\u0027, opts) instead of the dict.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        specs \u003d share_types.get_share_type_extra_specs(type_id)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        opts \u003d _get_opts_from_specs(constants.OPTS_CAPABILITIES, specs)"},{"line_number":33,"context_line":"        LOG.debug(\u0027Get share type extra specs: %(opts)s\u0027, {\u0027opts\u0027: opts})"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    return opts"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_febb39e3","line":33,"in_reply_to":"1a4dcd0f_c33241f2","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return opts"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_opts_from_specs(opts_capability, specs):"},{"line_number":39,"context_line":"    opts \u003d {}"},{"line_number":40,"context_line":"    opts.update(opts_capability)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_e31bbdc8","line":38,"updated":"2015-08-05 18:15:36.000000000","message":"You should rename arg to plural s/opts_capability/opts_capabilities/.  If you are always going to use the constant you could even get rid of the arg. Not sure of your planned usage for that arg.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    return opts"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_opts_from_specs(opts_capability, specs):"},{"line_number":39,"context_line":"    opts \u003d {}"},{"line_number":40,"context_line":"    opts.update(opts_capability)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_491b9973","line":38,"in_reply_to":"1a4dcd0f_e31bbdc8","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_opts_from_specs(opts_capability, specs):"},{"line_number":39,"context_line":"    opts \u003d {}"},{"line_number":40,"context_line":"    opts.update(opts_capability)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    for key, value in specs.items():"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_43339162","line":40,"updated":"2015-08-05 18:15:36.000000000","message":"Wouldn\u0027t opts \u003d opts_capability.copy()  look better than the above 2 lines?","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def _get_opts_from_specs(opts_capability, specs):"},{"line_number":39,"context_line":"    opts \u003d {}"},{"line_number":40,"context_line":"    opts.update(opts_capability)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    for key, value in specs.items():"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_a9125d55","line":40,"in_reply_to":"1a4dcd0f_43339162","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        key_split \u003d key.split(\u0027:\u0027)"},{"line_number":47,"context_line":"        if ((len(key_split) \u003e 2 and key_split[0] !\u003d \"capabilities\")"},{"line_number":48,"context_line":"           or len(key_split) \u003d\u003d 0):"},{"line_number":49,"context_line":"            continue"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        if len(key_split) \u003d\u003d 1:"},{"line_number":52,"context_line":"            key \u003d key_split[0]"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_235e8544","line":49,"updated":"2015-08-05 18:15:36.000000000","message":"This condition is confusing. If you even need len(key_split)\u003d\u003d0, would it be better to just start with \"not key_split or...\" instead. Not sure if that check is needed. Up to you.  Next I think you should check for len(key_split) \u003d\u003d2 with that \"capabilities\" check.  For \u003e2 you can\u0027t handle that correctly, so you should probably check and log that.  I think you are close, but it is confusing. Maybe you could break it up to make it easier.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        key_split \u003d key.split(\u0027:\u0027)"},{"line_number":47,"context_line":"        if ((len(key_split) \u003e 2 and key_split[0] !\u003d \"capabilities\")"},{"line_number":48,"context_line":"           or len(key_split) \u003d\u003d 0):"},{"line_number":49,"context_line":"            continue"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        if len(key_split) \u003d\u003d 1:"},{"line_number":52,"context_line":"            key \u003d key_split[0]"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_febd7968","line":49,"in_reply_to":"1a4dcd0f_235e8544","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            words \u003d value.split()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":67,"context_line":"                LOG.error(_LE(\u0027Value must be specified as \u0027"},{"line_number":68,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_bee5c838","line":67,"updated":"2015-08-05 18:15:36.000000000","message":"You should probably put more info in this line so that the administrator can figure out where the questionable value came from.  Does your logging (maybe not all here) make it clear which share type and which key to find and fix?","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            words \u003d value.split()"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":67,"context_line":"                LOG.error(_LE(\u0027Value must be specified as \u0027"},{"line_number":68,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                del words[0]"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_094fd16b","line":67,"in_reply_to":"1a4dcd0f_bee5c838","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":67,"context_line":"                LOG.error(_LE(\u0027Value must be specified as \u0027"},{"line_number":68,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                del words[0]"},{"line_number":71,"context_line":"                value \u003d words[0]"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_9e2d6c97","line":68,"updated":"2015-08-05 18:15:36.000000000","message":"Why escaping the period?","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":67,"context_line":"                LOG.error(_LE(\u0027Value must be specified as \u0027"},{"line_number":68,"context_line":"                              \u0027\\\u003cis\u003e True\\.\u0027))"},{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                del words[0]"},{"line_number":71,"context_line":"                value \u003d words[0]"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c91d6963","line":68,"in_reply_to":"1a4dcd0f_9e2d6c97","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                del words[0]"},{"line_number":71,"context_line":"                value \u003d words[0]"},{"line_number":72,"context_line":"                opts[key] \u003d value.lower()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    return opts"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_3e0d38e8","line":72,"updated":"2015-08-05 18:15:36.000000000","message":"No need for del since you are done with words.  How about replacing the above 3 lines with:  opts[key] \u003d words[1].lower()\n# That is partly just a matter of style, but \u0027del\u0027 seems unneeded.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            else:"},{"line_number":70,"context_line":"                del words[0]"},{"line_number":71,"context_line":"                value \u003d words[0]"},{"line_number":72,"context_line":"                opts[key] \u003d value.lower()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    return opts"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_fe901945","line":72,"in_reply_to":"1a4dcd0f_3e0d38e8","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f9f718dddc3492674b9e2b919ace46fd53d79167","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":66,"context_line":"                LOG.error(_LE(\u0027Extra specs must be specified as \u0027"},{"line_number":67,"context_line":"                              \u0027capabilities:%s\u003d\\\u0027\u003cis\u003e True\\\u0027.\u0027), key)"},{"line_number":68,"context_line":"            else:"},{"line_number":69,"context_line":"                opts[key] \u003d words[1].lower()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_ed059a45","line":67,"updated":"2015-08-07 05:27:18.000000000","message":"I guess I\u0027d use double-quotes on the outside so that single quotes inside don\u0027t need escaping.","commit_id":"b6f5a726ce76a3198b8011d3ad14b2057d74b801"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f394ed3ed808fe252a622e5f647d41d9574b48e4","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            if not (words and len(words) \u003d\u003d 2 and words[0] \u003d\u003d \u0027\u003cis\u003e\u0027):"},{"line_number":66,"context_line":"                LOG.error(_LE(\u0027Extra specs must be specified as \u0027"},{"line_number":67,"context_line":"                              \u0027capabilities:%s\u003d\\\u0027\u003cis\u003e True\\\u0027.\u0027), key)"},{"line_number":68,"context_line":"            else:"},{"line_number":69,"context_line":"                opts[key] \u003d words[1].lower()"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_bfa1e695","line":67,"in_reply_to":"1a4dcd0f_ed059a45","updated":"2015-08-07 11:48:10.000000000","message":"Done","commit_id":"b6f5a726ce76a3198b8011d3ad14b2057d74b801"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b04dad4da0d65abbd67483344469875dd635e413","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        # Get the scope, if using scope format"},{"line_number":44,"context_line":"        scope \u003d None"},{"line_number":45,"context_line":"        key_split \u003d key.split(\u0027:\u0027)"},{"line_number":46,"context_line":"        if len(key_split) !\u003d 2 and len(key_split) !\u003d 1:"},{"line_number":47,"context_line":"            continue"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        if len(key_split) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_04833857","line":46,"updated":"2015-08-12 06:32:20.000000000","message":"if len(key_split) not in (1, 2)","commit_id":"d775d5b87f0f05ce30805790ec09214757f47547"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ac09ac46833bb5a8d0240149433c64589952491a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        # Get the scope, if using scope format"},{"line_number":44,"context_line":"        scope \u003d None"},{"line_number":45,"context_line":"        key_split \u003d key.split(\u0027:\u0027)"},{"line_number":46,"context_line":"        if len(key_split) !\u003d 2 and len(key_split) !\u003d 1:"},{"line_number":47,"context_line":"            continue"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        if len(key_split) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_e3a70fba","line":46,"in_reply_to":"1a4dcd0f_04833857","updated":"2015-08-12 14:01:31.000000000","message":"Done","commit_id":"d775d5b87f0f05ce30805790ec09214757f47547"}],"manila/share/drivers/huawei/v3/connection.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        location \u003d self._get_location_path(share_name, share_proto)"},{"line_number":94,"context_line":"        return location"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":97,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027]"},{"line_number":98,"context_line":"        share_name \u003d share[\u0027name\u0027]"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_ab610b3b","side":"PARENT","line":96,"updated":"2015-07-08 10:19:06.000000000","message":"Same here. Why it is removed?","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        location \u003d self._get_location_path(share_name, share_proto)"},{"line_number":94,"context_line":"        return location"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":97,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027]"},{"line_number":98,"context_line":"        share_name \u003d share[\u0027name\u0027]"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_8040f957","side":"PARENT","line":96,"in_reply_to":"9a41bdd9_35494432","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        location \u003d self._get_location_path(share_name, share_proto)"},{"line_number":94,"context_line":"        return location"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":97,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027]"},{"line_number":98,"context_line":"        share_name \u003d share[\u0027name\u0027]"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_35494432","side":"PARENT","line":96,"in_reply_to":"ba3cc151_ab610b3b","updated":"2015-07-12 21:27:12.000000000","message":"+1","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        location \u003d self._get_location_path(share_name, share_proto)"},{"line_number":94,"context_line":"        return location"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def extend_share(self, share, new_size, share_server):"},{"line_number":97,"context_line":"        share_proto \u003d share[\u0027share_proto\u0027]"},{"line_number":98,"context_line":"        share_name \u003d share[\u0027name\u0027]"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_603b75ec","side":"PARENT","line":96,"in_reply_to":"ba3cc151_ab610b3b","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"dcb343b4a62a053199e73e77c58bce174d4fb566","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            if fs_id is not None:"},{"line_number":87,"context_line":"                self.helper._delete_fs(fs_id)"},{"line_number":88,"context_line":"            raise exception.InvalidShare("},{"line_number":89,"context_line":"                reason\u003d(_(\u0027Failed to create share %(name)s.\u0027"},{"line_number":90,"context_line":"                          \u0027Reason: %(err)s.\u0027)"},{"line_number":91,"context_line":"                        % {\u0027name\u0027: share_name,"},{"line_number":92,"context_line":"                           \u0027err\u0027: err}))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f32558ae","line":89,"updated":"2015-07-11 02:02:05.000000000","message":"Need a blank space at the end of sentence.","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            if fs_id is not None:"},{"line_number":87,"context_line":"                self.helper._delete_fs(fs_id)"},{"line_number":88,"context_line":"            raise exception.InvalidShare("},{"line_number":89,"context_line":"                reason\u003d(_(\u0027Failed to create share %(name)s.\u0027"},{"line_number":90,"context_line":"                          \u0027Reason: %(err)s.\u0027)"},{"line_number":91,"context_line":"                        % {\u0027name\u0027: share_name,"},{"line_number":92,"context_line":"                           \u0027err\u0027: err}))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_00562929","line":89,"in_reply_to":"9a41bdd9_f32558ae","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"2cfdf1b0fbb3bbd080e653f8e6a041df62291b83","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                    allocated_capacity_gb\u003dcapacity[\u0027CONSUMEDCAPACITY\u0027],"},{"line_number":242,"context_line":"                    QoS_support\u003dFalse,"},{"line_number":243,"context_line":"                    reserved_percentage\u003d0,"},{"line_number":244,"context_line":"                    thin_provisioning\u003dTrue,"},{"line_number":245,"context_line":"                    thick_provisioning\u003dTrue,"},{"line_number":246,"context_line":"                    enablededup\u003dTrue,"},{"line_number":247,"context_line":"                    enablecompression\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_a018ab1f","line":244,"updated":"2015-07-30 17:16:44.000000000","message":"Use the following names that are already defined.\n\nthin_provisioning_support\u003dTrue\n\nthick_provisioning_support\u003dTrue","commit_id":"496aa0fb16a70afb46aea431e59e1e7ac8e7e9bb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"5c01c3bf72dd37b2985955f7200379214c0f10da","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                    allocated_capacity_gb\u003dcapacity[\u0027CONSUMEDCAPACITY\u0027],"},{"line_number":242,"context_line":"                    QoS_support\u003dFalse,"},{"line_number":243,"context_line":"                    reserved_percentage\u003d0,"},{"line_number":244,"context_line":"                    thin_provisioning\u003dTrue,"},{"line_number":245,"context_line":"                    thick_provisioning\u003dTrue,"},{"line_number":246,"context_line":"                    enablededup\u003dTrue,"},{"line_number":247,"context_line":"                    enablecompression\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":15,"id":"3a50d1a3_287b122b","line":244,"in_reply_to":"3a50d1a3_a018ab1f","updated":"2015-07-31 03:31:03.000000000","message":"Done","commit_id":"496aa0fb16a70afb46aea431e59e1e7ac8e7e9bb"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"0d05cbdcf5350edefdc6d3c15fdbeba08168f466","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from manila.common import constants as common_constants"},{"line_number":22,"context_line":"from manila import exception"},{"line_number":23,"context_line":"from manila.i18n import _, _LI, _LW"},{"line_number":24,"context_line":"from manila.share.drivers.huawei import base as driver"},{"line_number":25,"context_line":"from manila.share.drivers.huawei import constants"},{"line_number":26,"context_line":"from manila.share.drivers.huawei import huawei_utils"},{"line_number":27,"context_line":"from manila.share.drivers.huawei.v3 import helper"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_8f19c97c","line":24,"updated":"2015-08-02 09:10:33.000000000","message":"why rename it?","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"0d05cbdcf5350edefdc6d3c15fdbeba08168f466","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        if fileparam[\u0027ALLOCTYPE\u0027] \u003d\u003d 0:"},{"line_number":336,"context_line":"            if extra_specs[\u0027enablededup\u0027] or extra_specs[\u0027enablecompression\u0027]:"},{"line_number":337,"context_line":"                err_msg \u003d (_("},{"line_number":338,"context_line":"                    \u0027The filesystem type is \"Thick\",\u0027"},{"line_number":339,"context_line":"                    \u0027 so enablededup or enablecompression can not be set.\u0027))"},{"line_number":340,"context_line":"                LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_4f2661bb","line":337,"updated":"2015-08-02 09:10:33.000000000","message":"_(..)?","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"2812f4c73908126f72ab990d0d392a3738b56b9a","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        if fileparam[\u0027ALLOCTYPE\u0027] \u003d\u003d 0:"},{"line_number":336,"context_line":"            if extra_specs[\u0027enablededup\u0027] or extra_specs[\u0027enablecompression\u0027]:"},{"line_number":337,"context_line":"                err_msg \u003d (_("},{"line_number":338,"context_line":"                    \u0027The filesystem type is \"Thick\",\u0027"},{"line_number":339,"context_line":"                    \u0027 so enablededup or enablecompression can not be set.\u0027))"},{"line_number":340,"context_line":"                LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3a50d1a3_be94e736","line":337,"in_reply_to":"3a50d1a3_4f2661bb","updated":"2015-08-03 07:49:04.000000000","message":"Done","commit_id":"ebe41d949fac4eb3ea56fa4fc0a3193502c4aa00"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                    thin_provisioning_support\u003dTrue,"},{"line_number":246,"context_line":"                    thick_provisioning_support\u003dTrue,"},{"line_number":247,"context_line":"                    huawei_dedup\u003dTrue,"},{"line_number":248,"context_line":"                    huawei_compression\u003dTrue,"},{"line_number":249,"context_line":"                )"},{"line_number":250,"context_line":"                stats_dict[\"pools\"].append(pool)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_20a676ae","line":248,"updated":"2015-08-05 18:15:36.000000000","message":"Why are these defaulting to true?  You default them to false elsewhere and really what you want here is to report the capability of the backend. I think below code suggests that once your ALLOCTYPE is set then it affects the capabilities of this pool.  For example once think\u003dTrue, then dedup and compress need to be reported as False.  Isn\u0027t that the whole point of using a capabilityFilter?","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                    thin_provisioning_support\u003dTrue,"},{"line_number":246,"context_line":"                    thick_provisioning_support\u003dTrue,"},{"line_number":247,"context_line":"                    huawei_dedup\u003dTrue,"},{"line_number":248,"context_line":"                    huawei_compression\u003dTrue,"},{"line_number":249,"context_line":"                )"},{"line_number":250,"context_line":"                stats_dict[\"pools\"].append(pool)"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_115373e3","line":248,"in_reply_to":"1a4dcd0f_20a676ae","updated":"2015-08-06 08:31:59.000000000","message":"These defaulting to true because this driver have this capabilities.\nI default them to false elsewhere because the extra-specs default setting is empty.\nThe pool have both capabilites of thin and thick, so I need to export thin_provisioning_support and thick_provisioning_support at the same time.\nAbout this problem(thick/dedup/compress), We could pay attention in the configuration extra specs.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                LOG.error(err_msg)"},{"line_number":334,"context_line":"                raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        if \u0027LUNType\u0027 in extra_specs:"},{"line_number":337,"context_line":"            fileparam[\u0027ALLOCTYPE\u0027] \u003d extra_specs[\u0027LUNType\u0027]"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        if fileparam[\u0027ALLOCTYPE\u0027] \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_e06ace80","line":336,"updated":"2015-08-05 18:15:36.000000000","message":"I don\u0027t remember seeing LUNType. Is this an unscoped extra-spec?","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":333,"context_line":"                LOG.error(err_msg)"},{"line_number":334,"context_line":"                raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        if \u0027LUNType\u0027 in extra_specs:"},{"line_number":337,"context_line":"            fileparam[\u0027ALLOCTYPE\u0027] \u003d extra_specs[\u0027LUNType\u0027]"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"        if fileparam[\u0027ALLOCTYPE\u0027] \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c996c93d","line":336,"in_reply_to":"1a4dcd0f_e06ace80","updated":"2015-08-06 08:31:59.000000000","message":"In code line 42~44. LUNType has been get from thick_provisioning_support and thin_provisioning_support.\n\nhttps://review.openstack.org/#/c/197413/19/manila/share/drivers/huawei/v3/smartx.py","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                    extra_specs[\u0027huawei_compression\u0027]):"},{"line_number":342,"context_line":"                err_msg \u003d _("},{"line_number":343,"context_line":"                    \u0027The filesystem type is \"Thick\",\u0027"},{"line_number":344,"context_line":"                    \u0027 so huawei_dedup or huawei_compression can not be set.\u0027)"},{"line_number":345,"context_line":"                LOG.error(err_msg)"},{"line_number":346,"context_line":"                raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_a0bcc6dc","line":344,"updated":"2015-08-05 18:15:36.000000000","message":"s/can not/cannot/  (most people do write it like you did, but the meaning is actually a little ambiguous as 2 words)","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                    extra_specs[\u0027huawei_compression\u0027]):"},{"line_number":342,"context_line":"                err_msg \u003d _("},{"line_number":343,"context_line":"                    \u0027The filesystem type is \"Thick\",\u0027"},{"line_number":344,"context_line":"                    \u0027 so huawei_dedup or huawei_compression can not be set.\u0027)"},{"line_number":345,"context_line":"                LOG.error(err_msg)"},{"line_number":346,"context_line":"                raise exception.InvalidInput(reason\u003derr_msg)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c9e489e1","line":344,"in_reply_to":"1a4dcd0f_a0bcc6dc","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f9f718dddc3492674b9e2b919ace46fd53d79167","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                    thin_provisioning_support\u003dTrue,"},{"line_number":248,"context_line":"                    thick_provisioning_support\u003dTrue,"},{"line_number":249,"context_line":"                    huawei_dedup\u003dTrue,"},{"line_number":250,"context_line":"                    huawei_compression\u003dTrue,"},{"line_number":251,"context_line":"                )"},{"line_number":252,"context_line":"                stats_dict[\"pools\"].append(pool)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_a8bd4003","line":250,"updated":"2015-08-07 05:27:18.000000000","message":"With thin provisioning you should include provisioned_capacity_gb and max_over_subscription_ratio and provisioned_capacity_gb.","commit_id":"b6f5a726ce76a3198b8011d3ad14b2057d74b801"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"f394ed3ed808fe252a622e5f647d41d9574b48e4","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                    thin_provisioning_support\u003dTrue,"},{"line_number":248,"context_line":"                    thick_provisioning_support\u003dTrue,"},{"line_number":249,"context_line":"                    huawei_dedup\u003dTrue,"},{"line_number":250,"context_line":"                    huawei_compression\u003dTrue,"},{"line_number":251,"context_line":"                )"},{"line_number":252,"context_line":"                stats_dict[\"pools\"].append(pool)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a4dcd0f_bfc80656","line":250,"in_reply_to":"1a4dcd0f_a8bd4003","updated":"2015-08-07 11:48:10.000000000","message":"Done","commit_id":"b6f5a726ce76a3198b8011d3ad14b2057d74b801"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"ef79899cadad8f71de1eff96e605aef31c3bc88a","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            poolinfo[\u0027CAPACITY\u0027] \u003d free"},{"line_number":298,"context_line":"            poolinfo[\u0027CONSUMEDCAPACITY\u0027] \u003d consumed"},{"line_number":299,"context_line":"            poolinfo[\u0027MAXOVERSUBSCRIPTIONRATIO\u0027] \u003d int("},{"line_number":300,"context_line":"                constants.MAX_THIN_CAPACITY / units.Ki / free)"},{"line_number":301,"context_line":"            poolinfo[\u0027PROVISIONEDCAPACITYGB\u0027] \u003d 0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return poolinfo"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_4247a6bb","line":300,"updated":"2015-08-13 12:33:48.000000000","message":"I think this may cause \"max_over_subscription_ratio\" always be zero,is that right?","commit_id":"bbd6c69c7af857faafb78807bca32d325a354e91"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7c1bf27b600c681d9aae463fc578f0c9b854c099","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            poolinfo[\u0027CAPACITY\u0027] \u003d free"},{"line_number":298,"context_line":"            poolinfo[\u0027CONSUMEDCAPACITY\u0027] \u003d consumed"},{"line_number":299,"context_line":"            poolinfo[\u0027MAXOVERSUBSCRIPTIONRATIO\u0027] \u003d int("},{"line_number":300,"context_line":"                constants.MAX_THIN_CAPACITY / units.Ki / free)"},{"line_number":301,"context_line":"            poolinfo[\u0027PROVISIONEDCAPACITYGB\u0027] \u003d 0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return poolinfo"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_761b5f81","line":300,"in_reply_to":"1a4dcd0f_2d9dab65","updated":"2015-08-14 02:26:05.000000000","message":"Done","commit_id":"bbd6c69c7af857faafb78807bca32d325a354e91"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"584d167fa2a4b4f0828173d484e0321e78092754","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            poolinfo[\u0027CAPACITY\u0027] \u003d free"},{"line_number":298,"context_line":"            poolinfo[\u0027CONSUMEDCAPACITY\u0027] \u003d consumed"},{"line_number":299,"context_line":"            poolinfo[\u0027MAXOVERSUBSCRIPTIONRATIO\u0027] \u003d int("},{"line_number":300,"context_line":"                constants.MAX_THIN_CAPACITY / units.Ki / free)"},{"line_number":301,"context_line":"            poolinfo[\u0027PROVISIONEDCAPACITYGB\u0027] \u003d 0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return poolinfo"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_2d9dab65","line":300,"in_reply_to":"1a4dcd0f_4247a6bb","updated":"2015-08-13 12:50:31.000000000","message":"Didn\u0027t notice this before.  max_over_subscription_ratio should be a float.  In your formula, numerator is a constant and the denominator is changing.  This is not right.  Why don\u0027t you get this from manila.conf?\n\nExample from Cinder:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/lvm.py#L238","commit_id":"bbd6c69c7af857faafb78807bca32d325a354e91"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7c1bf27b600c681d9aae463fc578f0c9b854c099","unresolved":false,"context_lines":[{"line_number":297,"context_line":"            poolinfo[\u0027CAPACITY\u0027] \u003d free"},{"line_number":298,"context_line":"            poolinfo[\u0027CONSUMEDCAPACITY\u0027] \u003d consumed"},{"line_number":299,"context_line":"            poolinfo[\u0027MAXOVERSUBSCRIPTIONRATIO\u0027] \u003d int("},{"line_number":300,"context_line":"                constants.MAX_THIN_CAPACITY / units.Ki / free)"},{"line_number":301,"context_line":"            poolinfo[\u0027PROVISIONEDCAPACITYGB\u0027] \u003d 0"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return poolinfo"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a4dcd0f_56166359","line":300,"in_reply_to":"1a4dcd0f_4247a6bb","updated":"2015-08-14 02:26:05.000000000","message":"Done","commit_id":"bbd6c69c7af857faafb78807bca32d325a354e91"}],"manila/share/drivers/huawei/v3/helper.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c16c077e0c5599dc676a12e7057d4c70a43c55ff","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                       + snap_name.replace(\"-\", \"_\"))"},{"line_number":551,"context_line":"        return snapshot_id"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def _extend_share(self, fsid, new_size):"},{"line_number":554,"context_line":"        url \u003d self.url + \"/filesystem/%s\" % fsid"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        capacityinfo \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_955e10e8","side":"PARENT","line":553,"updated":"2015-07-12 21:27:12.000000000","message":"Why removed?","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                       + snap_name.replace(\"-\", \"_\"))"},{"line_number":551,"context_line":"        return snapshot_id"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    def _extend_share(self, fsid, new_size):"},{"line_number":554,"context_line":"        url \u003d self.url + \"/filesystem/%s\" % fsid"},{"line_number":555,"context_line":""},{"line_number":556,"context_line":"        capacityinfo \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_60129564","side":"PARENT","line":553,"in_reply_to":"9a41bdd9_955e10e8","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"2e4a34a3312e000d51300acc5f84c83da7787acb"}],"manila/share/drivers/huawei/v3/smartx.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class SmartX(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_ebe2b39f","line":18,"updated":"2015-07-08 10:19:06.000000000","message":"LOG is not used.","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class SmartX(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_fb48945d","line":18,"in_reply_to":"ba3cc151_ebe2b39f","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class SmartX(object):"},{"line_number":22,"context_line":"    def __init__(self):"},{"line_number":23,"context_line":"        pass"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def get_smartx_extra_specs_opts(self, opts):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_6bcea32e","line":22,"updated":"2015-07-08 10:19:06.000000000","message":"Such \"__init__\" is redundant.","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class SmartX(object):"},{"line_number":22,"context_line":"    def __init__(self):"},{"line_number":23,"context_line":"        pass"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def get_smartx_extra_specs_opts(self, opts):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_db4b5058","line":22,"in_reply_to":"ba3cc151_6bcea32e","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"24d43c16afdc77f9c3c905dd2bfd0f58b18aac72","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        return opts"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get_enableCompression_opts(self, opts):"},{"line_number":39,"context_line":"        if opts[\u0027enablecompression\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":40,"context_line":"            opts[\u0027enablecompression\u0027] \u003d True"},{"line_number":41,"context_line":"        else:"},{"line_number":42,"context_line":"            opts[\u0027enablecompression\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4b015f37","line":39,"updated":"2015-07-08 10:19:06.000000000","message":"This one func is similar to previous one. So they can use same one method.","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"d7a3f3c3123ee89edba212bca1c808f604df1f6c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        return opts"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get_enableCompression_opts(self, opts):"},{"line_number":39,"context_line":"        if opts[\u0027enablecompression\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":40,"context_line":"            opts[\u0027enablecompression\u0027] \u003d True"},{"line_number":41,"context_line":"        else:"},{"line_number":42,"context_line":"            opts[\u0027enablecompression\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f7ebc876","line":39,"in_reply_to":"ba3cc151_4b015f37","updated":"2015-07-13 12:53:15.000000000","message":"Done","commit_id":"e5f23b40ea2f3ceffb81338c5e0cc39bc9b5604a"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"84a580daedfc54369997e29109342a92c8f53c4a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class SmartX(object):"},{"line_number":18,"context_line":"    def get_smartx_extra_specs_opts(self, opts):"},{"line_number":19,"context_line":"        opts \u003d self.get_capabilities_opts(opts, \u0027enablededup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_67a26fb0","line":16,"updated":"2015-07-14 12:24:03.000000000","message":"Please, add here some docstring with description about it.","commit_id":"0b04d55e4b7b54c32a125a28703024da3e43953f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"b020ce6c5b7171c6922ae0c567b8231835d0fcab","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class SmartX(object):"},{"line_number":18,"context_line":"    def get_smartx_extra_specs_opts(self, opts):"},{"line_number":19,"context_line":"        opts \u003d self.get_capabilities_opts(opts, \u0027enablededup\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a41bdd9_606542b3","line":16,"in_reply_to":"9a41bdd9_67a26fb0","updated":"2015-07-15 09:10:54.000000000","message":"Done","commit_id":"0b04d55e4b7b54c32a125a28703024da3e43953f"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"8096cfbe1a09ab3d484ed24cb197295f536cbfe0","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        return opts"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_capabilities_opts(self, opts, key):"},{"line_number":25,"context_line":"        if opts[key] \u003d\u003d \u0027true\u0027:"},{"line_number":26,"context_line":"            opts[key] \u003d True"},{"line_number":27,"context_line":"        else:"},{"line_number":28,"context_line":"            opts[key] \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_c969c0fa","line":25,"updated":"2015-07-15 17:07:08.000000000","message":"You might also want \u0027True\u0027 to be True.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ee453b2ff6af980a0a65ab46f9b248a0e11fe227","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        return opts"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def get_capabilities_opts(self, opts, key):"},{"line_number":25,"context_line":"        if opts[key] \u003d\u003d \u0027true\u0027:"},{"line_number":26,"context_line":"            opts[key] \u003d True"},{"line_number":27,"context_line":"        else:"},{"line_number":28,"context_line":"            opts[key] \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_02bd23d7","line":25,"in_reply_to":"9a41bdd9_c969c0fa","updated":"2015-07-16 08:17:53.000000000","message":"In line 72: https://review.openstack.org/#/c/197413/4/manila/share/drivers/huawei/huawei_utils.py\n\nI already use \u0027key.lower()\u0027 to change \u0027True\u0027 to \u0027true\u0027.","commit_id":"cae84f638b57efcc78d9ed91755bb94fc5980cc8"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            else:"},{"line_number":42,"context_line":"                opts[\u0027LUNType\u0027] \u003d 1"},{"line_number":43,"context_line":"        if opts[\u0027thick_provisioning_support\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":44,"context_line":"                opts[\u0027LUNType\u0027] \u003d 0"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return opts"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_e075eef9","line":44,"updated":"2015-08-05 18:15:36.000000000","message":"else?  What if neither was true and LUNType did not get set?","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            else:"},{"line_number":42,"context_line":"                opts[\u0027LUNType\u0027] \u003d 1"},{"line_number":43,"context_line":"        if opts[\u0027thick_provisioning_support\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":44,"context_line":"                opts[\u0027LUNType\u0027] \u003d 0"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        return opts"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_a971fd77","line":44,"in_reply_to":"1a4dcd0f_e075eef9","updated":"2015-08-06 08:31:59.000000000","message":"Yes, if neither was true and LUNType will be None. LUNType does not need default value in there.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b04dad4da0d65abbd67483344469875dd635e413","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        return opts"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def get_capabilities_opts(self, opts, key):"},{"line_number":28,"context_line":"        if opts[key] \u003d\u003d \u0027true\u0027:"},{"line_number":29,"context_line":"            opts[key] \u003d True"},{"line_number":30,"context_line":"        else:"},{"line_number":31,"context_line":"            opts[key] \u003d False"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_04d1f856","line":28,"updated":"2015-08-12 06:32:20.000000000","message":"Better to use \"oslo_utils.stringutils.bool_from_string(foo)\"\n\nExample: https://github.com/openstack/manila/blob/5dca99a6/manila/openstack/common/scheduler/filters/extra_specs_ops.py#L18","commit_id":"d775d5b87f0f05ce30805790ec09214757f47547"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ac09ac46833bb5a8d0240149433c64589952491a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        return opts"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def get_capabilities_opts(self, opts, key):"},{"line_number":28,"context_line":"        if opts[key] \u003d\u003d \u0027true\u0027:"},{"line_number":29,"context_line":"            opts[key] \u003d True"},{"line_number":30,"context_line":"        else:"},{"line_number":31,"context_line":"            opts[key] \u003d False"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_d9220054","line":28,"in_reply_to":"1a4dcd0f_04d1f856","updated":"2015-08-12 14:01:31.000000000","message":"Done","commit_id":"d775d5b87f0f05ce30805790ec09214757f47547"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b04dad4da0d65abbd67483344469875dd635e413","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        return opts"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def get_smartprovisioning_opts(self, opts):"},{"line_number":36,"context_line":"        if opts[\u0027thin_provisioning_support\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":37,"context_line":"            if opts[\u0027thick_provisioning_support\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":38,"context_line":"                raise exception.InvalidInput("},{"line_number":39,"context_line":"                    reason\u003d(_(\u0027Illegal value specified for thin: \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_6466bcbc","line":36,"updated":"2015-08-12 06:32:20.000000000","message":"same here","commit_id":"d775d5b87f0f05ce30805790ec09214757f47547"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ac09ac46833bb5a8d0240149433c64589952491a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        return opts"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def get_smartprovisioning_opts(self, opts):"},{"line_number":36,"context_line":"        if opts[\u0027thin_provisioning_support\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":37,"context_line":"            if opts[\u0027thick_provisioning_support\u0027] \u003d\u003d \u0027true\u0027:"},{"line_number":38,"context_line":"                raise exception.InvalidInput("},{"line_number":39,"context_line":"                    reason\u003d(_(\u0027Illegal value specified for thin: \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a4dcd0f_393204a8","line":36,"in_reply_to":"1a4dcd0f_6466bcbc","updated":"2015-08-12 14:01:31.000000000","message":"Done","commit_id":"d775d5b87f0f05ce30805790ec09214757f47547"}],"manila/tests/share/drivers/huawei/test_huawei_nas.py":[{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        }"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        fake_extra_specs \u003d {"},{"line_number":513,"context_line":"            u\u0027capabilities:huawei_dedup\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":514,"context_line":"            u\u0027capabilities:huawei_compression\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":515,"context_line":"            u\u0027capabilities:thin_provisioning_support\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":516,"context_line":"            u\u0027test:test:test\u0027: u\u0027test\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_a0c92628","line":513,"updated":"2015-08-05 18:15:36.000000000","message":"I think you should get rid of the unicode and just use strings here and below for readability unless you think it is a better test this way.","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        }"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        fake_extra_specs \u003d {"},{"line_number":513,"context_line":"            u\u0027capabilities:huawei_dedup\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":514,"context_line":"            u\u0027capabilities:huawei_compression\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":515,"context_line":"            u\u0027capabilities:thin_provisioning_support\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":516,"context_line":"            u\u0027test:test:test\u0027: u\u0027test\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c9e569a4","line":513,"in_reply_to":"1a4dcd0f_a0c92628","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"f334808865592a6e285238ea985b884874f67e49","unresolved":false,"context_lines":[{"line_number":788,"context_line":"        location \u003d self.driver.create_share(self._context, self.share_nfs,"},{"line_number":789,"context_line":"                                            self.share_server)"},{"line_number":790,"context_line":"        self.assertEqual(\"100.115.10.68:/share_fake_uuid\", location)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"    @ddt.data({u\u0027capabilities:thin_provisioning_support\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":793,"context_line":"               u\u0027capabilities:thick_provisioning_support\u0027: u\u0027\u003cis\u003e True\u0027},"},{"line_number":794,"context_line":"              {u\u0027capabilities:huawei_dedup\u0027: u\u0027\u003cis\u003e True\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_c09c7211","line":791,"updated":"2015-08-05 18:15:36.000000000","message":"more unicode below","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7bbff822ae02d030261d7cd9b74710e0aa7eb699","unresolved":false,"context_lines":[{"line_number":788,"context_line":"        location \u003d self.driver.create_share(self._context, self.share_nfs,"},{"line_number":789,"context_line":"                                            self.share_server)"},{"line_number":790,"context_line":"        self.assertEqual(\"100.115.10.68:/share_fake_uuid\", location)"},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"    @ddt.data({u\u0027capabilities:thin_provisioning_support\u0027: u\u0027\u003cis\u003e True\u0027,"},{"line_number":793,"context_line":"               u\u0027capabilities:thick_provisioning_support\u0027: u\u0027\u003cis\u003e True\u0027},"},{"line_number":794,"context_line":"              {u\u0027capabilities:huawei_dedup\u0027: u\u0027\u003cis\u003e True\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4dcd0f_a901fd39","line":791,"in_reply_to":"1a4dcd0f_c09c7211","updated":"2015-08-06 08:31:59.000000000","message":"Done","commit_id":"b81fe2c00d05a05768bca74b0fb3d2b19d3ec0b0"}]}
