)]}'
{"nova/api/openstack/compute/plugins/v3/servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99eda36435d54d34e6ec0679d441fa07821fc920","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"        instance \u003d self._get_server(context, req, id)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        bdms \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":1209,"context_line":"                    context, instance[\u0027uuid\u0027])"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        try:"},{"line_number":1212,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BGfE%3D","line":1209,"updated":"2013-12-02 15:52:45.000000000","message":"instance should be an object here, so you can do instance.uuid right?","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8f173a2cb0d27e42879a3e8d9f0ca05429cfb8bf","unresolved":false,"context_lines":[{"line_number":1206,"context_line":"        instance \u003d self._get_server(context, req, id)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        bdms \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":1209,"context_line":"                    context, instance[\u0027uuid\u0027])"},{"line_number":1210,"context_line":""},{"line_number":1211,"context_line":"        try:"},{"line_number":1212,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9%2BVM%3D","line":1209,"in_reply_to":"AAAATn%2F%2BGfE%3D","updated":"2013-12-03 21:23:42.000000000","message":"Done","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99eda36435d54d34e6ec0679d441fa07821fc920","unresolved":false,"context_lines":[{"line_number":1215,"context_line":"                if not img:"},{"line_number":1216,"context_line":"                    props \u003d bdms.root_metadata("},{"line_number":1217,"context_line":"                            context, self.compute_api.image_service,"},{"line_number":1218,"context_line":"                            self.compute_api.volume_api)"},{"line_number":1219,"context_line":"                    image_meta \u003d {\u0027properties\u0027: props}"},{"line_number":1220,"context_line":"                else:"},{"line_number":1221,"context_line":"                    src_image \u003d self.compute_api.\\"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BGek%3D","line":1218,"updated":"2013-12-02 15:52:45.000000000","message":"Nice!","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99eda36435d54d34e6ec0679d441fa07821fc920","unresolved":false,"context_lines":[{"line_number":1387,"context_line":"        instance \u003d self._get_server(context, req, id)"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"        bdms \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":1390,"context_line":"                    context, instance[\u0027uuid\u0027])"},{"line_number":1391,"context_line":""},{"line_number":1392,"context_line":"        try:"},{"line_number":1393,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BGec%3D","line":1390,"updated":"2013-12-02 15:52:45.000000000","message":"Same.","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8f173a2cb0d27e42879a3e8d9f0ca05429cfb8bf","unresolved":false,"context_lines":[{"line_number":1387,"context_line":"        instance \u003d self._get_server(context, req, id)"},{"line_number":1388,"context_line":""},{"line_number":1389,"context_line":"        bdms \u003d block_device_obj.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":1390,"context_line":"                    context, instance[\u0027uuid\u0027])"},{"line_number":1391,"context_line":""},{"line_number":1392,"context_line":"        try:"},{"line_number":1393,"context_line":"            if self.compute_api.is_volume_backed_instance(context, instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9%2BVU%3D","line":1390,"in_reply_to":"AAAATn%2F%2BGec%3D","updated":"2013-12-03 21:23:42.000000000","message":"Done","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"}],"nova/compute/manager.py":[{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0a301b75631963e89a4f5003b77fdf958a396ed4","unresolved":false,"context_lines":[{"line_number":4067,"context_line":"        :param dest_check_data: result of check_can_live_migrate_destination"},{"line_number":4068,"context_line":"        :returns: a dict containing migration info"},{"line_number":4069,"context_line":"        \"\"\""},{"line_number":4070,"context_line":"        capi \u003d self.conductor_api"},{"line_number":4071,"context_line":"        instance_p \u003d obj_base.obj_to_primitive(instance)"},{"line_number":4072,"context_line":"        is_volume_backed \u003d self.compute_api.is_volume_backed_instance(ctxt,"},{"line_number":4073,"context_line":"                                                                      instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9SZM%3D","line":4070,"updated":"2013-12-13 01:06:44.000000000","message":"is capi used? If not, can we remove it?","commit_id":"6f113c88f221455fc9d971c4c7cb24e72639d26e"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"0a6fa77d5303ce89cde903e2ccf90558444e26e4","unresolved":false,"context_lines":[{"line_number":4067,"context_line":"        :param dest_check_data: result of check_can_live_migrate_destination"},{"line_number":4068,"context_line":"        :returns: a dict containing migration info"},{"line_number":4069,"context_line":"        \"\"\""},{"line_number":4070,"context_line":"        capi \u003d self.conductor_api"},{"line_number":4071,"context_line":"        instance_p \u003d obj_base.obj_to_primitive(instance)"},{"line_number":4072,"context_line":"        is_volume_backed \u003d self.compute_api.is_volume_backed_instance(ctxt,"},{"line_number":4073,"context_line":"                                                                      instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9QVA%3D","line":4070,"in_reply_to":"AAAATn%2F9SZM%3D","updated":"2013-12-13 13:06:31.000000000","message":"Done","commit_id":"6f113c88f221455fc9d971c4c7cb24e72639d26e"},{"author":{"_account_id":4458,"name":"Shane Wang","email":"shane.wang@intel.com","username":"shane-wang"},"change_message_id":"0a301b75631963e89a4f5003b77fdf958a396ed4","unresolved":false,"context_lines":[{"line_number":4068,"context_line":"        :returns: a dict containing migration info"},{"line_number":4069,"context_line":"        \"\"\""},{"line_number":4070,"context_line":"        capi \u003d self.conductor_api"},{"line_number":4071,"context_line":"        instance_p \u003d obj_base.obj_to_primitive(instance)"},{"line_number":4072,"context_line":"        is_volume_backed \u003d self.compute_api.is_volume_backed_instance(ctxt,"},{"line_number":4073,"context_line":"                                                                      instance)"},{"line_number":4074,"context_line":"        dest_check_data[\u0027is_volume_backed\u0027] \u003d is_volume_backed"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9SZE%3D","line":4071,"updated":"2013-12-13 01:06:44.000000000","message":"ditto for instance_p","commit_id":"6f113c88f221455fc9d971c4c7cb24e72639d26e"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"0a6fa77d5303ce89cde903e2ccf90558444e26e4","unresolved":false,"context_lines":[{"line_number":4068,"context_line":"        :returns: a dict containing migration info"},{"line_number":4069,"context_line":"        \"\"\""},{"line_number":4070,"context_line":"        capi \u003d self.conductor_api"},{"line_number":4071,"context_line":"        instance_p \u003d obj_base.obj_to_primitive(instance)"},{"line_number":4072,"context_line":"        is_volume_backed \u003d self.compute_api.is_volume_backed_instance(ctxt,"},{"line_number":4073,"context_line":"                                                                      instance)"},{"line_number":4074,"context_line":"        dest_check_data[\u0027is_volume_backed\u0027] \u003d is_volume_backed"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9QU8%3D","line":4071,"in_reply_to":"AAAATn%2F9SZE%3D","updated":"2013-12-13 13:06:31.000000000","message":"Done","commit_id":"6f113c88f221455fc9d971c4c7cb24e72639d26e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"890bf9cc1677f10ba9bd32a3855dee979a6c7f39","unresolved":false,"context_lines":[{"line_number":4046,"context_line":"                    dest_check_data)"},{"line_number":4047,"context_line":"        if \u0027migrate_data\u0027 in dest_check_data:"},{"line_number":4048,"context_line":"            migrate_data.update(dest_check_data[\u0027migrate_data\u0027])"},{"line_number":4049,"context_line":"        return migrate_data"},{"line_number":4050,"context_line":""},{"line_number":4051,"context_line":"    @wrap_exception()"},{"line_number":4052,"context_line":"    def check_can_live_migrate_source(self, ctxt, instance, dest_check_data):"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUH%2F%2F8GA%3D","line":4049,"updated":"2014-01-06 14:33:21.000000000","message":"is @object_compat missing?","commit_id":"f45af998f6ca59e89f2d14509b4b22db854e58d5"}],"nova/objects/__init__.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99eda36435d54d34e6ec0679d441fa07821fc920","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    __import__(\u0027nova.objects.security_group\u0027)"},{"line_number":23,"context_line":"    __import__(\u0027nova.objects.migration\u0027)"},{"line_number":24,"context_line":"    __import__(\u0027nova.objects.quotas\u0027)"},{"line_number":25,"context_line":"    __import__(\u0027nova.objects.block_device\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BGUQ%3D","line":25,"updated":"2013-12-02 15:52:45.000000000","message":"I think I would put this in the object patch, but it\u0027s not a huge deal. I\u0027m actually pretty bad about updating this myself :)","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"8f173a2cb0d27e42879a3e8d9f0ca05429cfb8bf","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    __import__(\u0027nova.objects.security_group\u0027)"},{"line_number":23,"context_line":"    __import__(\u0027nova.objects.migration\u0027)"},{"line_number":24,"context_line":"    __import__(\u0027nova.objects.quotas\u0027)"},{"line_number":25,"context_line":"    __import__(\u0027nova.objects.block_device\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9%2BVY%3D","line":25,"in_reply_to":"AAAATn%2F%2BGUQ%3D","updated":"2013-12-03 21:23:42.000000000","message":"I left it here thinking - it\u0027s best to put it there when it\u0027s used...","commit_id":"11f4c4411c3842683a111eeb2c8339a5be694e8a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d833f2cf26b34afb5914fa618ec5c38433ba4dc8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    __import__(\u0027nova.objects.security_group\u0027)"},{"line_number":23,"context_line":"    __import__(\u0027nova.objects.migration\u0027)"},{"line_number":24,"context_line":"    __import__(\u0027nova.objects.quotas\u0027)"},{"line_number":25,"context_line":"    __import__(\u0027nova.objects.block_device\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9gMk%3D","line":25,"updated":"2013-12-10 21:15:37.000000000","message":"This should probably be in the previous set that adds the object, but.. kinda meh.","commit_id":"a73353cdbea78820e2b38ae019b4db2349ad98ad"}],"nova/objects/block_device.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a728d128201e5deb502d374f9e84fd1b461daaf6","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def is_root(self):"},{"line_number":65,"context_line":"        return self.boot_index \u003d\u003d 0"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @property"},{"line_number":68,"context_line":"    def is_volume(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BqIE%3D","line":65,"updated":"2013-11-21 22:31:03.000000000","message":"This will return True if boot_index is None. That\u0027s not what you want is it?","commit_id":"56231f5970433d036c56ef5aafd551b614b2a472"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"44149f107fcd014036eb9dd3d814576d496e54b1","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @property"},{"line_number":64,"context_line":"    def is_root(self):"},{"line_number":65,"context_line":"        return self.boot_index \u003d\u003d 0"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @property"},{"line_number":68,"context_line":"    def is_volume(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bodo%3D","line":65,"in_reply_to":"AAAATn%2F%2BqIE%3D","updated":"2013-11-22 10:10:56.000000000","message":"I\u0027m not sure this is the case even in JavaScript :) None \u003d\u003d 0 is never true. Are you saying that some DBs have 0 as a false bool value. I thought Fileds iron that out?","commit_id":"56231f5970433d036c56ef5aafd551b614b2a472"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a728d128201e5deb502d374f9e84fd1b461daaf6","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @property"},{"line_number":72,"context_line":"    def is_image(self):"},{"line_number":73,"context_line":"        return self.source_type \u003d\u003d \u0027image\u0027"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class BlockDeviceMappingList(base.ObjectListBase, base.NovaObject):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BqH0%3D","line":73,"updated":"2013-11-21 22:31:03.000000000","message":"Kinda the same argument here. Per my comment on the other patch, can we coerce/default these attributes into sane values to remove the ambiguity?","commit_id":"56231f5970433d036c56ef5aafd551b614b2a472"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"44149f107fcd014036eb9dd3d814576d496e54b1","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @property"},{"line_number":72,"context_line":"    def is_image(self):"},{"line_number":73,"context_line":"        return self.source_type \u003d\u003d \u0027image\u0027"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class BlockDeviceMappingList(base.ObjectListBase, base.NovaObject):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2Bocw%3D","line":73,"in_reply_to":"AAAATn%2F%2BqH0%3D","updated":"2013-11-22 10:10:56.000000000","message":"Makes sense.","commit_id":"56231f5970433d036c56ef5aafd551b614b2a472"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a728d128201e5deb502d374f9e84fd1b461daaf6","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        except StopIteration:"},{"line_number":95,"context_line":"            return None"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def root_metadata(self, context, image_api, volume_api):"},{"line_number":98,"context_line":"        root_bdm \u003d self.root_bdm()"},{"line_number":99,"context_line":"        if not root_bdm:"},{"line_number":100,"context_line":"            return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BqHg%3D","line":97,"updated":"2013-11-21 22:31:03.000000000","message":"I\u0027m not sure how I feel about this. It kinda makes the object dependent on an external thing to the point of maybe changing behavior if one of those things changes one day. Technically that would require a version change to the object, but we\u0027d be so insulated from that that we wouldn\u0027t really know. Although, I guess as long as these aren\u0027t (ever) @remotable then it\u0027s not something that would affect an upgrade situation, so.. meh.","commit_id":"56231f5970433d036c56ef5aafd551b614b2a472"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"44149f107fcd014036eb9dd3d814576d496e54b1","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        except StopIteration:"},{"line_number":95,"context_line":"            return None"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def root_metadata(self, context, image_api, volume_api):"},{"line_number":98,"context_line":"        root_bdm \u003d self.root_bdm()"},{"line_number":99,"context_line":"        if not root_bdm:"},{"line_number":100,"context_line":"            return {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2BoZ0%3D","line":97,"in_reply_to":"AAAATn%2F%2BqHg%3D","updated":"2013-11-22 10:10:56.000000000","message":"These will never be remotable - and this seemed like a nice place to put such a method - I think if you see how it\u0027s used - it makes objects actually provide a nice API (if you\u0027re into that sort of thing :) ). And besides - the same argument could be had for any code that uses objects - one could even say that putting it here makes it \"more\" likely to be changed with upgrades in mind in the future.","commit_id":"56231f5970433d036c56ef5aafd551b614b2a472"}]}
