)]}'
{"nova/compute/api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a62bfa47591ab86e0c652ea4594c86ef9bd4ae29","unresolved":false,"context_lines":[{"line_number":4168,"context_line":""},{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_70bed1d5","line":4171,"updated":"2015-08-04 16:53:34.000000000","message":"Why aren\u0027t you just using the SecurityGroup object above to be completely object-native instead of converting them in place like this?","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f7769e4f00a1be8a0c1b2fefa57878d03b4ce355","unresolved":false,"context_lines":[{"line_number":4168,"context_line":""},{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_caed9226","line":4171,"in_reply_to":"1a4dcd0f_70bed1d5","updated":"2015-08-05 08:11:53.000000000","message":"the problem here is that the security groups do not support lists of instances - https://github.com/openstack/nova/blob/master/nova/objects/security_group.py#L29\nThat support needs to be added and I can do it in a separate patch. Unless I am missing something here","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8b1f1ec127d0e8056ce8d8bd91c8b454d01abb4","unresolved":false,"context_lines":[{"line_number":4168,"context_line":""},{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_fa5da547","line":4171,"in_reply_to":"1a4dcd0f_caed9226","updated":"2015-08-05 14:46:53.000000000","message":"In the bug you point out the commit that was in kilo which assumes the instances coming into the security group API are objects and uses dot notation.  And you have this marked for kilo-backport-potential.\n\n1. I\u0027m worried about how this all landed in kilo and no one ever noticed of there was no test coverage that hit that - we must not have a test in Tempest for updating security groups via nova API?\n\n2. If you want to backport a fix to kilo, I think the RPC API version bumps will make that ugly.  A tactical fix could be to check the type on the instance object in the security group API code and if it\u0027s a dict convert it to an instance object.  Then backport that to stable/kilo.  Then work the change to add InstanceList support to the SecurityGroup object in master and have the RPC API version changes - which you wouldn\u0027t backport to stable.","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b574c3e908508430ed1842e77ab62fb0c29124e7","unresolved":false,"context_lines":[{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"},{"line_number":4175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a54ce2c8","line":4172,"updated":"2015-08-05 14:58:34.000000000","message":"OK, this is the problem - the changes to the compute rpc api and compute manager were confusing me.  Just fix this like in PS1 and backport that, then work on converting this to use an object in master only.\n\nAlso, unit test change/add is in order since this was obviously not caught in tests.","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7c6d7a17100c2230093f4f298621fae71d43c809","unresolved":false,"context_lines":[{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"},{"line_number":4175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_6084885d","line":4172,"in_reply_to":"1a4dcd0f_050cb63f","updated":"2015-08-05 15:04:12.000000000","message":"On second thought wrt the tests, I remember those all being converted to use instance objects for some reason, so maybe it\u0027s prudent to just put a big fat FIXME in those tests and then handle that as part of the master change when we actually use objects in the compute API here.","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a9fbb8a618420083316943ffaa23bf6544308d4e","unresolved":false,"context_lines":[{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"},{"line_number":4175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_e3b97d16","line":4172,"in_reply_to":"1a4dcd0f_6084885d","updated":"2015-08-06 14:03:33.000000000","message":"i have made the changes this method is now a lot simpler.","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c4fda4f626cb99f814d97715a6b37e30b3bc3f56","unresolved":false,"context_lines":[{"line_number":4169,"context_line":"        for instance in security_group[\u0027instances\u0027]:"},{"line_number":4170,"context_line":"            instance \u003d objects.Instance._from_db_object("},{"line_number":4171,"context_line":"                context, objects.Instance(), instance, [])"},{"line_number":4172,"context_line":"            if instance.host is not None:"},{"line_number":4173,"context_line":"                self.compute_rpcapi.refresh_instance_security_rules("},{"line_number":4174,"context_line":"                        context, instance.host, instance)"},{"line_number":4175,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_050cb63f","line":4172,"in_reply_to":"1a4dcd0f_a54ce2c8","updated":"2015-08-05 15:02:16.000000000","message":"These unit tests are wrong also, we should clean them up as part of this - they are mocking out the db.security_group_get call and returning a primitive security group object that has instance objects in the \u0027instances\u0027 field, which is wrong.\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/tests/unit/compute/test_compute.py#n9836","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7a32d0365e8f7a5d91a1c2f6deed2012954bdff4","unresolved":false,"context_lines":[{"line_number":1326,"context_line":""},{"line_number":1327,"context_line":"        \"\"\""},{"line_number":1328,"context_line":"        return self.driver.refresh_security_group_members(security_group_id)"},{"line_number":1329,"context_line":""},{"line_number":1330,"context_line":"    @object_compat"},{"line_number":1331,"context_line":"    @wrap_exception()"},{"line_number":1332,"context_line":"    def refresh_instance_security_rules(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_05c4b68e","line":1329,"updated":"2015-08-05 14:51:56.000000000","message":"Umm, the object_compat decorator here makes this OK to send in dicts....we should clean this all up and send instances in from the compute API at some point, but the bug should be invalid.","commit_id":"13b1d9177c569577af21c8104cbebb603113edd6"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e35261d67fe51f380191b9b41e096e8d7ee1d546","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        expected_args \u003d {\u0027instance\u0027: self.fake_instance_obj}"},{"line_number":331,"context_line":"        self._test_compute_api(\u0027refresh_instance_security_rules\u0027, \u0027cast\u0027,"},{"line_number":332,"context_line":"                expected_args, host\u003d\u0027fake_host\u0027,"},{"line_number":333,"context_line":"                instance\u003dself.fake_instance_obj, version\u003d\u00274.4\u0027)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def test_remove_aggregate_host(self):"},{"line_number":336,"context_line":"        self._test_compute_api(\u0027remove_aggregate_host\u0027, \u0027cast\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_54caa050","line":333,"updated":"2015-08-10 20:00:57.000000000","message":"nit: it\u0027d be nice to have a unit test that checks that we can\u0027t send the 4.4 version and we do the object conversion to a primitive, but that\u0027s not standard practice in testing the RPC APIs generally, so not a blocker - we really only do upper bounds testing with the _test_compute_api common method here.","commit_id":"12fbe6f082ef9b70b89302e15daa12e851e507a7"}]}
