)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a3c979aacc3ed13d51fe060c551b7cbb803a6298","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This change will decode the special encoded characters into original values,"},{"line_number":15,"context_line":"so that nova vmware driver will support name like \"cluster/01\" defined"},{"line_number":16,"context_line":"in vCetner."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I478cc07e5f6a3bbaa3c13efbeb1cf0a8e0155422"},{"line_number":19,"context_line":"Closes-Bug:#1412696"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5afe65bd_fdce2b59","line":16,"updated":"2015-06-02 12:19:31.000000000","message":"vCenter","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c36d2db7e9d1ebe86f63227f55ce2253031cf8d9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This change will decode the special encoded characters into original values,"},{"line_number":15,"context_line":"so that nova vmware driver will support name like \"cluster/01\" defined"},{"line_number":16,"context_line":"in vCetner."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I478cc07e5f6a3bbaa3c13efbeb1cf0a8e0155422"},{"line_number":19,"context_line":"Closes-Bug:#1412696"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_64999b78","line":16,"in_reply_to":"5afe65bd_fdce2b59","updated":"2015-07-03 08:38:26.000000000","message":"Done","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"}],"oslo_vmware/service.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a3c979aacc3ed13d51fe060c551b7cbb803a6298","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        for obj_cont in response.objects:"},{"line_number":254,"context_line":"            for prop in getattr(obj_cont, \u0027propSet\u0027, []):"},{"line_number":255,"context_line":"                if(isinstance(prop.val, str)):"},{"line_number":256,"context_line":"                    setattr(prop, \u0027val\u0027, urllib.unquote(prop.val))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @property"},{"line_number":259,"context_line":"    def service_content(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_fdf50b83","line":256,"updated":"2015-06-02 12:19:31.000000000","message":"Do we need to do this for each and every string? The clients will know which string to unquote and they can do it selectively.","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c36d2db7e9d1ebe86f63227f55ce2253031cf8d9","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        for obj_cont in response.objects:"},{"line_number":254,"context_line":"            for prop in getattr(obj_cont, \u0027propSet\u0027, []):"},{"line_number":255,"context_line":"                if(isinstance(prop.val, str)):"},{"line_number":256,"context_line":"                    setattr(prop, \u0027val\u0027, urllib.unquote(prop.val))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    @property"},{"line_number":259,"context_line":"    def service_content(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_61718d0b","line":256,"in_reply_to":"5afe65bd_fdf50b83","updated":"2015-07-03 08:38:26.000000000","message":"You mean we only decode the value of the \"name\" property? Like following examples:\n\n(ObjectContent){\n   obj \u003d\n      (obj){\n         value \u003d \"domain-c2334\"\n         _type \u003d \"ClusterComputeResource\"\n      }\n   propSet[] \u003d\n      (DynamicProperty){\n         name \u003d \"name\"\n         val \u003d \"cluster%2f01\"\n      },\n }","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a3c979aacc3ed13d51fe060c551b7cbb803a6298","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                response \u003d request(managed_object, **kwargs)"},{"line_number":297,"context_line":"                if (attr_name.lower() \u003d\u003d \u0027retrievepropertiesex\u0027):"},{"line_number":298,"context_line":"                    Service._retrieve_properties_ex_fault_checker(response)"},{"line_number":299,"context_line":"                    Service._retrieve_properties_ex_decode(response)"},{"line_number":300,"context_line":"                return response"},{"line_number":301,"context_line":"            except exceptions.VimFaultException:"},{"line_number":302,"context_line":"                # Catch the VimFaultException that is raised by the fault"}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_7d7ebbe5","line":299,"updated":"2015-06-02 12:19:31.000000000","message":"This is not ensuring that strings returned by PBM service are unquoted.","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c36d2db7e9d1ebe86f63227f55ce2253031cf8d9","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                response \u003d request(managed_object, **kwargs)"},{"line_number":297,"context_line":"                if (attr_name.lower() \u003d\u003d \u0027retrievepropertiesex\u0027):"},{"line_number":298,"context_line":"                    Service._retrieve_properties_ex_fault_checker(response)"},{"line_number":299,"context_line":"                    Service._retrieve_properties_ex_decode(response)"},{"line_number":300,"context_line":"                return response"},{"line_number":301,"context_line":"            except exceptions.VimFaultException:"},{"line_number":302,"context_line":"                # Catch the VimFaultException that is raised by the fault"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_e4accba0","line":299,"in_reply_to":"5afe65bd_7d7ebbe5","updated":"2015-07-03 08:38:26.000000000","message":"Any suggestions on this?","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"c51b0955ee3990b6c50cd6ea508729be0ed45f9e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    from urllib import unquote"},{"line_number":26,"context_line":"except ImportError:"},{"line_number":27,"context_line":"    # when python version is 3.*"},{"line_number":28,"context_line":"    from urllib.parse import unquote"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"import netaddr"},{"line_number":31,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_0c6f3cc6","line":28,"updated":"2015-09-15 11:35:04.000000000","message":"You can use the following, will work for both 2.x and 3.x\n\n    from six.moves.urllib.parse import unquote","commit_id":"8854b52fdae33013df36323f33984d2339653524"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"d545ea383af4254e00be9ba7dc0637f730a21609","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    from urllib import unquote"},{"line_number":26,"context_line":"except ImportError:"},{"line_number":27,"context_line":"    # when python version is 3.*"},{"line_number":28,"context_line":"    from urllib.parse import unquote"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"import netaddr"},{"line_number":31,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_f702ac0a","line":28,"in_reply_to":"ba15a1d1_0c6f3cc6","updated":"2015-09-16 01:56:17.000000000","message":"Thanks, dim.\nDone.","commit_id":"8854b52fdae33013df36323f33984d2339653524"},{"author":{"_account_id":9459,"name":".Haifeng Yan","email":"yanheven@qq.com","username":"yan"},"change_message_id":"f952815a3c335c249697b34959e3b3d641b59900","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                                               details\u003ddetails)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    @staticmethod"},{"line_number":256,"context_line":"    def _retrieve_properties_ex_decode(response):"},{"line_number":257,"context_line":"        for obj_cont in response.objects:"},{"line_number":258,"context_line":"            for prop in getattr(obj_cont, \u0027propSet\u0027, []):"},{"line_number":259,"context_line":"                if isinstance(prop.val, str):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9ad45d7e_a21c826a","line":256,"range":{"start_line":256,"start_character":32,"end_line":256,"end_character":38},"updated":"2016-08-12 03:52:41.000000000","message":"how about using unquote instead of decode?","commit_id":"d043c4d4d50772c2de10a6034b77a3770eb63058"}],"tests/test_service.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a3c979aacc3ed13d51fe060c551b7cbb803a6298","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        obj_cont.propSet \u003d [prop]"},{"line_number":87,"context_line":"        response.objects \u003d [obj_cont]"},{"line_number":88,"context_line":"        service.Service._retrieve_properties_ex_decode(response)"},{"line_number":89,"context_line":"        self.assertEqual(response.objects[0].propSet[0].val, \"cluster/01\")"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_request_handler(self):"},{"line_number":92,"context_line":"        managed_object \u003d \u0027VirtualMachine\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5afe65bd_bd7433fd","line":89,"updated":"2015-06-02 12:19:31.000000000","message":"Order is expected, observed.","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"},{"author":{"_account_id":10327,"name":"Feng Xi Yan","email":"yanfengxi@cn.ibm.com","username":"yanfengxi"},"change_message_id":"c36d2db7e9d1ebe86f63227f55ce2253031cf8d9","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        obj_cont.propSet \u003d [prop]"},{"line_number":87,"context_line":"        response.objects \u003d [obj_cont]"},{"line_number":88,"context_line":"        service.Service._retrieve_properties_ex_decode(response)"},{"line_number":89,"context_line":"        self.assertEqual(response.objects[0].propSet[0].val, \"cluster/01\")"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_request_handler(self):"},{"line_number":92,"context_line":"        managed_object \u003d \u0027VirtualMachine\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_84985f79","line":89,"in_reply_to":"5afe65bd_bd7433fd","updated":"2015-07-03 08:38:26.000000000","message":"Done","commit_id":"ee2484d77e5745567de5663ccb82525e7716c450"}]}
