)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"bd2495b3ea437e6249ab4744725f904c7d59f0a5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Shashank Kumar Shankar \u003cshashank.kumar.shankar@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-07 22:35:48 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Set standard_attr_id as propety in DeclarativeObject."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Set standard_attr_id as property in DeclarativeObject class"},{"line_number":10,"context_line":"to get access to standard_attr_id used during integration of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a71b18c_9657abc9","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":31},"updated":"2016-12-08 14:42:34.000000000","message":"property","commit_id":"75aac5e456b9f30c2eedba65dc1dba475ee0a219"}],"neutron/db/provisioning_blocks.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"d9c247d40a129b521f29319e02f2464b16100355","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                               \"initialization for your type.\") % object_type)"},{"line_number":175,"context_line":"    # obj \u003d (context.session.query(model).enable_eagerloads(False)."},{"line_number":176,"context_line":"    #        filter_by(id\u003dobject_id).first())"},{"line_number":177,"context_line":"    objs \u003d resource_obj.get_objects(context, id\u003dobject_id)"},{"line_number":178,"context_line":"    if objs:"},{"line_number":179,"context_line":"        obj \u003d objs[0]"},{"line_number":180,"context_line":"    if not obj:"},{"line_number":181,"context_line":"        # concurrent delete"},{"line_number":182,"context_line":"        LOG.debug(\"Could not find standard attr ID for object %s.\", object_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_02f7508b","line":179,"range":{"start_line":177,"start_character":3,"end_line":179,"end_character":21},"updated":"2016-11-28 16:16:14.000000000","message":"It can be get_object(), I\u0027m not seeing reason to use get_objects, unless resrouce_obj will be having multiple primary key, not only the ID. Currently, port OVO has ID as primary key, so using get_object is OK.","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"b605af40774c2b5d17106d88d0768b5d7a5bb79a","unresolved":false,"context_lines":[{"line_number":174,"context_line":"                               \"initialization for your type.\") % object_type)"},{"line_number":175,"context_line":"    # obj \u003d (context.session.query(model).enable_eagerloads(False)."},{"line_number":176,"context_line":"    #        filter_by(id\u003dobject_id).first())"},{"line_number":177,"context_line":"    objs \u003d resource_obj.get_objects(context, id\u003dobject_id)"},{"line_number":178,"context_line":"    if objs:"},{"line_number":179,"context_line":"        obj \u003d objs[0]"},{"line_number":180,"context_line":"    if not obj:"},{"line_number":181,"context_line":"        # concurrent delete"},{"line_number":182,"context_line":"        LOG.debug(\"Could not find standard attr ID for object %s.\", object_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_a3b57932","line":179,"range":{"start_line":177,"start_character":3,"end_line":179,"end_character":21},"in_reply_to":"5a74a57a_02f7508b","updated":"2016-11-29 21:21:35.000000000","message":"Done","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"b74fbf18caf0a5a7410dcd6e3e735862eb32e4cf","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # concurrent delete"},{"line_number":182,"context_line":"        LOG.debug(\"Could not find standard attr ID for object %s.\", object_id)"},{"line_number":183,"context_line":"        return"},{"line_number":184,"context_line":"    return obj.standard_attribute_id"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"_deprecate._MovedGlobals()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_6292c44d","line":184,"updated":"2016-11-28 16:14:23.000000000","message":"the name of the attribute should stay the same for backward compatibility.","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"b605af40774c2b5d17106d88d0768b5d7a5bb79a","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # concurrent delete"},{"line_number":182,"context_line":"        LOG.debug(\"Could not find standard attr ID for object %s.\", object_id)"},{"line_number":183,"context_line":"        return"},{"line_number":184,"context_line":"    return obj.standard_attribute_id"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"_deprecate._MovedGlobals()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_c380b54c","line":184,"in_reply_to":"5a74a57a_6292c44d","updated":"2016-11-29 21:21:35.000000000","message":"Done","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"}],"neutron/objects/base.py":[{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"b74fbf18caf0a5a7410dcd6e3e735862eb32e4cf","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        # Instantiate extra filters per class"},{"line_number":256,"context_line":"        cls.extra_filter_names \u003d set(cls.extra_filter_names)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        cls.standard_attribute_id \u003d cls.get_standard_attribute()"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"@six.add_metaclass(DeclarativeObject)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_c211d805","line":258,"range":{"start_line":258,"start_character":8,"end_line":258,"end_character":64},"updated":"2016-11-28 16:14:23.000000000","message":"this should look like line 219:\n\n    setattr(cls, \u0027standard_attr_id\u0027, \n        property(lambda x: x.db_obj.standard_attr_id))\n\nAnd this code should be put somewhere under 252 line.","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"b605af40774c2b5d17106d88d0768b5d7a5bb79a","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        # Instantiate extra filters per class"},{"line_number":256,"context_line":"        cls.extra_filter_names \u003d set(cls.extra_filter_names)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        cls.standard_attribute_id \u003d cls.get_standard_attribute()"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"@six.add_metaclass(DeclarativeObject)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_43ae65e8","line":258,"range":{"start_line":258,"start_character":8,"end_line":258,"end_character":64},"in_reply_to":"5a74a57a_c211d805","updated":"2016-11-29 21:21:35.000000000","message":"Done","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"b74fbf18caf0a5a7410dcd6e3e735862eb32e4cf","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                               standard_attr.HasStandardAttributes))"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    @classmethod"},{"line_number":324,"context_line":"    def get_standard_attribute(cls):"},{"line_number":325,"context_line":"        if cls.has_standard_attributes():"},{"line_number":326,"context_line":"            return standard_attr.HasStandardAttributes.standard_attr_id"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @classmethod"},{"line_number":329,"context_line":"    def modify_fields_to_db(cls, fields):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_c2439811","line":326,"range":{"start_line":324,"start_character":4,"end_line":326,"end_character":71},"updated":"2016-11-28 16:14:23.000000000","message":"if you follow by comment in line 258, this method should not be needed.","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"b605af40774c2b5d17106d88d0768b5d7a5bb79a","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                               standard_attr.HasStandardAttributes))"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    @classmethod"},{"line_number":324,"context_line":"    def get_standard_attribute(cls):"},{"line_number":325,"context_line":"        if cls.has_standard_attributes():"},{"line_number":326,"context_line":"            return standard_attr.HasStandardAttributes.standard_attr_id"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @classmethod"},{"line_number":329,"context_line":"    def modify_fields_to_db(cls, fields):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_63ab61d7","line":326,"range":{"start_line":324,"start_character":4,"end_line":326,"end_character":71},"in_reply_to":"5a74a57a_c2439811","updated":"2016-11-29 21:21:35.000000000","message":"Done","commit_id":"63c6b377f7dfb905f26b427edf4830826d33a0e4"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"7ec8b6ec67689f0b4b1aa0ed08740bab69ee1968","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        if (hasattr(cls, \u0027has_standard_attributes\u0027) and"},{"line_number":253,"context_line":"                cls.has_standard_attributes()):"},{"line_number":254,"context_line":"            setattr(cls, \u0027standard_attr_id\u0027,"},{"line_number":255,"context_line":"                    property(lambda x: x.db_obj.standard_attr_id))"},{"line_number":256,"context_line":"            standardattributes.add_standard_attributes(cls)"},{"line_number":257,"context_line":"        # Instantiate extra filters per class"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_db87f2b2","line":254,"updated":"2016-12-06 17:36:17.000000000","message":"@reviewers: This way to set standard_attr_id fails test cases in QoS Policy object. I tried with just this change in the master and it fails the same test cases. I have included a stack trace: [1]. It seems like the standard_attr_id is set None by get_random_fields() method and hence it can\u0027t set the attribute. I am not clear on what is causing this issue. Please suggest an alternate method to  expose standard_attr_id or a solution to the QoS policy test case to pass. \n\n[1] - https://gist.github.com/shank7485/0bd2b7894d393becffcb4f3b593c7414","commit_id":"21c97f4ce140eca090bd547ace3ad006aa62b622"}],"neutron/tests/unit/objects/qos/test_policy.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"b9b1a6a9d2c234bb91f0ff2217ead7bbab299d72","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_attach_network_nonexistent_policy(self):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        policy_obj \u003d self._make_object(self.obj_fields[0])"},{"line_number":206,"context_line":"        self.assertRaises(n_exc.NetworkQosBindingNotFound,"},{"line_number":207,"context_line":"                          policy_obj.attach_network, self._network[\u0027id\u0027])"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_b7d585ba","line":205,"updated":"2016-12-19 23:12:57.000000000","message":"All the changes in this file doesn\u0027t seem to be related to setattr_id.\nWhat\u0027s the purpose of these changes?","commit_id":"e234eccb719a53d9830b014f41ad98646ce50fe8"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"d31bab2d9a45d2082f865241a9ac36b4b9564df6","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_attach_network_nonexistent_policy(self):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        policy_obj \u003d self._make_object(self.obj_fields[0])"},{"line_number":206,"context_line":"        self.assertRaises(n_exc.NetworkQosBindingNotFound,"},{"line_number":207,"context_line":"                          policy_obj.attach_network, self._network[\u0027id\u0027])"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_9a3c24c1","line":205,"in_reply_to":"1a6eadb0_b7d585ba","updated":"2016-12-20 05:34:23.000000000","message":"This is related to the \u0027attribute not being able to set\u0027 problem we ran into in QoS policy OVO. This change solves that issue.","commit_id":"e234eccb719a53d9830b014f41ad98646ce50fe8"}],"neutron/tests/unit/objects/test_base.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9e06d54ab8f2b2b98175288dedd8ed27f04d4032","unresolved":false,"context_lines":[{"line_number":1257,"context_line":"            standard_attr.StandardAttribute,"},{"line_number":1258,"context_line":"            attrs)"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"    def test_get_standard_attr_id(self):"},{"line_number":1261,"context_line":"        obj \u003d self._make_object(self.obj_fields[0])"},{"line_number":1262,"context_line":"        obj.create()"},{"line_number":1263,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_08444519","line":1260,"updated":"2016-12-08 23:36:40.000000000","message":"I think we could skip the test case right away if self._test_class.has_standard_attributes() \u003d\u003d False.","commit_id":"89be8b082f6e9c37b7823ddb7bb6b560577d2235"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9e06d54ab8f2b2b98175288dedd8ed27f04d4032","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"        new \u003d self._test_class.get_object("},{"line_number":1265,"context_line":"            self.context, **obj._get_composite_keys())"},{"line_number":1266,"context_line":""},{"line_number":1267,"context_line":"        if hasattr(new, \u0027has_standard_attributes\u0027):"},{"line_number":1268,"context_line":"            self.assertIsNotNone(new.standard_attr_id)"},{"line_number":1269,"context_line":"            self.assertEqual("},{"line_number":1270,"context_line":"                new.standard_attr_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_c8396da5","line":1267,"updated":"2016-12-08 23:36:40.000000000","message":"all objects have the attribute; it\u0027s just that some don\u0027t result in True when calling the class method.","commit_id":"89be8b082f6e9c37b7823ddb7bb6b560577d2235"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9e06d54ab8f2b2b98175288dedd8ed27f04d4032","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"            self.assertIsNotNone(new.standard_attr_id)"},{"line_number":1269,"context_line":"            self.assertEqual("},{"line_number":1270,"context_line":"                new.standard_attr_id,"},{"line_number":1271,"context_line":"                standard_attr.HasStandardAttributes.standard_attr_id)"},{"line_number":1272,"context_line":""},{"line_number":1273,"context_line":"    def _make_object(self, fields):"},{"line_number":1274,"context_line":"        fields \u003d get_non_synthetic_fields(self._test_class, fields)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_085b65f7","line":1271,"updated":"2016-12-08 23:36:40.000000000","message":"you compare with a column. I think you should compare with an actual ID as set on the model in db. You may need to fetch it from db after line 1262 not to rely on .db_obj from the object that may be somehow invalid itself.","commit_id":"89be8b082f6e9c37b7823ddb7bb6b560577d2235"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"5885869a72d241978e6d5887cc4ea89aa63aeac3","unresolved":false,"context_lines":[{"line_number":1261,"context_line":""},{"line_number":1262,"context_line":"        if not self._test_class.has_standard_attributes():"},{"line_number":1263,"context_line":"            self.skipTest(\u0027No standard attributes found in test class %r\u0027 %"},{"line_number":1264,"context_line":"                      self._test_class)"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"        obj \u003d self._make_object(self.obj_fields[0])"},{"line_number":1267,"context_line":"        obj.create()"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a71b18c_031cffbf","line":1264,"updated":"2016-12-09 18:42:48.000000000","message":"nit: indentation is a bit interesting here","commit_id":"6d648a8289234bd8187ab156ab78c54f2c30b33c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e1d83ca79e01c9a1d56087409258be940e416dfd","unresolved":false,"context_lines":[{"line_number":1261,"context_line":""},{"line_number":1262,"context_line":"        if not self._test_class.has_standard_attributes():"},{"line_number":1263,"context_line":"            self.skipTest(\u0027No standard attributes found in test class %r\u0027 %"},{"line_number":1264,"context_line":"                      self._test_class)"},{"line_number":1265,"context_line":""},{"line_number":1266,"context_line":"        obj \u003d self._make_object(self.obj_fields[0])"},{"line_number":1267,"context_line":"        obj.create()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_c5fedd37","line":1264,"in_reply_to":"3a71b18c_031cffbf","updated":"2016-12-19 16:35:54.000000000","message":"Unfortunately, all the indention rules (E12x) are ignored by neutron\u0027s tox.ini file.","commit_id":"6d648a8289234bd8187ab156ab78c54f2c30b33c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e1d83ca79e01c9a1d56087409258be940e416dfd","unresolved":false,"context_lines":[{"line_number":1267,"context_line":"        obj.create()"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"        model \u003d self.context.session.query(obj.db_model).filter_by("},{"line_number":1270,"context_line":"            **obj._get_composite_keys()).first()"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"        retrieved_obj \u003d self._test_class.get_object("},{"line_number":1273,"context_line":"            self.context, **obj._get_composite_keys())"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_29376be4","line":1270,"updated":"2016-12-19 16:35:54.000000000","message":"nit: If you used .one() here instead of .first(), then the test would fail if no result was returned (eliminating the need for the assertIsNotNone on L1275), and it would also fail if multiple results were unexpectedly returned, making the test both stricter and shorter.","commit_id":"6d648a8289234bd8187ab156ab78c54f2c30b33c"},{"author":{"_account_id":22774,"name":"Shashank Kumar Shankar","email":"shashank.kumar.shankar@intel.com","username":"skshankar"},"change_message_id":"1db7fa38ef38af350a7d7c7ae3f8f561a1ae8af9","unresolved":false,"context_lines":[{"line_number":1267,"context_line":"        obj.create()"},{"line_number":1268,"context_line":""},{"line_number":1269,"context_line":"        model \u003d self.context.session.query(obj.db_model).filter_by("},{"line_number":1270,"context_line":"            **obj._get_composite_keys()).first()"},{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"        retrieved_obj \u003d self._test_class.get_object("},{"line_number":1273,"context_line":"            self.context, **obj._get_composite_keys())"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a6eadb0_9cc98eaf","line":1270,"in_reply_to":"1a6eadb0_29376be4","updated":"2016-12-19 22:20:09.000000000","message":"Done","commit_id":"6d648a8289234bd8187ab156ab78c54f2c30b33c"}]}
