)]}'
{"nova/tests/unit/virt/xenapi/test_xenapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19adec0b31bc18a787c800af16b97118dee9cbcc","unresolved":false,"context_lines":[{"line_number":3593,"context_line":""},{"line_number":3594,"context_line":"        def fake_lookup_kernel_ramdisk(session, vm_ref):"},{"line_number":3595,"context_line":"            return \"kernel\", \"ramdisk\""},{"line_number":3596,"context_line":"        self.stubs.Set(vm_utils, \"lookup_kernel_ramdisk\","},{"line_number":3597,"context_line":"                       fake_lookup_kernel_ramdisk)"},{"line_number":3598,"context_line":""},{"line_number":3599,"context_line":"        def fake_get_vm_opaque_ref(instance):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_31980fc0","line":3596,"range":{"start_line":3596,"start_character":8,"end_line":3596,"end_character":22},"updated":"2016-03-18 01:29:40.000000000","message":"Dude! self.stub_out!","commit_id":"762605ca4c2ac990b53a50d8f2c52fc793e07c94"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6e28ad2beb5ab1e527ef8450ba2cc41cbb4fd110","unresolved":false,"context_lines":[{"line_number":3593,"context_line":""},{"line_number":3594,"context_line":"        def fake_lookup_kernel_ramdisk(session, vm_ref):"},{"line_number":3595,"context_line":"            return \"kernel\", \"ramdisk\""},{"line_number":3596,"context_line":"        self.stubs.Set(vm_utils, \"lookup_kernel_ramdisk\","},{"line_number":3597,"context_line":"                       fake_lookup_kernel_ramdisk)"},{"line_number":3598,"context_line":""},{"line_number":3599,"context_line":"        def fake_get_vm_opaque_ref(instance):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_bb1b51c9","line":3596,"range":{"start_line":3596,"start_character":8,"end_line":3596,"end_character":22},"in_reply_to":"1af94dfe_31980fc0","updated":"2016-03-18 08:55:54.000000000","message":"yeah, I just left this as it was working in the first patch. This whole file needs to die.","commit_id":"762605ca4c2ac990b53a50d8f2c52fc793e07c94"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c0bcab3ad9ab886ff0d98d281926a67d168f710","unresolved":false,"context_lines":[{"line_number":3593,"context_line":""},{"line_number":3594,"context_line":"        def fake_lookup_kernel_ramdisk(session, vm_ref):"},{"line_number":3595,"context_line":"            return \"kernel\", \"ramdisk\""},{"line_number":3596,"context_line":"        self.stubs.Set(vm_utils, \"lookup_kernel_ramdisk\","},{"line_number":3597,"context_line":"                       fake_lookup_kernel_ramdisk)"},{"line_number":3598,"context_line":""},{"line_number":3599,"context_line":"        def fake_get_vm_opaque_ref(instance):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_fdde5fdb","line":3596,"range":{"start_line":3596,"start_character":8,"end_line":3596,"end_character":22},"in_reply_to":"1af94dfe_bb1b51c9","updated":"2016-03-18 13:52:10.000000000","message":"Yeah that\u0027s fine, it\u0027s used throughout here still and will all need to be cleaned up together at once anyway.","commit_id":"762605ca4c2ac990b53a50d8f2c52fc793e07c94"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b099c612dc9f1f716c1ce67d7b4845e888d69667","unresolved":false,"context_lines":[{"line_number":2388,"context_line":"                migrate_data.kernel_file \u003d kernel"},{"line_number":2389,"context_line":"                migrate_data.ramdisk_file \u003d ramdisk"},{"line_number":2390,"context_line":""},{"line_number":2391,"context_line":"            if block_migration:"},{"line_number":2392,"context_line":"                if not migrate_data:"},{"line_number":2393,"context_line":"                    raise exception.InvalidParameterValue(\u0027Block Migration \u0027"},{"line_number":2394,"context_line":"                                    \u0027requires migrate data from destination\u0027)"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"            if migrate_data is not None and migrate_data.block_migration:"},{"line_number":2397,"context_line":"                iscsi_srs \u003d self._get_iscsi_srs(context, instance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_16dda014","line":2394,"range":{"start_line":2391,"start_character":12,"end_line":2394,"end_character":77},"updated":"2016-03-15 16:09:11.000000000","message":"Do we even need this? We aren\u0027t using the block_migration parameter otherwise. And if we actually trusted it, why wouldn\u0027t we use it below?","commit_id":"91646bd1ee77a259ae7c34ed21690d3ea9796a16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b099c612dc9f1f716c1ce67d7b4845e888d69667","unresolved":false,"context_lines":[{"line_number":2393,"context_line":"                    raise exception.InvalidParameterValue(\u0027Block Migration \u0027"},{"line_number":2394,"context_line":"                                    \u0027requires migrate data from destination\u0027)"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"            if migrate_data is not None and migrate_data.block_migration:"},{"line_number":2397,"context_line":"                iscsi_srs \u003d self._get_iscsi_srs(context, instance)"},{"line_number":2398,"context_line":"                try:"},{"line_number":2399,"context_line":"                    self._call_live_migrate_command("}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_9389c2cd","line":2396,"range":{"start_line":2396,"start_character":44,"end_line":2396,"end_character":72},"updated":"2016-03-15 16:09:11.000000000","message":"It sucks that we have both this and the block_migration parameter to the method, but I think someone was working a separate change to clean that up.","commit_id":"91646bd1ee77a259ae7c34ed21690d3ea9796a16"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b099c612dc9f1f716c1ce67d7b4845e888d69667","unresolved":false,"context_lines":[{"line_number":2393,"context_line":"                    raise exception.InvalidParameterValue(\u0027Block Migration \u0027"},{"line_number":2394,"context_line":"                                    \u0027requires migrate data from destination\u0027)"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"            if migrate_data is not None and migrate_data.block_migration:"},{"line_number":2397,"context_line":"                iscsi_srs \u003d self._get_iscsi_srs(context, instance)"},{"line_number":2398,"context_line":"                try:"},{"line_number":2399,"context_line":"                    self._call_live_migrate_command("}],"source_content_type":"text/x-python","patch_set":2,"id":"1af94dfe_f6d47448","line":2396,"range":{"start_line":2396,"start_character":15,"end_line":2396,"end_character":39},"updated":"2016-03-15 16:09:11.000000000","message":"When would migrate_data be None? The reason I ask is because the libvirt driver assumes migrate_data is not None:\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L5971\n\nSeems like this would be better as:\n\n  if \u0027block_migration\u0027 in migrate_data and migrate_data.block_migration:","commit_id":"91646bd1ee77a259ae7c34ed21690d3ea9796a16"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"71aa98267eb6c01e3406987e457649e7260dccf0","unresolved":false,"context_lines":[{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        if migrate_data is not None:"},{"line_number":2390,"context_line":"            migrate_base_obj \u003d migrate_data_obj.LiveMigrateData"},{"line_number":2391,"context_line":"            if not isinstance(migrate_data, migrate_base_obj):"},{"line_number":2392,"context_line":"                obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":2393,"context_line":"                obj.from_legacy_dict(migrate_data)"},{"line_number":2394,"context_line":"                migrate_data \u003d obj"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"        try:"},{"line_number":2397,"context_line":"            vm_ref \u003d self._get_vm_opaque_ref(instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_6417e5a3","line":2394,"range":{"start_line":2391,"start_character":12,"end_line":2394,"end_character":34},"updated":"2016-03-16 10:50:20.000000000","message":"We will get Object at here I think: https://github.com/openstack/nova/blob/dae13c5153a3aee25c8ded1cb154cc56a04cd7a2/nova/compute/rpcapi.py#L695","commit_id":"b6ea9e5eb92380699eb5921a09b5d15173632436"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f26889dbd7b52bba3368506f9049bae0dd81f077","unresolved":false,"context_lines":[{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        if migrate_data is not None:"},{"line_number":2390,"context_line":"            migrate_base_obj \u003d migrate_data_obj.LiveMigrateData"},{"line_number":2391,"context_line":"            if not isinstance(migrate_data, migrate_base_obj):"},{"line_number":2392,"context_line":"                obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":2393,"context_line":"                obj.from_legacy_dict(migrate_data)"},{"line_number":2394,"context_line":"                migrate_data \u003d obj"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"        try:"},{"line_number":2397,"context_line":"            vm_ref \u003d self._get_vm_opaque_ref(instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_bc829d92","line":2394,"range":{"start_line":2391,"start_character":12,"end_line":2394,"end_character":34},"in_reply_to":"1af94dfe_3927bf65","updated":"2016-03-16 12:29:21.000000000","message":"Emm....actually when this piece of code was executed, that means this node is new one, it also means rpc.py is new one. The new rpc client code will convert the legacy dict back to object.","commit_id":"b6ea9e5eb92380699eb5921a09b5d15173632436"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"093aa5ccae3c0e2b7fd3765252299dbc4c1318af","unresolved":false,"context_lines":[{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        if migrate_data is not None:"},{"line_number":2390,"context_line":"            migrate_base_obj \u003d migrate_data_obj.LiveMigrateData"},{"line_number":2391,"context_line":"            if not isinstance(migrate_data, migrate_base_obj):"},{"line_number":2392,"context_line":"                obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":2393,"context_line":"                obj.from_legacy_dict(migrate_data)"},{"line_number":2394,"context_line":"                migrate_data \u003d obj"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"        try:"},{"line_number":2397,"context_line":"            vm_ref \u003d self._get_vm_opaque_ref(instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_3927bf65","line":2394,"range":{"start_line":2391,"start_character":12,"end_line":2394,"end_character":34},"in_reply_to":"1af94dfe_6417e5a3","updated":"2016-03-16 12:04:03.000000000","message":"unless the call if from an old compute node, where it gets the legacy dict, I think.","commit_id":"b6ea9e5eb92380699eb5921a09b5d15173632436"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0babbab2cbfef98d488b106880f90c61903769f8","unresolved":false,"context_lines":[{"line_number":2388,"context_line":""},{"line_number":2389,"context_line":"        if migrate_data is not None:"},{"line_number":2390,"context_line":"            migrate_base_obj \u003d migrate_data_obj.LiveMigrateData"},{"line_number":2391,"context_line":"            if not isinstance(migrate_data, migrate_base_obj):"},{"line_number":2392,"context_line":"                obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":2393,"context_line":"                obj.from_legacy_dict(migrate_data)"},{"line_number":2394,"context_line":"                migrate_data \u003d obj"},{"line_number":2395,"context_line":""},{"line_number":2396,"context_line":"        try:"},{"line_number":2397,"context_line":"            vm_ref \u003d self._get_vm_opaque_ref(instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_7585c3ab","line":2394,"range":{"start_line":2391,"start_character":12,"end_line":2394,"end_character":34},"in_reply_to":"1af94dfe_bc829d92","updated":"2016-03-16 14:26:08.000000000","message":"yeah, I got confused, sorry, its all converted in the compute manager.","commit_id":"b6ea9e5eb92380699eb5921a09b5d15173632436"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4c7ea119f7d879001064f80520b99ad9a9d954d7","unresolved":false,"context_lines":[{"line_number":2394,"context_line":""},{"line_number":2395,"context_line":"        if migrate_data is not None:"},{"line_number":2396,"context_line":"            migrate_base_obj \u003d migrate_data_obj.LiveMigrateData"},{"line_number":2397,"context_line":"            if not isinstance(migrate_data, migrate_base_obj):"},{"line_number":2398,"context_line":"                obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":2399,"context_line":"                obj.from_legacy_dict(migrate_data)"},{"line_number":2400,"context_line":"                migrate_data \u003d obj"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_8b85d0ae","line":2397,"updated":"2016-03-16 14:51:57.000000000","message":"Upper layers should be handling this","commit_id":"1d19a341733beeadfc69c3f45bca8a6ad840cba5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a23aaf94e24fcf080401bb0d7d4e21efcf73f4f6","unresolved":false,"context_lines":[{"line_number":2394,"context_line":""},{"line_number":2395,"context_line":"        if migrate_data is not None:"},{"line_number":2396,"context_line":"            migrate_base_obj \u003d migrate_data_obj.LiveMigrateData"},{"line_number":2397,"context_line":"            if not isinstance(migrate_data, migrate_base_obj):"},{"line_number":2398,"context_line":"                obj \u003d objects.XenapiLiveMigrateData()"},{"line_number":2399,"context_line":"                obj.from_legacy_dict(migrate_data)"},{"line_number":2400,"context_line":"                migrate_data \u003d obj"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_ab07e77f","line":2397,"in_reply_to":"1af94dfe_8b85d0ae","updated":"2016-03-16 15:56:43.000000000","message":"ack, this was a cut and paste from bad code.","commit_id":"1d19a341733beeadfc69c3f45bca8a6ad840cba5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"19adec0b31bc18a787c800af16b97118dee9cbcc","unresolved":false,"context_lines":[{"line_number":2402,"context_line":"                migrate_data.kernel_file \u003d kernel"},{"line_number":2403,"context_line":"                migrate_data.ramdisk_file \u003d ramdisk"},{"line_number":2404,"context_line":""},{"line_number":2405,"context_line":"            if migrate_data is not None and migrate_data.block_migration:"},{"line_number":2406,"context_line":"                iscsi_srs \u003d self._get_iscsi_srs(context, instance)"},{"line_number":2407,"context_line":"                try:"},{"line_number":2408,"context_line":"                    self._call_live_migrate_command("}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_f1c7c795","line":2405,"range":{"start_line":2405,"start_character":15,"end_line":2405,"end_character":39},"updated":"2016-03-18 01:29:40.000000000","message":"I don\u0027t see a single test for the case that migrate_data is None in this method, am I just missing that?","commit_id":"762605ca4c2ac990b53a50d8f2c52fc793e07c94"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c0bcab3ad9ab886ff0d98d281926a67d168f710","unresolved":false,"context_lines":[{"line_number":2402,"context_line":"                migrate_data.kernel_file \u003d kernel"},{"line_number":2403,"context_line":"                migrate_data.ramdisk_file \u003d ramdisk"},{"line_number":2404,"context_line":""},{"line_number":2405,"context_line":"            if migrate_data is not None and migrate_data.block_migration:"},{"line_number":2406,"context_line":"                iscsi_srs \u003d self._get_iscsi_srs(context, instance)"},{"line_number":2407,"context_line":"                try:"},{"line_number":2408,"context_line":"                    self._call_live_migrate_command("}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_1de06b95","line":2405,"range":{"start_line":2405,"start_character":15,"end_line":2405,"end_character":39},"in_reply_to":"1af94dfe_7b53896b","updated":"2016-03-18 13:52:10.000000000","message":"OK, I can buy that.","commit_id":"762605ca4c2ac990b53a50d8f2c52fc793e07c94"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6e28ad2beb5ab1e527ef8450ba2cc41cbb4fd110","unresolved":false,"context_lines":[{"line_number":2402,"context_line":"                migrate_data.kernel_file \u003d kernel"},{"line_number":2403,"context_line":"                migrate_data.ramdisk_file \u003d ramdisk"},{"line_number":2404,"context_line":""},{"line_number":2405,"context_line":"            if migrate_data is not None and migrate_data.block_migration:"},{"line_number":2406,"context_line":"                iscsi_srs \u003d self._get_iscsi_srs(context, instance)"},{"line_number":2407,"context_line":"                try:"},{"line_number":2408,"context_line":"                    self._call_live_migrate_command("}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_7b53896b","line":2405,"range":{"start_line":2405,"start_character":15,"end_line":2405,"end_character":39},"in_reply_to":"1af94dfe_f1c7c795","updated":"2016-03-18 08:55:54.000000000","message":"no, its not there.\n\nThere is a follow up refactor to take all this \"if None\" crud out of here. It can\u0027t ever be None when running for real. Its more here for local consistency, as its what the unit tests currently assume.","commit_id":"762605ca4c2ac990b53a50d8f2c52fc793e07c94"}]}
