)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"40dd36bdb460784afeb53562e49bd7757b6436ac","unresolved":false,"context_lines":[{"line_number":10,"context_line":"compute manager sends objects for new version and sents primitivized data for"},{"line_number":11,"context_line":"older versions."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Related to blueprint kilo-objects"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I11a28cd3b2eb98b42d78f9327ed6b38dc2bc8f30"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9a0c5dc1_d920e49d","line":13,"updated":"2015-05-13 19:55:02.000000000","message":"liberty-objects","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"}],"nova/compute/manager.py":[{"author":{"_account_id":11530,"name":"zhangtralon","email":"ztralon@hotmail.com","username":"zhangtralon"},"change_message_id":"6a9ce8a7a2450a5fec374f6bd93dadf0b3811d18","unresolved":false,"context_lines":[{"line_number":3938,"context_line":"            # Code downstream may expect extra_specs to be populated since it"},{"line_number":3939,"context_line":"            # is receiving an object, so lookup the flavor to ensure this."},{"line_number":3940,"context_line":"            if (not instance_type or"},{"line_number":3941,"context_line":"                # NOTE(chaochin): Remove this in v4.0 of the RPC API"},{"line_number":3942,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3943,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3944,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa53dc9_4ed1f2cc","line":3941,"updated":"2015-04-07 12:36:05.000000000","message":"I think that the annotation should not be mixed together with the code. thanks","commit_id":"e62a06834a12b725829ca48e66e0825987ab9b09"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8a0122060194cdb48ad5d04df7b6e3ee4c0aa6d4","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"            if (not instance_type or"},{"line_number":3662,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3663,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3664,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"            network_info \u003d self.network_api.get_instance_nw_info(context,"},{"line_number":3667,"context_line":"                                                                 instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a0c5dc1_21c0f829","side":"PARENT","line":3664,"updated":"2015-05-13 15:30:23.000000000","message":"You can\u0027t remove this until v5 of the RPC API. Older nodes will still be sending non-object Flavors here, and you must be able to handle it.","commit_id":"11f49af663ba5608a519d14bad5b872503da3427"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"ad35924e7a147c53f5b448f10e76636e8da79188","unresolved":false,"context_lines":[{"line_number":3661,"context_line":"            if (not instance_type or"},{"line_number":3662,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3663,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3664,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"            network_info \u003d self.network_api.get_instance_nw_info(context,"},{"line_number":3667,"context_line":"                                                                 instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a0c5dc1_aa85dd07","side":"PARENT","line":3664,"in_reply_to":"9a0c5dc1_21c0f829","updated":"2015-05-13 16:16:57.000000000","message":"Done","commit_id":"11f49af663ba5608a519d14bad5b872503da3427"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"40dd36bdb460784afeb53562e49bd7757b6436ac","unresolved":false,"context_lines":[{"line_number":643,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":644,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.1\u0027)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    # How long to wait in seconds before re-issuing a shutdown"},{"line_number":649,"context_line":"    # signal to a instance during power off.  The overall"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_3e47e64c","line":646,"updated":"2015-05-13 19:55:02.000000000","message":"Surely we need to do something on the server side besides upping the version, like adding code to handle calls from old/new clients, no?","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"4b857911ac77f4db88c4da89397ba7fe4685c6a0","unresolved":false,"context_lines":[{"line_number":643,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":644,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.1\u0027)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    # How long to wait in seconds before re-issuing a shutdown"},{"line_number":649,"context_line":"    # signal to a instance during power off.  The overall"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_2fffb2ab","line":646,"in_reply_to":"9a0c5dc1_0f006e00","updated":"2015-05-13 20:59:47.000000000","message":"I see your point. For liberty no problems, but with kilo backports it could become a problem.\n\nWe still need to fix that prep_resize sends a primitive to conductor for retries, but thats a completely different issue. I\u0027ll go file a bug and work on some fix for it :)","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"55bccf536e382659f40aef7c5807ee62871519e8","unresolved":false,"context_lines":[{"line_number":643,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":644,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.1\u0027)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    # How long to wait in seconds before re-issuing a shutdown"},{"line_number":649,"context_line":"    # signal to a instance during power off.  The overall"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_0f006e00","line":646,"in_reply_to":"9a0c5dc1_144e436f","updated":"2015-05-13 20:50:14.000000000","message":"Because that\u0027s how we denote changes. Our client *has* to be able to still speak 4.0 because that\u0027s what kilo nodes that implement and we have to maintain the ability to speak to them. Yes, it means that currently they probably don\u0027t care if we send them an object, but who knows what we\u0027ll backport in the future that may make some assumption.\n\nYou\u0027re right to be suspicious, it can be a signal of something that is wrong, but here I don\u0027t think it is.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7ab4bb541f8e0f14e883eea1095fe51aaf75e6b7","unresolved":false,"context_lines":[{"line_number":643,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":644,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.1\u0027)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    # How long to wait in seconds before re-issuing a shutdown"},{"line_number":649,"context_line":"    # signal to a instance during power off.  The overall"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_99214c50","line":646,"in_reply_to":"9a0c5dc1_3e47e64c","updated":"2015-05-13 20:06:53.000000000","message":"It was already doing the thing necessary to handle the older clients. If it works without making any changes, then we should be good. There are probably some cleanups around using non-dict access to the flavor, which will bring the always-convert-to-objects part.\n\nWe could ensure that prep_resize() converts older stuff it gets into an object for the call to resize_instance(), but resize_instance() has to tolerate the old way as well anyway, so it\u0027s not really hurting anything until we need to use something object-like in prep_resize().","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"2d0e9ab215755c334bdff70b9fa4527131b3c85f","unresolved":false,"context_lines":[{"line_number":643,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":644,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"    target \u003d messaging.Target(version\u003d\u00274.1\u0027)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"    # How long to wait in seconds before re-issuing a shutdown"},{"line_number":649,"context_line":"    # signal to a instance during power off.  The overall"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_144e436f","line":646,"in_reply_to":"9a0c5dc1_99214c50","updated":"2015-05-13 20:42:51.000000000","message":"Ok, but then why do a version bump at all? Obviously 4.0 has the same support and as a bonus, this would make the client code much easier since we no longer need to handle backwards compat.\n\nMaybe it\u0027s just me, but I always get suspicious when I see a server version bump with no other changes in it.\n\nNot related to this change, but one existing pitfall and a reason for fixing prep_resize that I just realized is:\n\nIf we bump the conductor task major version now the retry code in prep_resize would still send a primitive back to it and the compat code for handling flavor as a primitive in conductor migrate_server() would then be gone.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5648b21a8a7ad9152ef5c7a15576a2513a2571a7","unresolved":false,"context_lines":[{"line_number":3516,"context_line":"            raise exception.MigrationError(reason\u003dmsg)"},{"line_number":3517,"context_line":""},{"line_number":3518,"context_line":"        same_host \u003d instance.host \u003d\u003d self.host"},{"line_number":3519,"context_line":"        # if the flavor IDs match, it\u0027s migrate; otherwise resize"},{"line_number":3520,"context_line":"        if same_host and instance_type[\u0027id\u0027] \u003d\u003d instance[\u0027instance_type_id\u0027]:"},{"line_number":3521,"context_line":"            # check driver whether support migrate to same host"},{"line_number":3522,"context_line":"            if not self.driver.capabilities[\u0027supports_migrate_to_same_host\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_c79fd8b2","line":3519,"updated":"2015-05-17 19:54:19.000000000","message":"ditto on dot notation","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"4297b9bf3e359c104431c8bf621427f9d7c072fa","unresolved":false,"context_lines":[{"line_number":3516,"context_line":"            raise exception.MigrationError(reason\u003dmsg)"},{"line_number":3517,"context_line":""},{"line_number":3518,"context_line":"        same_host \u003d instance.host \u003d\u003d self.host"},{"line_number":3519,"context_line":"        # if the flavor IDs match, it\u0027s migrate; otherwise resize"},{"line_number":3520,"context_line":"        if same_host and instance_type[\u0027id\u0027] \u003d\u003d instance[\u0027instance_type_id\u0027]:"},{"line_number":3521,"context_line":"            # check driver whether support migrate to same host"},{"line_number":3522,"context_line":"            if not self.driver.capabilities[\u0027supports_migrate_to_same_host\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_0fd0b4c8","line":3519,"in_reply_to":"7a016987_c79fd8b2","updated":"2015-05-26 14:14:53.000000000","message":"Done","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5648b21a8a7ad9152ef5c7a15576a2513a2571a7","unresolved":false,"context_lines":[{"line_number":3590,"context_line":"                        exc_info, instance_type, quotas, request_spec,"},{"line_number":3591,"context_line":"                        filter_properties)"},{"line_number":3592,"context_line":"            finally:"},{"line_number":3593,"context_line":"                extra_usage_info \u003d dict("},{"line_number":3594,"context_line":"                        new_instance_type\u003dinstance_type[\u0027name\u0027],"},{"line_number":3595,"context_line":"                        new_instance_type_id\u003dinstance_type[\u0027id\u0027])"},{"line_number":3596,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_e79c14c2","line":3593,"updated":"2015-05-17 19:54:19.000000000","message":"If instance_type is a Flavor object now, we should use dot notation when accessing the attributes.","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"4297b9bf3e359c104431c8bf621427f9d7c072fa","unresolved":false,"context_lines":[{"line_number":3590,"context_line":"                        exc_info, instance_type, quotas, request_spec,"},{"line_number":3591,"context_line":"                        filter_properties)"},{"line_number":3592,"context_line":"            finally:"},{"line_number":3593,"context_line":"                extra_usage_info \u003d dict("},{"line_number":3594,"context_line":"                        new_instance_type\u003dinstance_type[\u0027name\u0027],"},{"line_number":3595,"context_line":"                        new_instance_type_id\u003dinstance_type[\u0027id\u0027])"},{"line_number":3596,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_6f4a88ae","line":3593,"in_reply_to":"7a016987_e79c14c2","updated":"2015-05-26 14:14:53.000000000","message":"Done","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5648b21a8a7ad9152ef5c7a15576a2513a2571a7","unresolved":false,"context_lines":[{"line_number":3658,"context_line":"                                                   quotas\u003dquotas):"},{"line_number":3659,"context_line":"            # Code downstream may expect extra_specs to be populated since it"},{"line_number":3660,"context_line":"            # is receiving an object, so lookup the flavor to ensure this."},{"line_number":3661,"context_line":"            if (not instance_type or"},{"line_number":3662,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3663,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3664,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_27bb4c29","line":3661,"updated":"2015-05-17 19:54:19.000000000","message":"The type check here could be removed.","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"6d6c2b4a11035f15515b4d73fcec7ac5b0318517","unresolved":false,"context_lines":[{"line_number":3658,"context_line":"                                                   quotas\u003dquotas):"},{"line_number":3659,"context_line":"            # Code downstream may expect extra_specs to be populated since it"},{"line_number":3660,"context_line":"            # is receiving an object, so lookup the flavor to ensure this."},{"line_number":3661,"context_line":"            if (not instance_type or"},{"line_number":3662,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3663,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3664,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_5450dfd3","line":3661,"in_reply_to":"7a016987_27bb4c29","updated":"2015-05-21 14:06:47.000000000","message":"As Dan pointed out earlier on, this needs to stay a little longer. A kilo compute could still call this with instance_type being a primitive.","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"4297b9bf3e359c104431c8bf621427f9d7c072fa","unresolved":false,"context_lines":[{"line_number":3658,"context_line":"                                                   quotas\u003dquotas):"},{"line_number":3659,"context_line":"            # Code downstream may expect extra_specs to be populated since it"},{"line_number":3660,"context_line":"            # is receiving an object, so lookup the flavor to ensure this."},{"line_number":3661,"context_line":"            if (not instance_type or"},{"line_number":3662,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3663,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3664,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_4fc6ac17","line":3661,"in_reply_to":"7a016987_3d288a32","updated":"2015-05-26 14:14:53.000000000","message":"Done","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1774ff19f55dc73410556abe76b47f0426944b7","unresolved":false,"context_lines":[{"line_number":3658,"context_line":"                                                   quotas\u003dquotas):"},{"line_number":3659,"context_line":"            # Code downstream may expect extra_specs to be populated since it"},{"line_number":3660,"context_line":"            # is receiving an object, so lookup the flavor to ensure this."},{"line_number":3661,"context_line":"            if (not instance_type or"},{"line_number":3662,"context_line":"                not isinstance(instance_type, objects.Flavor)):"},{"line_number":3663,"context_line":"                instance_type \u003d objects.Flavor.get_by_id("},{"line_number":3664,"context_line":"                    context, migration[\u0027new_instance_type_id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_3d288a32","line":3661,"in_reply_to":"7a016987_5450dfd3","updated":"2015-05-22 17:26:49.000000000","message":"OK, then let\u0027s add a TODO for when we can remove this.","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44a360ef0e524f6e04d2e69c29957b8300fd6d50","unresolved":false,"context_lines":[{"line_number":3637,"context_line":"                                                  instance\u003dinstance)"},{"line_number":3638,"context_line":"        with self._error_out_instance_on_exception(context, instance,"},{"line_number":3639,"context_line":"                                                   quotas\u003dquotas):"},{"line_number":3640,"context_line":"            # TODO(chaochin) Remove this until v5 RPC API"},{"line_number":3641,"context_line":"            # Code downstream may expect extra_specs to be populated since it"},{"line_number":3642,"context_line":"            # is receiving an object, so lookup the flavor to ensure this."},{"line_number":3643,"context_line":"            if (not instance_type or"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_e520cd4b","line":3640,"updated":"2015-06-05 18:07:34.000000000","message":"This could probably be worded more clearly as:\n\n\"Remove the type check once we drop compute RPC v4.\"","commit_id":"4a1f06af688fbe7ba4e67eea40c0a8070b0509d9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"44a360ef0e524f6e04d2e69c29957b8300fd6d50","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"                                context, instance, bdms\u003dbdms)"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values(context,"},{"line_number":3667,"context_line":"                                            instance, clean_shutdown)"},{"line_number":3668,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":3669,"context_line":"                    context, instance, migration.dest_host,"},{"line_number":3670,"context_line":"                    instance_type, network_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afb71cf_85eeb9ea","line":3667,"updated":"2015-06-05 18:07:34.000000000","message":"Since migrate_disk_and_power_off are getting a Flavor object now we could update the virt driver methods to use dot notation when accessing fields on the object, I\u0027d save that for a follow on change:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/driver.py#n6343","commit_id":"4a1f06af688fbe7ba4e67eea40c0a8070b0509d9"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"6a6e8c1d385bf5eadf6f15ea324f2b33cb65b709","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"                                context, instance, bdms\u003dbdms)"},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values(context,"},{"line_number":3667,"context_line":"                                            instance, clean_shutdown)"},{"line_number":3668,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":3669,"context_line":"                    context, instance, migration.dest_host,"},{"line_number":3670,"context_line":"                    instance_type, network_info,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa32b979_df2d1047","line":3667,"in_reply_to":"3afb71cf_85eeb9ea","updated":"2015-06-17 17:16:58.000000000","message":"I make code change here https://review.openstack.org/#/c/192786/","commit_id":"4a1f06af688fbe7ba4e67eea40c0a8070b0509d9"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":607,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":608,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":609,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":610,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"},{"line_number":611,"context_line":"            version \u003d \u00273.38\u0027"},{"line_number":612,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":613,"context_line":"            del msg_args[\u0027clean_shutdown\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5fcfd455","line":610,"updated":"2015-03-09 23:12:23.000000000","message":"I think it would be better if we remove L598 and just call:\n\n objects_base.obj_to_primitive(instance_type)\n\nhere, that way we only primitivize flavor if we can\u0027t send the new version.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":607,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":608,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":609,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":610,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"},{"line_number":611,"context_line":"            version \u003d \u00273.38\u0027"},{"line_number":612,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":613,"context_line":"            del msg_args[\u0027clean_shutdown\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_c051db0f","line":610,"in_reply_to":"9a80dd14_5fcfd455","updated":"2015-03-11 10:08:19.000000000","message":"Done","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance, \u0027migration\u0027: migration,"},{"line_number":711,"context_line":"                    \u0027image\u0027: image, \u0027reservations\u0027: reservations,"},{"line_number":712,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":713,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":714,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":715,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_3fe06028","line":713,"updated":"2015-03-09 23:12:23.000000000","message":"This part on clean_shutdown seems unrelated to this patch and should be addressed in a separate patch.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"1e83736815d66938fdc20eb0445beb87ecda2a4d","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance, \u0027migration\u0027: migration,"},{"line_number":711,"context_line":"                    \u0027image\u0027: image, \u0027reservations\u0027: reservations,"},{"line_number":712,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":713,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":714,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":715,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_6dbd5ad7","line":713,"in_reply_to":"9a80dd14_23762a3f","updated":"2015-03-12 02:37:43.000000000","message":"Assuming that we do not make change for clean_shutdown. I feel the best change will probably looks like http://paste.openstack.org/show/191736/","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance, \u0027migration\u0027: migration,"},{"line_number":711,"context_line":"                    \u0027image\u0027: image, \u0027reservations\u0027: reservations,"},{"line_number":712,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":713,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":714,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":715,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_82a0cba6","line":713,"in_reply_to":"9a80dd14_3fe06028","updated":"2015-03-11 10:08:19.000000000","message":"The original code does not add clean_shutdown at the beginning. Its style is opposite with instance_type. I feel the code looks weird, if we do not change it.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"af0a15d8df8ac3fe29eee6cfd49aa0582f3928f2","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance, \u0027migration\u0027: migration,"},{"line_number":711,"context_line":"                    \u0027image\u0027: image, \u0027reservations\u0027: reservations,"},{"line_number":712,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":713,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":714,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":715,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_23762a3f","line":713,"in_reply_to":"9a80dd14_82a0cba6","updated":"2015-03-11 17:30:29.000000000","message":"I\u0027m not sure I understand, but I\u0027m saying the add of clean_shutdown is not related to this patch \"Make resize api of compute manager to send flavor object\"\n\nIs the add of clean_shutdown done to address a bug? If so, a separate patch should be created for that bug.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":713,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":714,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":715,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"},{"line_number":717,"context_line":"            version \u003d \u00273.37\u0027"},{"line_number":718,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":719,"context_line":"            del msg_args[\u0027clean_shutdown\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ff0b287a","line":716,"updated":"2015-03-09 23:12:23.000000000","message":"Similar comment, remove L709 so we only primitivize flavor in this case. The function objects_base.obj_to_primitive() is recommended for primitivizing objects (jsonutils was the old way).","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":713,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":714,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":715,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"},{"line_number":717,"context_line":"            version \u003d \u00273.37\u0027"},{"line_number":718,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":719,"context_line":"            del msg_args[\u0027clean_shutdown\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_005cd324","line":716,"in_reply_to":"9a80dd14_ff0b287a","updated":"2015-03-11 10:08:19.000000000","message":"Done","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":716,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d instance_type_p"},{"line_number":717,"context_line":"            version \u003d \u00273.37\u0027"},{"line_number":718,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":719,"context_line":"            del msg_args[\u0027clean_shutdown\u0027]"},{"line_number":720,"context_line":"            version \u003d \u00273.0\u0027"},{"line_number":721,"context_line":"        cctxt \u003d self.client.prepare(server\u003d_compute_host(None, instance),"},{"line_number":722,"context_line":"                version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_df64a4ba","line":719,"updated":"2015-03-09 23:12:23.000000000","message":"Same comment.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"72ead1e8b78407db0256f7680a980f36605d31be","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance, \u0027migration\u0027: migration,"},{"line_number":710,"context_line":"                    \u0027image\u0027: image, \u0027reservations\u0027: reservations,"},{"line_number":711,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":712,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":713,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":714,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":715,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d objects_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_5963f440","line":712,"updated":"2015-03-12 05:15:48.000000000","message":"Okay, I understand now. The clean_shutdown is a message arg for versions 3.37 and newer. So if you didn\u0027t do it this way, you would have to add the arg in two places instead of removing it in one. I think what you have here makes sense. Sorry about that.","commit_id":"ce44acee5f5d55e69fb4e88fd144c516f18a5275"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"9373a46493c3e61344667414927143230656eec5","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance, \u0027migration\u0027: migration,"},{"line_number":710,"context_line":"                    \u0027image\u0027: image, \u0027reservations\u0027: reservations,"},{"line_number":711,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":712,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown}"},{"line_number":713,"context_line":"        version \u003d \u00273.40\u0027"},{"line_number":714,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":715,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d objects_base.obj_to_primitive("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_342ba7ec","line":712,"in_reply_to":"9a80dd14_5963f440","updated":"2015-03-12 05:57:22.000000000","message":"That is fine. I made too many mistakes in patch set 2, since I was in hurry to go home at that time. It\u0027s lucky that you caught all those mistakes. Sorry for occupying so much of your time.","commit_id":"ce44acee5f5d55e69fb4e88fd144c516f18a5275"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e30689e67789038e90bd428a1a5e7bbe201d3fa","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                    clean_shutdown\u003dTrue):"},{"line_number":567,"context_line":"        # TODO(danms): This needs to be fixed for objects!"},{"line_number":568,"context_line":"        instance_type_p \u003d jsonutils.to_primitive(instance_type)"},{"line_number":569,"context_line":"        image_p \u003d jsonutils.to_primitive(image)"},{"line_number":570,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance,"},{"line_number":571,"context_line":"                    \u0027instance_type\u0027: instance_type_p,"},{"line_number":572,"context_line":"                    \u0027image\u0027: image_p,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a0c5dc1_55aba2d6","side":"PARENT","line":569,"updated":"2015-05-13 17:04:26.000000000","message":"Image is not a NovaObject here, so you should be leaving the to_primitive() I think. The comment was just referring to the instance_type line.","commit_id":"11f49af663ba5608a519d14bad5b872503da3427"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"b0e5cbe493afb5accbe62cfef6458cade2230520","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                    clean_shutdown\u003dTrue):"},{"line_number":567,"context_line":"        # TODO(danms): This needs to be fixed for objects!"},{"line_number":568,"context_line":"        instance_type_p \u003d jsonutils.to_primitive(instance_type)"},{"line_number":569,"context_line":"        image_p \u003d jsonutils.to_primitive(image)"},{"line_number":570,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance,"},{"line_number":571,"context_line":"                    \u0027instance_type\u0027: instance_type_p,"},{"line_number":572,"context_line":"                    \u0027image\u0027: image_p,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a0c5dc1_c0234da6","side":"PARENT","line":569,"in_reply_to":"9a0c5dc1_55aba2d6","updated":"2015-05-13 18:37:46.000000000","message":"Thanks! I feel I became a little muddled today. I was not attempting to modify \u0027image\u0027 in this commit at beginning. Not sure why I did this change today...","commit_id":"11f49af663ba5608a519d14bad5b872503da3427"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e30689e67789038e90bd428a1a5e7bbe201d3fa","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        3.x for Juno compatibility. All new changes should go against 4.x."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        * 4.0  - Remove 3.x compatibility"},{"line_number":300,"context_line":"        * 4.1  - Make prep_resize() and resize_instance() send object"},{"line_number":301,"context_line":"    \u0027\u0027\u0027"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a0c5dc1_957fda65","line":300,"range":{"start_line":300,"start_character":63,"end_line":300,"end_character":69},"updated":"2015-05-13 17:04:26.000000000","message":"They already send Instance objects, so please say \"Flavor object\" here.","commit_id":"981994f19d6a153051e339e1ee0fd9420ca999f8"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"b0e5cbe493afb5accbe62cfef6458cade2230520","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        3.x for Juno compatibility. All new changes should go against 4.x."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        * 4.0  - Remove 3.x compatibility"},{"line_number":300,"context_line":"        * 4.1  - Make prep_resize() and resize_instance() send object"},{"line_number":301,"context_line":"    \u0027\u0027\u0027"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a0c5dc1_2d190289","line":300,"in_reply_to":"9a0c5dc1_957fda65","updated":"2015-05-13 18:37:46.000000000","message":"Done","commit_id":"981994f19d6a153051e339e1ee0fd9420ca999f8"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"40dd36bdb460784afeb53562e49bd7757b6436ac","unresolved":false,"context_lines":[{"line_number":669,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":670,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown,"},{"line_number":671,"context_line":"        }"},{"line_number":672,"context_line":"        version \u003d \u00274.1\u0027"},{"line_number":673,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":674,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d objects_base.obj_to_primitive("},{"line_number":675,"context_line":"                                            instance_type)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_3e16c6f1","line":672,"updated":"2015-05-13 19:55:02.000000000","message":"I think we can do without this change because instance already has the new flavor set, see https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L3541\n\nIf we instead modify the server side to use \u0027new_flavor\u0027 from the instance object we can do away with the instance_type parameter eventually.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7ab4bb541f8e0f14e883eea1095fe51aaf75e6b7","unresolved":false,"context_lines":[{"line_number":669,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":670,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown,"},{"line_number":671,"context_line":"        }"},{"line_number":672,"context_line":"        version \u003d \u00274.1\u0027"},{"line_number":673,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":674,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d objects_base.obj_to_primitive("},{"line_number":675,"context_line":"                                            instance_type)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_99f94c83","line":672,"in_reply_to":"9a0c5dc1_3e16c6f1","updated":"2015-05-13 20:06:53.000000000","message":"You mean instead of converting the param to an object, deprecate the use entirely and just use the new_flavor on the instance until we fully remove this param?\n\nI guess that\u0027s okay. It\u0027s more change, so I\u0027m not sure how I feel about it...","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"55bccf536e382659f40aef7c5807ee62871519e8","unresolved":false,"context_lines":[{"line_number":669,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":670,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown,"},{"line_number":671,"context_line":"        }"},{"line_number":672,"context_line":"        version \u003d \u00274.1\u0027"},{"line_number":673,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":674,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d objects_base.obj_to_primitive("},{"line_number":675,"context_line":"                                            instance_type)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_cf20169e","line":672,"in_reply_to":"9a0c5dc1_741c5f13","updated":"2015-05-13 20:50:14.000000000","message":"It should be fine, but I haven\u0027t gone through to convince myself that it\u0027s okay. We need to do one or the other and this is easier to verify I think.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"2d0e9ab215755c334bdff70b9fa4527131b3c85f","unresolved":false,"context_lines":[{"line_number":669,"context_line":"                    \u0027instance_type\u0027: instance_type,"},{"line_number":670,"context_line":"                    \u0027clean_shutdown\u0027: clean_shutdown,"},{"line_number":671,"context_line":"        }"},{"line_number":672,"context_line":"        version \u003d \u00274.1\u0027"},{"line_number":673,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":674,"context_line":"            msg_args[\u0027instance_type\u0027] \u003d objects_base.obj_to_primitive("},{"line_number":675,"context_line":"                                            instance_type)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_741c5f13","line":672,"in_reply_to":"9a0c5dc1_99f94c83","updated":"2015-05-13 20:42:51.000000000","message":"Yes, that\u0027s what I had in mind.\n\nI dunno, maybe I\u0027m overthinking it.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def setUp(self):"},{"line_number":40,"context_line":"        super(ComputeRpcAPITestCase, self).setUp()"},{"line_number":41,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":42,"context_line":"        flavor_attr \u003d {}"},{"line_number":43,"context_line":"        self.fake_flavor_obj \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":44,"context_line":"                                                           **flavor_attr)"},{"line_number":45,"context_line":"        self.fake_flavor \u003d jsonutils.to_primitive(self.fake_flavor_obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ffe7a8a9","line":42,"updated":"2015-03-09 23:12:23.000000000","message":"You don\u0027t need this.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def setUp(self):"},{"line_number":40,"context_line":"        super(ComputeRpcAPITestCase, self).setUp()"},{"line_number":41,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":42,"context_line":"        flavor_attr \u003d {}"},{"line_number":43,"context_line":"        self.fake_flavor_obj \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":44,"context_line":"                                                           **flavor_attr)"},{"line_number":45,"context_line":"        self.fake_flavor \u003d jsonutils.to_primitive(self.fake_flavor_obj)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_0fafa42c","line":42,"in_reply_to":"9a80dd14_ffe7a8a9","updated":"2015-03-11 10:08:19.000000000","message":"Done","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":42,"context_line":"        flavor_attr \u003d {}"},{"line_number":43,"context_line":"        self.fake_flavor_obj \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":44,"context_line":"                                                           **flavor_attr)"},{"line_number":45,"context_line":"        self.fake_flavor \u003d jsonutils.to_primitive(self.fake_flavor_obj)"},{"line_number":46,"context_line":"        instance_attr \u003d {\u0027host\u0027: \u0027fake_host\u0027,"},{"line_number":47,"context_line":"                         \u0027instance_type_id\u0027: self.fake_flavor_obj[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_9ff6ac5b","line":44,"updated":"2015-03-09 23:12:23.000000000","message":"You don\u0027t need **flavor_attr, you can just pass the context only.","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.context \u003d context.get_admin_context()"},{"line_number":42,"context_line":"        flavor_attr \u003d {}"},{"line_number":43,"context_line":"        self.fake_flavor_obj \u003d fake_flavor.fake_flavor_obj(self.context,"},{"line_number":44,"context_line":"                                                           **flavor_attr)"},{"line_number":45,"context_line":"        self.fake_flavor \u003d jsonutils.to_primitive(self.fake_flavor_obj)"},{"line_number":46,"context_line":"        instance_attr \u003d {\u0027host\u0027: \u0027fake_host\u0027,"},{"line_number":47,"context_line":"                         \u0027instance_type_id\u0027: self.fake_flavor_obj[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_2fac6835","line":44,"in_reply_to":"9a80dd14_9ff6ac5b","updated":"2015-03-11 10:08:19.000000000","message":"Done","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        self.flags(compute\u003d\u00273.40\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":336,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027,"},{"line_number":337,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":338,"context_line":"                instance_type\u003dself.fake_instance_obj,"},{"line_number":339,"context_line":"                image\u003d\u0027fake_image\u0027, host\u003d\u0027host\u0027,"},{"line_number":340,"context_line":"                reservations\u003dlist(\u0027fake_res\u0027),"},{"line_number":341,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_df502434","line":338,"updated":"2015-03-09 23:12:23.000000000","message":"I think you mean:\n\n instance_type\u003dself.fake_flavor_obj","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        self.flags(compute\u003d\u00273.40\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":336,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027,"},{"line_number":337,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":338,"context_line":"                instance_type\u003dself.fake_instance_obj,"},{"line_number":339,"context_line":"                image\u003d\u0027fake_image\u0027, host\u003d\u0027host\u0027,"},{"line_number":340,"context_line":"                reservations\u003dlist(\u0027fake_res\u0027),"},{"line_number":341,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_0f76c4d8","line":338,"in_reply_to":"9a80dd14_df502434","updated":"2015-03-11 10:08:19.000000000","message":"Done","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"40dd36bdb460784afeb53562e49bd7757b6436ac","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        self.flags(compute\u003d\u00274.0\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":305,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027,"},{"line_number":306,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":307,"context_line":"                instance_type\u003dself.fake_flavor,"},{"line_number":308,"context_line":"                image\u003d\u0027fake_image\u0027, host\u003d\u0027host\u0027,"},{"line_number":309,"context_line":"                reservations\u003dlist(\u0027fake_res\u0027),"},{"line_number":310,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_deb68a89","line":307,"updated":"2015-05-13 19:55:02.000000000","message":"This should be self.fake_flavor_obj I think. Otherwise, how do we test that the conversion to primitive works?","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"40dd36bdb460784afeb53562e49bd7757b6436ac","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"},{"line_number":311,"context_line":"                filter_properties\u003d{\u0027fakeprop\u0027: \u0027fakeval\u0027},"},{"line_number":312,"context_line":"                node\u003d\u0027node\u0027, clean_shutdown\u003dTrue, version\u003d\u00274.0\u0027)"},{"line_number":313,"context_line":"        self.flags(compute\u003d\u00274.1\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":314,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027,"},{"line_number":315,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":316,"context_line":"                instance_type\u003dself.fake_flavor,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_7efe7e39","line":313,"updated":"2015-05-13 19:55:02.000000000","message":"I think we usually do this the other way around. First test the current version, then cap and test the old version. This way you don\u0027t need to cap for the current version.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6450,"name":"Hans Lindgren","email":"hanlind@kth.se","username":"hanlind"},"change_message_id":"40dd36bdb460784afeb53562e49bd7757b6436ac","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        self.flags(compute\u003d\u00274.1\u0027, group\u003d\u0027upgrade_levels\u0027)"},{"line_number":314,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027,"},{"line_number":315,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":316,"context_line":"                instance_type\u003dself.fake_flavor,"},{"line_number":317,"context_line":"                image\u003d\u0027fake_image\u0027, host\u003d\u0027host\u0027,"},{"line_number":318,"context_line":"                reservations\u003dlist(\u0027fake_res\u0027),"},{"line_number":319,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a0c5dc1_be7076dd","line":316,"updated":"2015-05-13 19:55:02.000000000","message":"Should be self.fake_flavor_obj here too I think.","commit_id":"b28629d662f6104ab5ac9c6a4a7e4c5093179d61"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cdb2e43db8913bad46ac13eaf05d76caa14dd90b","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        expected_args \u003d {\u0027instance_type\u0027: self.fake_flavor}"},{"line_number":313,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027, expected_args,"},{"line_number":314,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":315,"context_line":"                instance_type\u003dself.fake_flavor_obj,"},{"line_number":316,"context_line":"                image\u003d\u0027fake_image\u0027, host\u003d\u0027host\u0027,"},{"line_number":317,"context_line":"                reservations\u003dlist(\u0027fake_res\u0027),"},{"line_number":318,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_2cb4de7d","line":315,"updated":"2015-05-22 16:22:13.000000000","message":"I guess split this into 2 cases might make it more clear","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"54dc0fefbca309f60d83ac37eb363a80fd5a82ce","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        expected_args \u003d {\u0027instance_type\u0027: self.fake_flavor}"},{"line_number":313,"context_line":"        self._test_compute_api(\u0027prep_resize\u0027, \u0027cast\u0027, expected_args,"},{"line_number":314,"context_line":"                instance\u003dself.fake_instance_obj,"},{"line_number":315,"context_line":"                instance_type\u003dself.fake_flavor_obj,"},{"line_number":316,"context_line":"                image\u003d\u0027fake_image\u0027, host\u003d\u0027host\u0027,"},{"line_number":317,"context_line":"                reservations\u003dlist(\u0027fake_res\u0027),"},{"line_number":318,"context_line":"                request_spec\u003d\u0027fake_spec\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a016987_4fd22c36","line":315,"in_reply_to":"7a016987_2cb4de7d","updated":"2015-05-26 14:13:13.000000000","message":"It was written in these way, so I did not change its style. Consolidate the same api test cases in one function is also a clear way, I think.","commit_id":"829727bc5c57831dd8a7c69f72c7f5a104b76367"}],"nova/tests/unit/fake_flavor.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"6c140519254f8517bda793806917f7d92df1cea8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        elif field.default !\u003d fields.UnspecifiedDefault:"},{"line_number":41,"context_line":"            db_flavor[name] \u003d field.default"},{"line_number":42,"context_line":"        else:"},{"line_number":43,"context_line":"            raise Exception(\u0027fake_db_falvor needs help with %s\u0027 % name)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    if updates:"},{"line_number":46,"context_line":"        db_flavor.update(updates)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5fd994f1","line":43,"updated":"2015-03-09 23:12:23.000000000","message":"typo \"fake_db_falvor\"","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"},{"author":{"_account_id":8574,"name":"Qin Zhao","username":"zhaoqin","inactive":true},"change_message_id":"187fee6606491e2460a0c42f49ee5fa09a8314e8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        elif field.default !\u003d fields.UnspecifiedDefault:"},{"line_number":41,"context_line":"            db_flavor[name] \u003d field.default"},{"line_number":42,"context_line":"        else:"},{"line_number":43,"context_line":"            raise Exception(\u0027fake_db_falvor needs help with %s\u0027 % name)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    if updates:"},{"line_number":46,"context_line":"        db_flavor.update(updates)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_4f80bc8b","line":43,"in_reply_to":"9a80dd14_5fd994f1","updated":"2015-03-11 10:08:19.000000000","message":"Done","commit_id":"3efecce4bba1810c92f18af8d3c33bbc282d972e"}]}
