)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"509266bc5d91ba4c777f448fd41c0fe101795c86","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yaguang Tang \u003cyaguang.tang@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-15 16:02:02 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add ephemeral disk support for VMware"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fixes the bug that VMware Hyper driver doesn\u0027t honour"},{"line_number":10,"context_line":"instance flavor ephemeral disk."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATH%2F%2FgXw%3D","line":7,"updated":"2013-10-15 10:02:25.000000000","message":"Please prefix this with VMware.","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"a9e4eed0c637fa0eec50ed96d03a7c7fc1a79f77","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware add instance ephemeral disk support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fixes the bug that VMware Hyper driver doesn\u0027t honour"},{"line_number":10,"context_line":"instance flavor ephemeral disk."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related blueprint improve-vmware-disk-usage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2FONs%3D","line":9,"updated":"2013-10-21 05:47:36.000000000","message":"Well, this kind of statement might confusing people, from the commit statement statement this patch fixes a bug, but from the blueprint statement, this looks more like a enhancement feature, so is this a bug fixing or feature enhancement?","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"059064dddf19cf4a1b9c2b5e837003ee29b0da2c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware add instance ephemeral disk support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fixes the bug that VMware Hyper driver doesn\u0027t honour"},{"line_number":10,"context_line":"instance flavor ephemeral disk."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related blueprint improve-vmware-disk-usage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2FN%2Bw%3D","line":9,"in_reply_to":"AAAATH%2F%2FOB0%3D","updated":"2013-10-21 08:04:25.000000000","message":"I can see that, but the line 9 is totally different, if you think this is fine, I am ok with it.","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"81b4fb738da7e276b6652713925161ef566f674c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware add instance ephemeral disk support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch fixes the bug that VMware Hyper driver doesn\u0027t honour"},{"line_number":10,"context_line":"instance flavor ephemeral disk."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related blueprint improve-vmware-disk-usage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATH%2F%2FOB0%3D","line":9,"in_reply_to":"AAAATH%2F%2FONs%3D","updated":"2013-10-21 07:31:29.000000000","message":"I think that line 7 clarifies this.","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9bdcb1b7cf8a29aa87920255d9648dda456c56c2","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related blueprint improve-vmware-disk-usage"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"Change-Id: Ic72c1ae7a6cb6b7c139acc68fbbdb5cfbf2b765f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAAUH%2F%2F1sY%3D","line":14,"updated":"2014-01-07 21:03:13.000000000","message":"What\u0027s the doc impact?  Based on the tag definition, there should be some explanation here for the docs team:\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1f8a844266660fd42559d22ddadb1438affeb98d","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related blueprint improve-vmware-disk-usage"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"Change-Id: Ic72c1ae7a6cb6b7c139acc68fbbdb5cfbf2b765f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAAUH%2F%2F0XQ%3D","line":14,"in_reply_to":"AAAAUH%2F%2F0es%3D","updated":"2014-01-08 04:44:34.000000000","message":"OK, that should be called out in the commit message alongside the DocImpact tag then, the docs team shouldn\u0027t have to dig through this to find out what they need to do.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"3921aedad6c3d946b51833d7857fc0621119658c","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Related blueprint improve-vmware-disk-usage"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"DocImpact"},{"line_number":15,"context_line":"Change-Id: Ic72c1ae7a6cb6b7c139acc68fbbdb5cfbf2b765f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"AAAAUH%2F%2F0es%3D","line":14,"in_reply_to":"AAAAUH%2F%2F1sY%3D","updated":"2014-01-08 03:55:07.000000000","message":"the docs team is aware of the fact that now ephemeral disk is not supported for VMware driver, and documented it already, so this DocImpact is to inform the doc team to update that.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"}],"nova/tests/virt/vmwareapi/test_driver_api.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d532c732d8dc52547a2d970380df98c2b2c576f2","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                  \u0027flavor\u0027: \u0027m1.large\u0027,"},{"line_number":359,"context_line":"                  \u0027node\u0027: node,"},{"line_number":360,"context_line":"                  \u0027root_gb\u0027: 80,"},{"line_number":361,"context_line":"                  \u0027ephemeral_gb\u0027: 200,"},{"line_number":362,"context_line":"                  }"},{"line_number":363,"context_line":"        if set_image_ref:"},{"line_number":364,"context_line":"            values[\u0027image_ref\u0027] \u003d \"fake_image_uuid\""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAU3%2F%2FyF4%3D","line":361,"updated":"2014-02-24 20:18:04.000000000","message":"Minor nit, but based on the fakes that were setup an m1.large flavor should have 100gb here.","commit_id":"2ac820d7492e44b7750d4380daff88e8f3fff614"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"775fc838417c30ac59cbb67b0fe08fe8e7f3e02d","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                  \u0027flavor\u0027: \u0027m1.large\u0027,"},{"line_number":359,"context_line":"                  \u0027node\u0027: node,"},{"line_number":360,"context_line":"                  \u0027root_gb\u0027: 80,"},{"line_number":361,"context_line":"                  \u0027ephemeral_gb\u0027: 200,"},{"line_number":362,"context_line":"                  }"},{"line_number":363,"context_line":"        if set_image_ref:"},{"line_number":364,"context_line":"            values[\u0027image_ref\u0027] \u003d \"fake_image_uuid\""}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAVX%2F%2F%2BYg%3D","line":361,"in_reply_to":"AAAAU3%2F%2FyF4%3D","updated":"2014-02-27 02:47:25.000000000","message":"Done","commit_id":"2ac820d7492e44b7750d4380daff88e8f3fff614"}],"nova/tests/virt/vmwareapi/test_vmops.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"83a642ede56ff1215ac3a91ff74c43669b1d530c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                                      disk_type,"},{"line_number":120,"context_line":"                                                      adapter_type)"},{"line_number":121,"context_line":"        self.assertEqual(\"[some_ds] some-uuid/ephemeral_disk.vmdk\", path)"},{"line_number":122,"context_line":"        gb \u003d 1024 ** 2"},{"line_number":123,"context_line":"        self.assertEqual(test_size * gb, size)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2Bua4%3D","line":122,"updated":"2014-02-19 15:05:28.000000000","message":"consider using unit.Gb","commit_id":"12d9809bdb1584c4514d9c981ce941fe1100e40d"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"e77e5023933150c526055959cc74d48add5fba97","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                                      disk_type,"},{"line_number":120,"context_line":"                                                      adapter_type)"},{"line_number":121,"context_line":"        self.assertEqual(\"[some_ds] some-uuid/ephemeral_disk.vmdk\", path)"},{"line_number":122,"context_line":"        gb \u003d 1024 ** 2"},{"line_number":123,"context_line":"        self.assertEqual(test_size * gb, size)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2Br6g%3D","line":122,"in_reply_to":"AAAAUX%2F%2BtQc%3D","updated":"2014-02-19 19:49:11.000000000","message":"So what\u0027s interesting there is units.Gi is defined as 1024 ** 3 and here we need to test agains the size in KB which is 1024 ** 2 and that means the two sizes don\u0027t match.\n\nSo, should ephemeral change the returned size units from KB to bytes or should I write the test to hard-code the test size to an integer?","commit_id":"12d9809bdb1584c4514d9c981ce941fe1100e40d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"766c8125da09d8847ac364442a31ead8963003ed","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                                      disk_type,"},{"line_number":120,"context_line":"                                                      adapter_type)"},{"line_number":121,"context_line":"        self.assertEqual(\"[some_ds] some-uuid/ephemeral_disk.vmdk\", path)"},{"line_number":122,"context_line":"        gb \u003d 1024 ** 2"},{"line_number":123,"context_line":"        self.assertEqual(test_size * gb, size)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2BtQc%3D","line":122,"in_reply_to":"AAAAUX%2F%2BuNo%3D","updated":"2014-02-19 17:23:31.000000000","message":"https://github.com/openstack/nova/blob/master/nova/openstack/common/units.py#L23","commit_id":"12d9809bdb1584c4514d9c981ce941fe1100e40d"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"89ed8b2f96aecf1245b52f46b1e9b9f4c5cbfdc7","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                                      disk_type,"},{"line_number":120,"context_line":"                                                      adapter_type)"},{"line_number":121,"context_line":"        self.assertEqual(\"[some_ds] some-uuid/ephemeral_disk.vmdk\", path)"},{"line_number":122,"context_line":"        gb \u003d 1024 ** 2"},{"line_number":123,"context_line":"        self.assertEqual(test_size * gb, size)"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2BuNo%3D","line":122,"in_reply_to":"AAAAUX%2F%2Bua4%3D","updated":"2014-02-19 16:07:49.000000000","message":"I cannot find any references to unit.Gb in the code base. This would be the first time that anyone used that symbol in Nova as far as I can tell.","commit_id":"12d9809bdb1584c4514d9c981ce941fe1100e40d"}],"nova/tests/virt/vmwareapi/test_vmwareapi.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3119e7fdc0c110d58ef25436c8c0dfc5522c8863","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    def test_ephemeral_disk_created(self):"},{"line_number":292,"context_line":"        self._create_vm(uuid\u003d\u0027fake-uuid\u0027)"},{"line_number":293,"context_line":"        file_path \u003d \u0027[fake-ds] fake-uuid/ephemeral_disk.vmdk\u0027"},{"line_number":294,"context_line":"        self.assertEqual(vmwareapi_fake.get_file(file_path), True)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def test_spawn(self):"},{"line_number":297,"context_line":"        self._create_vm()"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B7ws%3D","line":294,"updated":"2013-11-18 12:30:21.000000000","message":"Please use self.assertTrue instead","commit_id":"50be378a4fe12664b2c1413ec323080a933c791e"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c46dd619b36acfc894836a622342a9c750b58648","unresolved":false,"context_lines":[{"line_number":503,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                disk_path \u003d os.path.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":507,"context_line":"                disk_create_path \u003d vm_util.build_datastore_path("},{"line_number":508,"context_line":"                                        data_store_name, disk_path)"},{"line_number":509,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FZLw%3D","line":506,"updated":"2013-10-16 19:00:12.000000000","message":"This will end up with a windows-y path if nova-compute runs on windows, which won\u0027t be what ESX wants, right?","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3cd92e0ebeb4066b8c2bdb980a0a016817103219","unresolved":false,"context_lines":[{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                disk_path \u003d os.path.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":507,"context_line":"                disk_create_path \u003d vm_util.build_datastore_path("},{"line_number":508,"context_line":"                                        data_store_name, disk_path)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"                disk_create_spec \u003d vm_util.get_vmdk_create_spec("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FZpI%3D","line":507,"updated":"2013-10-16 17:05:36.000000000","message":"I think this could be named something more intuitive. It took me a minute to figure out that \"disk_create_path\" in the call below to attach was actually ephemeral and not any of the  other disk paths being handled in this method.","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"5f935c0eba2fc41bfb5032393dcb7b77b0edc5f2","unresolved":false,"context_lines":[{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                disk_path \u003d os.path.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":507,"context_line":"                disk_create_path \u003d vm_util.build_datastore_path("},{"line_number":508,"context_line":"                                        data_store_name, disk_path)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"                disk_create_spec \u003d vm_util.get_vmdk_create_spec("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FYx8%3D","line":507,"updated":"2013-10-16 20:08:25.000000000","message":"you can change this to posixpath.join instead","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"509266bc5d91ba4c777f448fd41c0fe101795c86","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                        \"adapter_type\": adapter_type,"},{"line_number":519,"context_line":"                        \"data_store_name\": data_store_name}, instance\u003dinstance)"},{"line_number":520,"context_line":"                vmdk_create_task \u003d self._session._call_method("},{"line_number":521,"context_line":"                self._session._get_vim(),"},{"line_number":522,"context_line":"                \"CreateVirtualDisk_Task\","},{"line_number":523,"context_line":"                service_content.virtualDiskManager,"},{"line_number":524,"context_line":"                name\u003ddisk_create_path,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FgXs%3D","line":521,"updated":"2013-10-15 10:02:25.000000000","message":"indentation here is a little odd","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3cd92e0ebeb4066b8c2bdb980a0a016817103219","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                        \"adapter_type\": adapter_type,"},{"line_number":519,"context_line":"                        \"data_store_name\": data_store_name}, instance\u003dinstance)"},{"line_number":520,"context_line":"                vmdk_create_task \u003d self._session._call_method("},{"line_number":521,"context_line":"                self._session._get_vim(),"},{"line_number":522,"context_line":"                \"CreateVirtualDisk_Task\","},{"line_number":523,"context_line":"                service_content.virtualDiskManager,"},{"line_number":524,"context_line":"                name\u003ddisk_create_path,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FZrY%3D","line":521,"in_reply_to":"AAAATH%2F%2FgXs%3D","updated":"2013-10-16 17:05:36.000000000","message":"Ah, yeah, I think that needs to be fixed. It should distinguish itself from other statements at the same nesting level.","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3cd92e0ebeb4066b8c2bdb980a0a016817103219","unresolved":false,"context_lines":[{"line_number":557,"context_line":"                                                  disk_create_path,"},{"line_number":558,"context_line":"                                                  ephemeral_size,"},{"line_number":559,"context_line":"                                                  linked_clone\u003dFalse,"},{"line_number":560,"context_line":"                                                  unit_number\u003d1)"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"        else:"},{"line_number":563,"context_line":"            # Attach the root disk to the VM."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATH%2F%2FZow%3D","line":560,"updated":"2013-10-16 17:05:36.000000000","message":"So, by my reading, you can only have ephemeral disks if config_drive is enabled, is that right? Why is that?","commit_id":"7d34a088555f13c0545c506dd438e2cab993b7be"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"69b4c484b823f2f47a78f2c3b4169db7493c8c65","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            # Create ephemeral disk for instance."},{"line_number":502,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":503,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":504,"context_line":"                ephemeral_disk_name \u003d os.path.join(instance[\u0027uuid\u0027],"},{"line_number":505,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":506,"context_line":"                ephemeral_disk_path \u003d vm_util.build_datastore_path("},{"line_number":507,"context_line":"                                data_store_name, ephemeral_disk_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FTZk%3D","line":504,"updated":"2013-10-18 03:27:59.000000000","message":"Hi - it looks like you still have the issue that will break if n-cpu runs on windows.  This will break since the \\ is in the wrong direction for ESX.  Please change to posixpath.join","commit_id":"e79e41fd4cb60baece6c443cec22486bdcd2c5f9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"04b55f5154ecd04ebed1778fd5124c9e08e6ba3e","unresolved":false,"context_lines":[{"line_number":508,"context_line":"                                data_store_name, ephemeral_disk_name)"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"                disk_create_spec \u003d vm_util.get_vmdk_create_spec("},{"line_number":511,"context_line":"                client_factory, ephemeral_size, adapter_type, disk_type)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":514,"context_line":"                      \"%(ephemeral_size)s KB and adapter type \""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FPgs%3D","line":511,"updated":"2013-10-19 17:46:30.000000000","message":"please fix the indentation here. the client_factory should be 8 spaces from the disk_create_spec","commit_id":"4209be38953739922646e4b7d57e7a11ddd43be4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"04b55f5154ecd04ebed1778fd5124c9e08e6ba3e","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":554,"context_line":"                # Attach ephemeral disk to the VM. Unit number 1 can be used"},{"line_number":555,"context_line":"                # by cdrom device, so we use 2 to avoid confliction."},{"line_number":556,"context_line":"                self._volumeops.attach_disk_to_vm(vm_ref, instance,"},{"line_number":557,"context_line":"                                                  adapter_type, disk_type,"},{"line_number":558,"context_line":"                                                  ephemeral_disk_path,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FPgo%3D","line":555,"updated":"2013-10-19 17:46:30.000000000","message":"confliction \u003d\u003e conflict","commit_id":"4209be38953739922646e4b7d57e7a11ddd43be4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"04b55f5154ecd04ebed1778fd5124c9e08e6ba3e","unresolved":false,"context_lines":[{"line_number":558,"context_line":"                                                  ephemeral_disk_path,"},{"line_number":559,"context_line":"                                                  ephemeral_size,"},{"line_number":560,"context_line":"                                                  linked_clone\u003dFalse,"},{"line_number":561,"context_line":"                                                  unit_number\u003d2)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        else:"},{"line_number":564,"context_line":"            # Attach the root disk to the VM."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATH%2F%2FPgk%3D","line":561,"updated":"2013-10-19 17:46:30.000000000","message":"if the config driver is not used then do we still want to use unit_number as 2?","commit_id":"4209be38953739922646e4b7d57e7a11ddd43be4"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"a9e4eed0c637fa0eec50ed96d03a7c7fc1a79f77","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            # Create ephemeral disk for instance."},{"line_number":503,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":507,"context_line":"                ephemeral_disk_path \u003d vm_util.build_datastore_path("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FOOI%3D","line":504,"updated":"2013-10-21 05:47:36.000000000","message":"nit: ephemeral_size_kb would be more readable","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"2ba618c188094ab3b52fdcb364a5cc5b703937c6","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            # Create ephemeral disk for instance."},{"line_number":503,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":507,"context_line":"                ephemeral_disk_path \u003d vm_util.build_datastore_path("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FIug%3D","line":504,"in_reply_to":"AAAATH%2F%2FOOI%3D","updated":"2013-10-22 16:59:45.000000000","message":"I agree with the above statement. If I see this in a dict randomly my first question will be \"ephemeral what in gb? freespace? used? available? total size?\" Saying \"size\" implies that the value is the total size of the ephemeral disk. Appending units to the value is a good thing since we have a loose typing system here and can\u0027t have a subclass of integer called Gigabytes... that forces us to use Hungarian Wart style annotations on our values.","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"a9e4eed0c637fa0eec50ed96d03a7c7fc1a79f77","unresolved":false,"context_lines":[{"line_number":512,"context_line":"                        disk_type)"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":515,"context_line":"                      \"%(ephemeral_size)s KB and adapter type \""},{"line_number":516,"context_line":"                      \"%(adapter_type)s on the ESX host local store \""},{"line_number":517,"context_line":"                      \"%(data_store_name)s\") %"},{"line_number":518,"context_line":"                       {\"ephemeral_size\": ephemeral_size,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FOOE%3D","line":515,"updated":"2013-10-21 05:47:36.000000000","message":"nit: alignment","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"9383a15370963ed1855b064cf04995acfbcabb57","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                                                  ephemeral_disk_path,"},{"line_number":560,"context_line":"                                                  ephemeral_size,"},{"line_number":561,"context_line":"                                                  linked_clone\u003dFalse,"},{"line_number":562,"context_line":"                                                  unit_number\u003d2)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        else:"},{"line_number":565,"context_line":"            # Attach the root disk to the VM."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FKlU%3D","line":562,"updated":"2013-10-22 06:40:18.000000000","message":"This would not work if the root disk is an ide disk and if the config drive is used (just a couple of lines above this). In that case both slots of the first ide controller are used, the ephemeral vmdk really has to be attached to another controller\u0027s first slot. This means another controller (can be ide or some scsi type like lsiLogic) will likely have to be created a well.\n\nIf we do not want to address this here, we should comment that we don\u0027t support this scenario, and file a bug to track this deficiency. Thanks","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"2ba618c188094ab3b52fdcb364a5cc5b703937c6","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                                                  ephemeral_disk_path,"},{"line_number":560,"context_line":"                                                  ephemeral_size,"},{"line_number":561,"context_line":"                                                  linked_clone\u003dFalse,"},{"line_number":562,"context_line":"                                                  unit_number\u003d2)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        else:"},{"line_number":565,"context_line":"            # Attach the root disk to the VM."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FIuI%3D","line":562,"in_reply_to":"AAAATH%2F%2FKlU%3D","updated":"2013-10-22 16:59:45.000000000","message":"Because of when we are in the cycle (very early) I would rather we fix the problem here and now, but this should be addressed at some point.","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"ba22028772caac0737536348db46a36d26dd2b00","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                                                  ephemeral_disk_path,"},{"line_number":560,"context_line":"                                                  ephemeral_size,"},{"line_number":561,"context_line":"                                                  linked_clone\u003dFalse,"},{"line_number":562,"context_line":"                                                  unit_number\u003d2)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        else:"},{"line_number":565,"context_line":"            # Attach the root disk to the VM."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATH%2F%2FItk%3D","line":562,"in_reply_to":"AAAATH%2F%2FKlU%3D","updated":"2013-10-22 17:01:08.000000000","message":"thanks Vui, how about we use lsiLogic controller for ephemeral disk by sepcify the adapter_type\u003dlsiLogic? is there any side effect?","commit_id":"9100bb7a110d01be4a21ae5b6787ac1acd4f6e4f"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"66e7fb874263f2cc8f8540851d2aecb1893da759","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                                                  root_vmdk_path, dc_ref)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            # Create ephemeral disk for instance."},{"line_number":503,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2FIbQ%3D","line":503,"updated":"2013-10-22 18:13:23.000000000","message":"are you in control of this name \u0027ephemeral_gb\u0027 ? can you change it to \"ephemeral_disk_gb\" or something similar?","commit_id":"51dcfe725477d9f6d2e4b65da9539242962f711f"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"9ab4726c661e1bfd6b5371b31854d3b50cb77672","unresolved":false,"context_lines":[{"line_number":500,"context_line":"                                                  root_vmdk_path, dc_ref)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"            # Create ephemeral disk for instance."},{"line_number":503,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":504,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":505,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":506,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATH%2F%2FIZs%3D","line":503,"in_reply_to":"AAAATH%2F%2FIbQ%3D","updated":"2013-10-22 18:21:25.000000000","message":"it\u0027s part of instance dict keys. this is defined in the instance table.","commit_id":"51dcfe725477d9f6d2e4b65da9539242962f711f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"61f34643e6d0bbf1a943b950d8a63b633b82de5b","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"            # Create ephemeral disk for instance."},{"line_number":513,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":514,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * 1024 * 1024"},{"line_number":515,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":516,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":517,"context_line":"                ephemeral_disk_path \u003d vm_util.build_datastore_path("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2F1bY%3D","line":514,"updated":"2013-10-28 09:03:01.000000000","message":"please use unit.Mi (https://github.com/openstack/nova/blob/master/nova/unit.py#L24)","commit_id":"97cd452e4d07087243947f33269129cd196ff9d6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"61f34643e6d0bbf1a943b950d8a63b633b82de5b","unresolved":false,"context_lines":[{"line_number":523,"context_line":""},{"line_number":524,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":525,"context_line":"                      \"%(ephemeral_size)s KB and adapter type \""},{"line_number":526,"context_line":"                      \"%(adapter_type)s on the ESX host local store \""},{"line_number":527,"context_line":"                      \"%(data_store_name)s\") %"},{"line_number":528,"context_line":"                       {\"ephemeral_size\": ephemeral_size,"},{"line_number":529,"context_line":"                        \"adapter_type\": adapter_type,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2F1ao%3D","line":526,"updated":"2013-10-28 09:03:01.000000000","message":"The adapter type is changed below to lsiLogic - so this is a little confusing.\nIn addition to this I think that we should remove the ESX here as there may be a shared datastore","commit_id":"97cd452e4d07087243947f33269129cd196ff9d6"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"5993e747eb94fbb2161bf903e0b828894ae8c7cb","unresolved":false,"context_lines":[{"line_number":524,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":525,"context_line":"                      \"%(ephemeral_size)s KB and adapter type \""},{"line_number":526,"context_line":"                      \"%(adapter_type)s on the ESX host local store \""},{"line_number":527,"context_line":"                      \"%(data_store_name)s\") %"},{"line_number":528,"context_line":"                       {\"ephemeral_size\": ephemeral_size,"},{"line_number":529,"context_line":"                        \"adapter_type\": adapter_type,"},{"line_number":530,"context_line":"                        \"data_store_name\": data_store_name}, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2F10g%3D","line":527,"updated":"2013-10-28 05:47:18.000000000","message":"Small nit. Please use a comma here instead of a percent sign. This is better, as it exposes the substitutions to the logging system.","commit_id":"97cd452e4d07087243947f33269129cd196ff9d6"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"f7dcc1231796ee45d96fd0247363b1a9971876ba","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                    data_store_ref,"},{"line_number":561,"context_line":"                    uploaded_iso_path,"},{"line_number":562,"context_line":"                    1 if adapter_type in [\u0027ide\u0027] else 0)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":565,"context_line":"                # Attach ephemeral disk to the VM. Use lsiLogic controller"},{"line_number":566,"context_line":"                # for ephemeral disk."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FtR0%3D","line":563,"updated":"2013-10-30 07:00:09.000000000","message":"I am all for avoiding the use of the ide adapter as much as we can. There are two problems with this approach, however. \n1. First, without specifying the controller key and unit number, this call _always_ creates a new lsiLogic adapter, regardless of whether one is already present or not. It would be better check what the root disk is using, and if it is a scsi controller already, just use it by specifying the controller key and unit number (would be 1 as it stands, as root disk took unit number 0).\n2. The potentially bigger problem (and it is really not the fault of this change), is that there are places in the code that assumes that all virtual disks are attached to the same adapter.\n(anything using vm_util.get_vmdk_path_and_adapter_type). Even if 1. is addressed, the change can still result in a VM with both ide and lsilogic adapter which can lead to subtle bugs. \nAt least we should try to address 1. \nThis may not be the place to address the preexisting issue exacerbated by 2, but we should add comments to note the potential problem.\nThanks, Vui.","commit_id":"676621c267d84df53e1710369e9ca80981538861"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"5f34710894ca01529364d4465285caa85fe100cb","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                        self._extend_virtual_disk(instance, root_gb_in_kb,"},{"line_number":511,"context_line":"                                                  root_vmdk_path, dc_ref)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"            # Create ephemeral disk for instance."},{"line_number":514,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":515,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * unit.Mi"},{"line_number":516,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FDzM%3D","line":513,"updated":"2013-11-15 01:39:57.000000000","message":"Any reason why this hunk of change cannot be moved to line 564?\nwe have create root, attach root, create configdrive, attach configdrive, given the logic create eph + attach eph should follow them.","commit_id":"6aff2db280847342fa24989ad4e3064ad58039b1"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"5f34710894ca01529364d4465285caa85fe100cb","unresolved":false,"context_lines":[{"line_number":533,"context_line":"                                        \"CreateVirtualDisk_Task\","},{"line_number":534,"context_line":"                                        service_content.virtualDiskManager,"},{"line_number":535,"context_line":"                                        name\u003dephemeral_disk_path,"},{"line_number":536,"context_line":"                                        datacenter\u003ddc_ref,"},{"line_number":537,"context_line":"                                        spec\u003ddisk_create_spec)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"                self._session._wait_for_task(instance[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FDzg%3D","line":536,"updated":"2013-11-15 01:39:57.000000000","message":"dc_ref is used before assigned.\n\n(https://review.openstack.org/#/c/52630 has a patch that makes dc lookup a cleaner; if you do not want to rebase atop it, you need to retrieve the dc withyou need to retrieve the dc_ref again with self._get_datacenter_ref_and_name()[0]","commit_id":"6aff2db280847342fa24989ad4e3064ad58039b1"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"5f34710894ca01529364d4465285caa85fe100cb","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                        unit_number \u003d 1"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"                elif adapter_type \u003d\u003d \u0027lsiLogic\u0027:"},{"line_number":578,"context_line":"                    controller_key \u003d -101"},{"line_number":579,"context_line":"                    unit_number \u003d 1"},{"line_number":580,"context_line":"                self._volumeops.attach_disk_to_vm(vm_ref, instance,"},{"line_number":581,"context_line":"                                                  adapter_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FDxk%3D","line":578,"updated":"2013-11-15 01:39:57.000000000","message":"This is not a valid controller_key. We use it when creating a controller. The logic attempts to reuse an existing one, so you need to use the controller_key to the lsiLogic controller. Actually \nthere are other controller types too (busLogic, lsilogicsas). \n\n2013-11-12 11:17:29.514 ERROR nova.compute.manager [req-6aa2c86f-2057-45a2-b337-8b181c6e5029 admin admin] [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5] Instance failed to spawn\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5] Traceback (most recent call last):\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]   File \"/opt/stack/nova/nova/compute/manager.py\", line 1436, in _spawn\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]     block_device_info)\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]   File \"/opt/stack/nova/nova/virt/vmwareapi/driver.py\", line 624, in spawn\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]     admin_password, network_info, block_device_info)\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]   File \"/opt/stack/nova/nova/virt/vmwareapi/vmops.py\", line 588, in spawn\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]     unit_number)\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]   File \"/opt/stack/nova/nova/virt/vmwareapi/volumeops.py\", line 71, in attach_disk_to_vm\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5]     self._session._wait_for_task(instance_uuid, reconfig_task)\n...\n...\n2013-11-12 11:17:29.514 TRACE nova.compute.manager [instance: ef2a740a-76e9-44d3-b84a-a862ab949ef5] NovaException: The device \u00270\u0027 is referring to a nonexisting controller \u0027-,101\u0027.\n\nYou can take a look at volumeops._attach_volume_vmdk()\nto see how the controller with vmdk attached is found and used.","commit_id":"6aff2db280847342fa24989ad4e3064ad58039b1"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"9d709721151ff1bb2c523bb8a0f140682f870811","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"            # Create ephemeral disk for instance."},{"line_number":536,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":537,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * unit.Mi"},{"line_number":538,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":539,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":540,"context_line":"                ephemeral_disk_path \u003d vm_util.build_datastore_path("}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FCX4%3D","line":537,"updated":"2013-11-15 10:51:30.000000000","message":"First apologies since I just requested this code be moved down. But I now think we should consider factoring this out instead, especially since it bears so much similarity to _create_virtual_disk. For instance, the logic in _create_virtual_disk can be moved into a helper that takes actual parameters like path, size, adapter_type, disk_type, etc, and we can call that from both here and _create_virtual_disk. Alternatively just put a TODO comment to remind of the refactoring in the future.","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"98ce6cbeed3e1e6d4af929ca4d165f6166cf8590","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"            # Create ephemeral disk for instance."},{"line_number":536,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":537,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * unit.Mi"},{"line_number":538,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":539,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"},{"line_number":540,"context_line":"                ephemeral_disk_path \u003d vm_util.build_datastore_path("}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FCNU%3D","line":537,"in_reply_to":"AAAATn%2F%2FCX4%3D","updated":"2013-11-15 11:25:00.000000000","message":"my initial patch do have a disk_util file to do this, but after several times rebase. I forget to do it.","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"9d709721151ff1bb2c523bb8a0f140682f870811","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":549,"context_line":"                        \"%(ephemeral_size)s KB and adapter type \""},{"line_number":550,"context_line":"                        \"lsiLogic on the host local store \""},{"line_number":551,"context_line":"                        \"%(data_store_name)s\"),"},{"line_number":552,"context_line":"                        {\"ephemeral_size\": ephemeral_size,"},{"line_number":553,"context_line":"                        \"data_store_name\": data_store_name}, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FClU%3D","line":550,"updated":"2013-11-15 10:51:30.000000000","message":"Nit: The adapter type is not always lsiLogic.","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"98ce6cbeed3e1e6d4af929ca4d165f6166cf8590","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":549,"context_line":"                        \"%(ephemeral_size)s KB and adapter type \""},{"line_number":550,"context_line":"                        \"lsiLogic on the host local store \""},{"line_number":551,"context_line":"                        \"%(data_store_name)s\"),"},{"line_number":552,"context_line":"                        {\"ephemeral_size\": ephemeral_size,"},{"line_number":553,"context_line":"                        \"data_store_name\": data_store_name}, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FCQo%3D","line":550,"in_reply_to":"AAAATn%2F%2FClU%3D","updated":"2013-11-15 11:25:00.000000000","message":"Done","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"9d709721151ff1bb2c523bb8a0f140682f870811","unresolved":false,"context_lines":[{"line_number":578,"context_line":"                                                \u0027get_dynamic_property\u0027,"},{"line_number":579,"context_line":"                                                vm_ref, \u0027VirtualMachine\u0027,"},{"line_number":580,"context_line":"                                                \u0027config.hardware.device\u0027)"},{"line_number":581,"context_line":"                    (vmdk_file_path, controller_key, adapter_type, disk_type,"},{"line_number":582,"context_line":"                    u_num) \u003d vm_util.get_vmdk_path_and_adapter_type(hw_devices)"},{"line_number":583,"context_line":"                    unit_number \u003d u_num + 1"},{"line_number":584,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FCeg%3D","line":581,"updated":"2013-11-15 10:51:30.000000000","message":"Can you do the favor of adding a comment to get_vmdk_path_and_adapter_type that says:\n\"Assumes all virtual disks are attached to the same type of adapter, and returns the disk with the highest slot number\"\n\nConsider factoring this out into a function and only return the controller key and next available unit number. This also avoids the subtle quirk here where we are overriding two previously assigned variables adapter_type and disk_type.","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"98ce6cbeed3e1e6d4af929ca4d165f6166cf8590","unresolved":false,"context_lines":[{"line_number":578,"context_line":"                                                \u0027get_dynamic_property\u0027,"},{"line_number":579,"context_line":"                                                vm_ref, \u0027VirtualMachine\u0027,"},{"line_number":580,"context_line":"                                                \u0027config.hardware.device\u0027)"},{"line_number":581,"context_line":"                    (vmdk_file_path, controller_key, adapter_type, disk_type,"},{"line_number":582,"context_line":"                    u_num) \u003d vm_util.get_vmdk_path_and_adapter_type(hw_devices)"},{"line_number":583,"context_line":"                    unit_number \u003d u_num + 1"},{"line_number":584,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FCO4%3D","line":581,"in_reply_to":"AAAATn%2F%2FCeg%3D","updated":"2013-11-15 11:25:00.000000000","message":"I have noticed that  right now get_vmdk_path_and_adapter_type assumes all virtual disks are attached to the same type of adapter, I\u0027ll submit a patch to fix cdrom attachment which hard coded to use a  ide adapter , when change it to get the adapter and unit_number by calling get_vmdk_path_and_adapter_type, I think all will be fine. \n\nthank you for your comments and suggestion.","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":8027,"name":"Vui Lam","email":"vui@vmware.com","username":"vui"},"change_message_id":"9d709721151ff1bb2c523bb8a0f140682f870811","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                                                vm_ref, \u0027VirtualMachine\u0027,"},{"line_number":580,"context_line":"                                                \u0027config.hardware.device\u0027)"},{"line_number":581,"context_line":"                    (vmdk_file_path, controller_key, adapter_type, disk_type,"},{"line_number":582,"context_line":"                    u_num) \u003d vm_util.get_vmdk_path_and_adapter_type(hw_devices)"},{"line_number":583,"context_line":"                    unit_number \u003d u_num + 1"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"                self._volumeops.attach_disk_to_vm(vm_ref, instance,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FCgw%3D","line":582,"updated":"2013-11-15 10:51:30.000000000","message":"The indent is a little off.","commit_id":"8bf2e3b0db6a0398273e9844691aa9d75786bc7c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3119e7fdc0c110d58ef25436c8c0dfc5522c8863","unresolved":false,"context_lines":[{"line_number":547,"context_line":"                    uploaded_iso_path,"},{"line_number":548,"context_line":"                    1 if adapter_type in [\u0027ide\u0027] else 0)"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"            # Create ephemeral disk for instance."},{"line_number":551,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":552,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * unit.Mi"},{"line_number":553,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B7vA%3D","line":550,"updated":"2013-11-18 12:30:21.000000000","message":"Question (and sorry for chiming very late with this), why is this code not evoked when we are booting from a cinder volume (line 427 is the if which indicates that this is not a cinder volume)","commit_id":"50be378a4fe12664b2c1413ec323080a933c791e"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"3c232574a23091a2b0c41e72c7f1f7e1e1632650","unresolved":false,"context_lines":[{"line_number":561,"context_line":"                        disk_type)"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":564,"context_line":"                        \"%(ephemeral_size)s KB and adapter type \""},{"line_number":565,"context_line":"                        \"%(adapter_type)s on the host local store \""},{"line_number":566,"context_line":"                        \"%(data_store_name)s\"),"},{"line_number":567,"context_line":"                        {\"ephemeral_size\": ephemeral_size,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F%2B%2BdE%3D","line":564,"updated":"2013-11-17 08:54:38.000000000","message":"nit: It is better make those lines keep align with above.","commit_id":"50be378a4fe12664b2c1413ec323080a933c791e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d9163288ddecbd278ad3bc314e268e98c6d79bc0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import base64"},{"line_number":26,"context_line":"import copy"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import posixpath"},{"line_number":29,"context_line":"import time"},{"line_number":30,"context_line":"import urllib"},{"line_number":31,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F81Tk%3D","line":28,"updated":"2013-12-19 19:21:07.000000000","message":"I would prefer os.path over posixpath.  os.path is platform agnostic while posixpath assumes a unix style system.","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84596b2c940c6a5f7bcb85d44d4ac74c95b3950d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import base64"},{"line_number":26,"context_line":"import copy"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import posixpath"},{"line_number":29,"context_line":"import time"},{"line_number":30,"context_line":"import urllib"},{"line_number":31,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F800w%3D","line":28,"in_reply_to":"AAAATn%2F81Ew%3D","updated":"2013-12-19 21:50:40.000000000","message":"Thanks for the explanation.  It would be nice to have a comment explaining this, but since there\u0027s a test that will fail if run on a Windows system I think it\u0027ll be fine for now.\n\nIdeally you may want to consider a path library that distinguishes between paths generated for Nova and those generated for ESXi.","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"918ade8b7d00e38d11e73036f56a44cd0c100791","unresolved":false,"context_lines":[{"line_number":25,"context_line":"import base64"},{"line_number":26,"context_line":"import copy"},{"line_number":27,"context_line":"import os"},{"line_number":28,"context_line":"import posixpath"},{"line_number":29,"context_line":"import time"},{"line_number":30,"context_line":"import urllib"},{"line_number":31,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F81Ew%3D","line":28,"in_reply_to":"AAAATn%2F81Tk%3D","updated":"2013-12-19 20:37:47.000000000","message":"hey Andrew. This is for manipulating file paths for use on the ESXi host itself. These are always posix paths. So you can\u0027t allow the use of os.path because on windows that will generate the wrong path name.","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"e5bd26f828e6d2664350fb7d127d30e3e8302129","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                         \"data_store_name\": data_store_name},"},{"line_number":410,"context_line":"                        instance\u003dinstance)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        def _get_virtual_disk_info():"},{"line_number":413,"context_line":"            \"\"\"Get instance disk adapter controller key and next available"},{"line_number":414,"context_line":"               unit number."},{"line_number":415,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F9%2Bks%3D","line":412,"updated":"2013-12-03 20:40:43.000000000","message":"um... is this a nested method? why? Can we please not add more of these nested methods without a very good reason!?!","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d9163288ddecbd278ad3bc314e268e98c6d79bc0","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                         \"data_store_name\": data_store_name},"},{"line_number":410,"context_line":"                        instance\u003dinstance)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        def _get_virtual_disk_info():"},{"line_number":413,"context_line":"            \"\"\"Get instance disk adapter controller key and next available"},{"line_number":414,"context_line":"               unit number."},{"line_number":415,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F81Uo%3D","line":412,"in_reply_to":"AAAATn%2F84wo%3D","updated":"2013-12-19 19:21:07.000000000","message":"At the very least it would be nice to pass in arguments and not grab variables from the outer scope.  But since it is consistent with other methods here I\u0027m going to overlook it.","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"ca567032306a82dab8851119aa88b690a17ac7e9","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                         \"data_store_name\": data_store_name},"},{"line_number":410,"context_line":"                        instance\u003dinstance)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        def _get_virtual_disk_info():"},{"line_number":413,"context_line":"            \"\"\"Get instance disk adapter controller key and next available"},{"line_number":414,"context_line":"               unit number."},{"line_number":415,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F84wo%3D","line":412,"in_reply_to":"AAAATn%2F9%2Bks%3D","updated":"2013-12-19 06:20:39.000000000","message":"I think it\u0027s okay these are all methods of are of _get_image_properties(). all of these image helper functions should probably be pulled into their own image.py file","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d009359f1db02425232dc3f367194197764545ac","unresolved":false,"context_lines":[{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        def _get_virtual_disk_info():"},{"line_number":413,"context_line":"            \"\"\"Get instance disk adapter controller key and next available"},{"line_number":414,"context_line":"               unit number."},{"line_number":415,"context_line":"            \"\"\""},{"line_number":416,"context_line":"            hw_devices \u003d self._session._call_method(vim_util,"},{"line_number":417,"context_line":"                                        \u0027get_dynamic_property\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAATn%2F%2Bgig%3D","line":414,"updated":"2013-11-25 10:58:50.000000000","message":"indentation - this should be 4 spaces back.","commit_id":"dbb5b211064baa433584d04fac11dd898eae5e9b"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"c72c1ca92cfa30104ac2822c4fb0ba3aab9b228b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import collections"},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import os"},{"line_number":29,"context_line":"import posixpath"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":"import urllib"},{"line_number":32,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAATn%2F8pQw%3D","line":29,"updated":"2013-12-23 20:14:22.000000000","message":"This has caused several questions, a comment about why you need to use posixpath might be wise.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"ce243867c594fd670007fa097252368b3c0ea963","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import collections"},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import os"},{"line_number":29,"context_line":"import posixpath"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":"import urllib"},{"line_number":32,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsT8%3D","line":29,"in_reply_to":"AAAATn%2F8pQw%3D","updated":"2014-01-09 15:19:43.000000000","message":"I am not sure if it\u0027s appropriate to add comment here,have concern about the coding style.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"785f4f1fe2bddaf0c772fac7d457380a88f74f8a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import collections"},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import os"},{"line_number":29,"context_line":"import posixpath"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":"import urllib"},{"line_number":32,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2Fg8s%3D","line":29,"in_reply_to":"AAAAUH%2F%2FrtY%3D","updated":"2014-01-15 04:01:10.000000000","message":"thanks for your suggestion.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a606abb2eb883051f623c2c2d96f3060088a8ad9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"import collections"},{"line_number":27,"context_line":"import copy"},{"line_number":28,"context_line":"import os"},{"line_number":29,"context_line":"import posixpath"},{"line_number":30,"context_line":"import time"},{"line_number":31,"context_line":"import urllib"},{"line_number":32,"context_line":"import urllib2"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FrtY%3D","line":29,"in_reply_to":"AAAAUH%2F%2FsT8%3D","updated":"2014-01-09 16:48:50.000000000","message":"Alternatively, if it\u0027s confusing or other reviewers are asking about it several times, call it out and explain why it\u0027s necessary in the commit message.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"906439c050b0e64c573325f5071b5ff3a13d4319","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                         \"data_store_name\": data_store_name},"},{"line_number":419,"context_line":"                        instance\u003dinstance)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        def _get_virtual_disk_info():"},{"line_number":422,"context_line":"            \"\"\"Get instance disk adapter controller key and next available"},{"line_number":423,"context_line":"               unit number."},{"line_number":424,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsDg%3D","line":421,"updated":"2014-01-09 16:08:19.000000000","message":"I really don\u0027t like how all of these helper utility methods are built into the spawn method because it makes it very difficult to test permutations of this code and exercise coverage on these nested helper methods independently, you have to run the full spawn method with slight changes each time to test conditions/coverage within each nested method.\n\nI realize it\u0027s convention at this point in this code but I don\u0027t see why it\u0027s a good convention that should be repeated.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"c5ad24dad7b1c6b002aed5a4873d77c6859a8eda","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                         \"data_store_name\": data_store_name},"},{"line_number":419,"context_line":"                        instance\u003dinstance)"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        def _get_virtual_disk_info():"},{"line_number":422,"context_line":"            \"\"\"Get instance disk adapter controller key and next available"},{"line_number":423,"context_line":"               unit number."},{"line_number":424,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2Bh5U%3D","line":421,"in_reply_to":"AAAAUH%2F%2FsDg%3D","updated":"2014-01-24 17:50:36.000000000","message":"Matt,\n\nI actually have a separate contributor working on breaking this pattern for us. I\u0027m hoping to see a series of refactor patches come out over the next few weeks that address this problem. I don\u0027t like the pattern either but it will introduce new bugs so I wanted to wait until Minesweeper was available to assist in the effort.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"906439c050b0e64c573325f5071b5ff3a13d4319","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                    1 if adapter_type in [\u0027ide\u0027] else 0)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"            # Create ephemeral disk for instance."},{"line_number":562,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":563,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * unit.Mi"},{"line_number":564,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":565,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsPU%3D","line":562,"updated":"2014-01-09 16:08:19.000000000","message":"Instance is an object here now, so you should access it like an object, i.e. instance.ephemeral_db (and throughout the usage of instance[\u0027foo\u0027] in this change).  I realize that might impact how the tests run though, since there is a lot of setup for the test using a fake instance which is a dict....","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"785f4f1fe2bddaf0c772fac7d457380a88f74f8a","unresolved":false,"context_lines":[{"line_number":559,"context_line":"                    1 if adapter_type in [\u0027ide\u0027] else 0)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"            # Create ephemeral disk for instance."},{"line_number":562,"context_line":"            if instance[\u0027ephemeral_gb\u0027]:"},{"line_number":563,"context_line":"                ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * unit.Mi"},{"line_number":564,"context_line":"                ephemeral_disk_name \u003d posixpath.join(instance[\u0027uuid\u0027],"},{"line_number":565,"context_line":"                                         \u0027ephemeral_disk.vmdk\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FUcg%3D","line":562,"in_reply_to":"AAAAUH%2F%2FsPU%3D","updated":"2014-01-15 04:01:10.000000000","message":"instance object has backwards compatibility for instance dict usage, and I haven\u0027t see any other drivers changing to use new objects, I think we can change to use object later in a separate patch to do this.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"906439c050b0e64c573325f5071b5ff3a13d4319","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                        disk_type)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":574,"context_line":"                            \"%(ephemeral_size)s KB and adapter type \""},{"line_number":575,"context_line":"                            \"%(adapter_type)s on the host local store \""},{"line_number":576,"context_line":"                            \"%(data_store_name)s\"),"},{"line_number":577,"context_line":"                            {\"ephemeral_size\": ephemeral_size,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsJ4%3D","line":574,"updated":"2014-01-09 16:08:19.000000000","message":"Isn\u0027t this MB given the multiplier unit on line 563?","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"785f4f1fe2bddaf0c772fac7d457380a88f74f8a","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                        disk_type)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"                LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":574,"context_line":"                            \"%(ephemeral_size)s KB and adapter type \""},{"line_number":575,"context_line":"                            \"%(adapter_type)s on the host local store \""},{"line_number":576,"context_line":"                            \"%(data_store_name)s\"),"},{"line_number":577,"context_line":"                            {\"ephemeral_size\": ephemeral_size,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FUcI%3D","line":574,"in_reply_to":"AAAAUH%2F%2FsJ4%3D","updated":"2014-01-15 04:01:10.000000000","message":"Done","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"906439c050b0e64c573325f5071b5ff3a13d4319","unresolved":false,"context_lines":[{"line_number":577,"context_line":"                            {\"ephemeral_size\": ephemeral_size,"},{"line_number":578,"context_line":"                            \"adapter_type\": adapter_type,"},{"line_number":579,"context_line":"                            \"data_store_name\": data_store_name},"},{"line_number":580,"context_line":"                            instance\u003dinstance)"},{"line_number":581,"context_line":"                #TODO(yaguang): Refactor this to a disk_util file."},{"line_number":582,"context_line":"                vmdk_create_task \u003d self._session._call_method("},{"line_number":583,"context_line":"                                        self._session._get_vim(),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsIY%3D","line":580,"updated":"2014-01-09 16:08:19.000000000","message":"Alignment seems wrong here, should be aligned with the Message object, not the string that goes into it.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"785f4f1fe2bddaf0c772fac7d457380a88f74f8a","unresolved":false,"context_lines":[{"line_number":577,"context_line":"                            {\"ephemeral_size\": ephemeral_size,"},{"line_number":578,"context_line":"                            \"adapter_type\": adapter_type,"},{"line_number":579,"context_line":"                            \"data_store_name\": data_store_name},"},{"line_number":580,"context_line":"                            instance\u003dinstance)"},{"line_number":581,"context_line":"                #TODO(yaguang): Refactor this to a disk_util file."},{"line_number":582,"context_line":"                vmdk_create_task \u003d self._session._call_method("},{"line_number":583,"context_line":"                                        self._session._get_vim(),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FUaE%3D","line":580,"in_reply_to":"AAAAUH%2F%2FsIY%3D","updated":"2014-01-15 04:01:10.000000000","message":"Done","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"906439c050b0e64c573325f5071b5ff3a13d4319","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                                             vmdk_create_task)"},{"line_number":592,"context_line":"                # NOTE(yaguang): Attach ephemeral disk to the VM, always try to"},{"line_number":593,"context_line":"                # use same type of adapter for root disk and ephemeral disk."},{"line_number":594,"context_line":"                if adapter_type \u003d\u003d \u0027ide\u0027:"},{"line_number":595,"context_line":"                    if configdrive.required_by(instance):"},{"line_number":596,"context_line":"                        # Create a new IDE controller for ephemeral disk to"},{"line_number":597,"context_line":"                        # use by specifying the adapter controller key."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsEQ%3D","line":594,"updated":"2014-01-09 16:08:19.000000000","message":"Where is this condition tested for the case that it is \u0027ide\u0027?  From what I can tell, the adapter_type is always going to be \u0027lsiLogic\u0027 in the tests, so this block isn\u0027t tested.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"c5ad24dad7b1c6b002aed5a4873d77c6859a8eda","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                                             vmdk_create_task)"},{"line_number":592,"context_line":"                # NOTE(yaguang): Attach ephemeral disk to the VM, always try to"},{"line_number":593,"context_line":"                # use same type of adapter for root disk and ephemeral disk."},{"line_number":594,"context_line":"                if adapter_type \u003d\u003d \u0027ide\u0027:"},{"line_number":595,"context_line":"                    if configdrive.required_by(instance):"},{"line_number":596,"context_line":"                        # Create a new IDE controller for ephemeral disk to"},{"line_number":597,"context_line":"                        # use by specifying the adapter controller key."}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2Bh4k%3D","line":594,"in_reply_to":"AAAAUH%2F%2FsEQ%3D","updated":"2014-01-24 17:50:36.000000000","message":"This is a good point, and I had missed it. I may have to get a tool that lets me see branch coverage to make this easier for me to spot.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"906439c050b0e64c573325f5071b5ff3a13d4319","unresolved":false,"context_lines":[{"line_number":603,"context_line":"                else:"},{"line_number":604,"context_line":"                    controller_key, unit_number \u003d _get_virtual_disk_info()"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"                self._volumeops.attach_disk_to_vm(vm_ref, instance,"},{"line_number":607,"context_line":"                                                  adapter_type,"},{"line_number":608,"context_line":"                                                  disk_type,"},{"line_number":609,"context_line":"                                                  ephemeral_disk_path,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FsHs%3D","line":606,"updated":"2014-01-09 16:08:19.000000000","message":"nit: suggest moving instance arg to it\u0027s own line since all of the other args are on separate lines.","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":1313,"name":"yaguang","display_name":"Yaguang Tang","email":"heut2008@gmail.com","username":"heut2008"},"change_message_id":"785f4f1fe2bddaf0c772fac7d457380a88f74f8a","unresolved":false,"context_lines":[{"line_number":603,"context_line":"                else:"},{"line_number":604,"context_line":"                    controller_key, unit_number \u003d _get_virtual_disk_info()"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"                self._volumeops.attach_disk_to_vm(vm_ref, instance,"},{"line_number":607,"context_line":"                                                  adapter_type,"},{"line_number":608,"context_line":"                                                  disk_type,"},{"line_number":609,"context_line":"                                                  ephemeral_disk_path,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAUH%2F%2FUaU%3D","line":606,"in_reply_to":"AAAAUH%2F%2FsHs%3D","updated":"2014-01-15 04:01:10.000000000","message":"Done","commit_id":"24875ca1b7983749f104020421eedce5ef2c55ec"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b1961d7111763e5bbfca23aeea2bb5dabb1c2ee2","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                                             vmdk_create_task)"},{"line_number":589,"context_line":"                # NOTE(yaguang): Attach ephemeral disk to the VM, always try to"},{"line_number":590,"context_line":"                # use same type of adapter for root disk and ephemeral disk."},{"line_number":591,"context_line":"                if adapter_type \u003d\u003d \u0027ide\u0027:"},{"line_number":592,"context_line":"                    if configdrive.required_by(instance):"},{"line_number":593,"context_line":"                        # Create a new IDE controller for ephemeral disk to"},{"line_number":594,"context_line":"                        # use by specifying the adapter controller key."}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2B0ug%3D","line":591,"updated":"2014-01-21 18:14:18.000000000","message":"This condition is still not tested, my comment in PS15 was ignored.","commit_id":"350914c70a680e344b0381182d4d9e6a238c08a4"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"119829588cca21d602cf7589912fc9c0458f2132","unresolved":false,"context_lines":[{"line_number":588,"context_line":"                                             vmdk_create_task)"},{"line_number":589,"context_line":"                # NOTE(yaguang): Attach ephemeral disk to the VM, always try to"},{"line_number":590,"context_line":"                # use same type of adapter for root disk and ephemeral disk."},{"line_number":591,"context_line":"                if adapter_type \u003d\u003d \u0027ide\u0027:"},{"line_number":592,"context_line":"                    if configdrive.required_by(instance):"},{"line_number":593,"context_line":"                        # Create a new IDE controller for ephemeral disk to"},{"line_number":594,"context_line":"                        # use by specifying the adapter controller key."}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2BG3o%3D","line":591,"in_reply_to":"AAAAUH%2F%2B0ug%3D","updated":"2014-01-30 02:52:02.000000000","message":"Rebasing change on other bug fix work makes this patch do much less. This branch is no longer present here.","commit_id":"350914c70a680e344b0381182d4d9e6a238c08a4"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"11fd4e3b120a6af03569e0afa33722931027d277","unresolved":false,"context_lines":[{"line_number":592,"context_line":"                    if configdrive.required_by(instance):"},{"line_number":593,"context_line":"                        # Create a new IDE controller for ephemeral disk to"},{"line_number":594,"context_line":"                        # use by specifying the adapter controller key."},{"line_number":595,"context_line":"                        controller_key \u003d 201"},{"line_number":596,"context_line":"                        unit_number \u003d 0"},{"line_number":597,"context_line":"                    else:"},{"line_number":598,"context_line":"                        controller_key \u003d 200"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2BaJU%3D","line":595,"updated":"2014-01-27 08:56:40.000000000","message":"I would suggest to use my change for dealing with controller_keys and unit_numbers: https://review.openstack.org/#/c/66523/\nYou will be able to implement this in a lot more clean way.","commit_id":"350914c70a680e344b0381182d4d9e6a238c08a4"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"119829588cca21d602cf7589912fc9c0458f2132","unresolved":false,"context_lines":[{"line_number":592,"context_line":"                    if configdrive.required_by(instance):"},{"line_number":593,"context_line":"                        # Create a new IDE controller for ephemeral disk to"},{"line_number":594,"context_line":"                        # use by specifying the adapter controller key."},{"line_number":595,"context_line":"                        controller_key \u003d 201"},{"line_number":596,"context_line":"                        unit_number \u003d 0"},{"line_number":597,"context_line":"                    else:"},{"line_number":598,"context_line":"                        controller_key \u003d 200"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2BG3w%3D","line":595,"in_reply_to":"AAAAUH%2F%2BaJU%3D","updated":"2014-01-30 02:52:02.000000000","message":"That did make this a lot more straight forward. Hopefully Minesweeper will like the new revision.","commit_id":"350914c70a680e344b0381182d4d9e6a238c08a4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"25aabeca8dce5408d0a76b88fbbf41824fe407ed","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                     file_delete_task)"},{"line_number":173,"context_line":"        LOG.debug(_(\"Deleted the datastore file\"), instance\u003dinstance)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_ephemeral_disk(self,"},{"line_number":176,"context_line":"                               client_factory,"},{"line_number":177,"context_line":"                               service_content,"},{"line_number":178,"context_line":"                               instance,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F%2BF8c%3D","line":175,"updated":"2014-01-30 07:19:10.000000000","message":"it may be worth considering changing this to something more generic then it can also be used by the swap disk support https://review.openstack.org/#/c/69843/ (that patch should be based on this one)","commit_id":"ee77a8ac05b269d98e9e85e6a2d7f50b82ba2a12"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"0d61d8b7a5e380070301dc7851ec00603ce0646e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                     file_delete_task)"},{"line_number":173,"context_line":"        LOG.debug(_(\"Deleted the datastore file\"), instance\u003dinstance)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_ephemeral_disk(self,"},{"line_number":176,"context_line":"                               client_factory,"},{"line_number":177,"context_line":"                               service_content,"},{"line_number":178,"context_line":"                               instance,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9%2BkE%3D","line":175,"in_reply_to":"AAAAUH%2F%2BF8c%3D","updated":"2014-01-31 13:24:23.000000000","message":"I agree in principle, but disagree on two fine points.\n\n 1. _create_virtual_disk exists as a nested method (it never\n leaves enclosing scope) within the spawn method. That is the\n method that *should* be pulled out and used inside this method.\n \nThe only reason I have not done that already is to try and limit\n the size of this patch. I may reconsider.\n\n 2. I worry about creating deep dependency chains of patches. \nWe have so few review cycles given to us that creating long\n chains of dependencies between reviews could cause problems. \n\nI have written a great deal here so let me distill this to actions:\n\n TODO: a separate refactor of _create_virtual_disk\n TODO: after that refactor _create_ephemeral_disk \n            should be refactored based on that\n TODO: refactor swap disk based on \n            _create_virtual_disk refactor\n\nI may be able to act on some of these shortly.","commit_id":"ee77a8ac05b269d98e9e85e6a2d7f50b82ba2a12"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"50dd4dc10212cfbefc52a4c93d6342677290a9d3","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        LOG.debug(_(\"Deleted the datastore file\"), instance\u003dinstance)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_ephemeral_disk(self,"},{"line_number":176,"context_line":"                               client_factory,"},{"line_number":177,"context_line":"                               service_content,"},{"line_number":178,"context_line":"                               instance,"},{"line_number":179,"context_line":"                               data_store_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9%2FZo%3D","line":176,"updated":"2014-01-31 09:23:19.000000000","message":"there is no need to pass client_factory and service_content here, you can obtain them from \u0027self\u0027","commit_id":"ee77a8ac05b269d98e9e85e6a2d7f50b82ba2a12"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"0d61d8b7a5e380070301dc7851ec00603ce0646e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        LOG.debug(_(\"Deleted the datastore file\"), instance\u003dinstance)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def _create_ephemeral_disk(self,"},{"line_number":176,"context_line":"                               client_factory,"},{"line_number":177,"context_line":"                               service_content,"},{"line_number":178,"context_line":"                               instance,"},{"line_number":179,"context_line":"                               data_store_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"AAAAUH%2F9%2Bj4%3D","line":176,"in_reply_to":"AAAAUH%2F9%2FZo%3D","updated":"2014-01-31 13:24:23.000000000","message":"I have no defense for this other than I was lazy and allowed my\nIDE to execute an automatic refactor without inspecting it. I \nwould have put a -1 ... I will correct this. You shouldn\u0027t need \nclient_factory or service_content because \nself._session._get_vim().get_service_content() will yield the \nsame content.\n\nI will try to be in less of a hurry with my next revision.","commit_id":"ee77a8ac05b269d98e9e85e6a2d7f50b82ba2a12"},{"author":{"_account_id":9046,"name":"Maithem","email":"munshedm@vmware.com","username":"Maithem"},"change_message_id":"09a5640b4607764d12d0b88b9ee35eb8e20de946","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        LOG.debug(_(\"Deleted the datastore file\"), instance\u003dinstance)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def _create_ephemeral_disk(self,"},{"line_number":173,"context_line":"                               client_factory,"},{"line_number":174,"context_line":"                               service_content,"},{"line_number":175,"context_line":"                               instance,"},{"line_number":176,"context_line":"                               data_store_name,"}],"source_content_type":"text/x-python","patch_set":22,"id":"AAAAUX%2F%2FHBc%3D","line":173,"updated":"2014-02-17 03:29:28.000000000","message":"Can you please rebase on this : https://review.openstack.org/#/c/73865/","commit_id":"7f6365a5e11b62efb43bca6312ce20bc11791eb0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"83a642ede56ff1215ac3a91ff74c43669b1d530c","unresolved":false,"context_lines":[{"line_number":850,"context_line":"                        \"get_dynamic_property\", vm_ref,"},{"line_number":851,"context_line":"                        \"VirtualMachine\", \"config.hardware.device\")"},{"line_number":852,"context_line":"            (vmdk_file_path_before_snapshot, adapter_type,"},{"line_number":853,"context_line":"             disk_type) \u003d vm_util.get_vmdk_path_and_adapter_type(hw_devices)"},{"line_number":854,"context_line":"            datastore_name \u003d vm_util.split_datastore_path("},{"line_number":855,"context_line":"                                        vmdk_file_path_before_snapshot)[0]"},{"line_number":856,"context_line":"            os_type \u003d self._session._call_method(vim_util,"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2BuaY%3D","line":853,"updated":"2014-02-19 15:05:28.000000000","message":"this change looks unrelated to the patch set.","commit_id":"12d9809bdb1584c4514d9c981ce941fe1100e40d"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"89ed8b2f96aecf1245b52f46b1e9b9f4c5cbfdc7","unresolved":false,"context_lines":[{"line_number":850,"context_line":"                        \"get_dynamic_property\", vm_ref,"},{"line_number":851,"context_line":"                        \"VirtualMachine\", \"config.hardware.device\")"},{"line_number":852,"context_line":"            (vmdk_file_path_before_snapshot, adapter_type,"},{"line_number":853,"context_line":"             disk_type) \u003d vm_util.get_vmdk_path_and_adapter_type(hw_devices)"},{"line_number":854,"context_line":"            datastore_name \u003d vm_util.split_datastore_path("},{"line_number":855,"context_line":"                                        vmdk_file_path_before_snapshot)[0]"},{"line_number":856,"context_line":"            os_type \u003d self._session._call_method(vim_util,"}],"source_content_type":"text/x-python","patch_set":24,"id":"AAAAUX%2F%2BuOQ%3D","line":853,"in_reply_to":"AAAAUX%2F%2BuaY%3D","updated":"2014-02-19 16:07:49.000000000","message":"hmm... a merge artifact? I did not edit this line. I\u0027ll remove it.","commit_id":"12d9809bdb1584c4514d9c981ce941fe1100e40d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"56a0e4403cd8b99e04f1bf42a4e26704115a10e5","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        :param data_store_name:"},{"line_number":248,"context_line":"        :param dc_info:"},{"line_number":249,"context_line":"        :param disk_type:"},{"line_number":250,"context_line":"        :param adapter_type:"},{"line_number":251,"context_line":"        :return: ephemeral_disk_path, ephemeral_size"},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        ephemeral_size \u003d instance[\u0027ephemeral_gb\u0027] * units.Mi"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAUX%2F%2Bd8s%3D","line":250,"updated":"2014-02-21 00:42:44.000000000","message":"Is there any reason to list these if you\u0027re not going to document them? This just looks kinda silly.","commit_id":"585e0addcb78c514669bcc435612c93ced8f3f03"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d532c732d8dc52547a2d970380df98c2b2c576f2","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        :param adapter_type: ide, lsiLogic, etc."},{"line_number":263,"context_line":"        :return: ephemeral_disk_path, ephemeral_size_in_kb"},{"line_number":264,"context_line":"        \"\"\""},{"line_number":265,"context_line":"        ephemeral_size \u003d instance.get(\u0027ephemeral_gb\u0027) * units.Mi"},{"line_number":266,"context_line":"        # NOTE(hartsocks): ephemeral disk path is on ESX so it is always a"},{"line_number":267,"context_line":"        # posix path no matter what the OS this code is run on."},{"line_number":268,"context_line":"        ephemeral_disk_name \u003d posixpath.join(instance.get(\u0027uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAU3%2F%2FyJA%3D","line":265,"updated":"2014-02-24 20:18:04.000000000","message":"please add a unit suffix to help avoid confusion.","commit_id":"2ac820d7492e44b7750d4380daff88e8f3fff614"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"775fc838417c30ac59cbb67b0fe08fe8e7f3e02d","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        :param adapter_type: ide, lsiLogic, etc."},{"line_number":263,"context_line":"        :return: ephemeral_disk_path, ephemeral_size_in_kb"},{"line_number":264,"context_line":"        \"\"\""},{"line_number":265,"context_line":"        ephemeral_size \u003d instance.get(\u0027ephemeral_gb\u0027) * units.Mi"},{"line_number":266,"context_line":"        # NOTE(hartsocks): ephemeral disk path is on ESX so it is always a"},{"line_number":267,"context_line":"        # posix path no matter what the OS this code is run on."},{"line_number":268,"context_line":"        ephemeral_disk_name \u003d posixpath.join(instance.get(\u0027uuid\u0027),"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAVX%2F%2F%2BY8%3D","line":265,"in_reply_to":"AAAAU3%2F%2FyJA%3D","updated":"2014-02-27 02:47:25.000000000","message":"Done","commit_id":"2ac820d7492e44b7750d4380daff88e8f3fff614"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d532c732d8dc52547a2d970380df98c2b2c576f2","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            data_store_name, ephemeral_disk_name)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":274,"context_line":"                    \"%(ephemeral_size)s MB and adapter type \""},{"line_number":275,"context_line":"                    \"%(adapter_type)s on the host local store \""},{"line_number":276,"context_line":"                    \"%(data_store_name)s\"),"},{"line_number":277,"context_line":"                  {\"ephemeral_size\": ephemeral_size,"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAU3%2F%2FyHo%3D","line":274,"updated":"2014-02-24 20:18:04.000000000","message":"You\u0027re logging ephemeral_size as MB here when it\u0027s described as kb above, and appears to be kb based on the conversion from ephemeral_gb.","commit_id":"2ac820d7492e44b7750d4380daff88e8f3fff614"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"775fc838417c30ac59cbb67b0fe08fe8e7f3e02d","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            data_store_name, ephemeral_disk_name)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        LOG.debug(_(\"Creating ephemeral disk of size \""},{"line_number":274,"context_line":"                    \"%(ephemeral_size)s MB and adapter type \""},{"line_number":275,"context_line":"                    \"%(adapter_type)s on the host local store \""},{"line_number":276,"context_line":"                    \"%(data_store_name)s\"),"},{"line_number":277,"context_line":"                  {\"ephemeral_size\": ephemeral_size,"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAVX%2F%2F%2BYs%3D","line":274,"in_reply_to":"AAAAU3%2F%2FyHo%3D","updated":"2014-02-27 02:47:25.000000000","message":"Done","commit_id":"2ac820d7492e44b7750d4380daff88e8f3fff614"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"52a9f0614670043f694bd90688e0e70b2d5769d3","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        # posix path no matter what the OS this code is run on."},{"line_number":284,"context_line":"        ephemeral_disk_name \u003d \u0027ephemeral_disk.vmdk\u0027"},{"line_number":285,"context_line":"        instance_uuid \u003d instance.get(\u0027uuid\u0027)"},{"line_number":286,"context_line":"        ephemeral_disk_folder \u003d vm_util.build_datastore_path(datastore_name,"},{"line_number":287,"context_line":"                                                             instance_uuid)"},{"line_number":288,"context_line":"        ephemeral_disk_path \u003d posixpath.join(ephemeral_disk_folder,"},{"line_number":289,"context_line":"                                             ephemeral_disk_name)"}],"source_content_type":"text/x-python","patch_set":33,"id":"AAAAVX%2F%2F%2BAs%3D","line":286,"updated":"2014-02-27 04:01:29.000000000","message":"this is wrong. the disk_folder needs to be a bare posix path... this will produce a datastore path with a leading [datastore_name] in the string.","commit_id":"6c2df58636a971d8abaea3f3145ca57c8561d549"}]}
