)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"7f210392a1301778377799d635db9abffcf71f01","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix VMwareVCdriver reporting incorrect stats"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"fix bug #1180779"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I0610047ee2bddefe0ccb46568c0f48de4c0941af"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAPH%2F%2FgHw%3D","line":9,"updated":"2013-05-31 18:45:37.000000000","message":"This commit message needs more detail.  The bug report has good info that should all be included in the commit message to give detail to this commit message.\n\nSee HACKING.rst for more info on commit message guidelines.","commit_id":"d4bfafd6dc3c66331d44586aff370114cd7204db"}],"nova/virt/vmwareapi/host.py":[{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"48d5b4e6679f0029a881edb672aa6274d2d980d0","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                              \"sockets\": summary.hardware.numCpuPkgs,"},{"line_number":127,"context_line":"                              \"threads\": summary.hardware.numCpuThreads}"},{"line_number":128,"context_line":"                }"},{"line_number":129,"context_line":"        data[\"disk_total\"] \u003d ds[2] / (1024 * 1024 * 1024)"},{"line_number":130,"context_line":"        data[\"disk_available\"] \u003d ds[3] / (1024 * 1024 * 1024)"},{"line_number":131,"context_line":"        data[\"disk_used\"] \u003d data[\"disk_total\"] - data[\"disk_available\"]"},{"line_number":132,"context_line":"        data[\"host_memory_total\"] \u003d summary.hardware.memorySize / (1024 * 1024)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2UY%3D","line":129,"updated":"2013-05-21 19:12:07.000000000","message":"can these exist in their own patch?","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"}],"nova/virt/vmwareapi/vm_util.py":[{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"48d5b4e6679f0029a881edb672aa6274d2d980d0","unresolved":false,"context_lines":[{"line_number":536,"context_line":"    given cluster, if it corresponds to a local volume\"\"\""},{"line_number":537,"context_line":"    if cluster is None:"},{"line_number":538,"context_line":"        return"},{"line_number":539,"context_line":"    omission_list \u003d []"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    hosts \u003d session._call_method(vim_util, \"get_dynamic_property\","},{"line_number":542,"context_line":"                                     cluster, \"ClusterComputeResource\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2WI%3D","line":539,"updated":"2013-05-21 19:12:07.000000000","message":"could we just name this local_disk_list or similar?","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"5784d4774fb79e2341d114f829d64cd70bdeccaa","unresolved":false,"context_lines":[{"line_number":536,"context_line":"    given cluster, if it corresponds to a local volume\"\"\""},{"line_number":537,"context_line":"    if cluster is None:"},{"line_number":538,"context_line":"        return"},{"line_number":539,"context_line":"    omission_list \u003d []"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    hosts \u003d session._call_method(vim_util, \"get_dynamic_property\","},{"line_number":542,"context_line":"                                     cluster, \"ClusterComputeResource\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fujc%3D","line":539,"in_reply_to":"AAAAPH%2F%2F2WI%3D","updated":"2013-05-24 11:07:40.000000000","message":"Done","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7631,"name":"Christian Dickmann","email":"cdickmann@vmware.com","username":"cdickmann"},"change_message_id":"3624dcb119dbc8b0f04daf93758e50ee6e3d1243","unresolved":false,"context_lines":[{"line_number":559,"context_line":"    return omission_list"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"def _is_shared_datastore(omission_list, vmfsDatastoreInfo):"},{"line_number":563,"context_line":"    is_shared \u003d True"},{"line_number":564,"context_line":"    if omission_list !\u003d None and vmfsDatastoreInfo !\u003d None:"},{"line_number":565,"context_line":"        disk_partitions \u003d vmfsDatastoreInfo.vmfs.extent"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2EE%3D","line":562,"updated":"2013-05-21 20:58:02.000000000","message":"This is not the right way to determine if a datastore is shared. You should access the \"host\" property of the datastore which will tell you how many hosts are connected. Each entry in the list will be a DatastoreHostMount, which has the host moref as the \"key\" field. So [h.key for h in ds.host] should be equal to cluster.host.","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"48d5b4e6679f0029a881edb672aa6274d2d980d0","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                               host\u003dNone, mem_req_mb\u003d0):"},{"line_number":575,"context_line":"    \"\"\"Get the datastore list and choose a suitable datastore.\"\"\""},{"line_number":576,"context_line":"    data_store_name \u003d None"},{"line_number":577,"context_line":"    omission_list \u003d _get_local_disk_names(session, cluster)"},{"line_number":578,"context_line":"    if cluster is None and host is None:"},{"line_number":579,"context_line":"        data_stores \u003d session._call_method(vim_util, \"get_objects\","},{"line_number":580,"context_line":"                    \"Datastore\", [\"summary.type\", \"summary.name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2Vs%3D","line":577,"updated":"2013-05-21 19:12:07.000000000","message":"Is this variable used in this context? I don\u0027t see it.","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"5784d4774fb79e2341d114f829d64cd70bdeccaa","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                               host\u003dNone, mem_req_mb\u003d0):"},{"line_number":575,"context_line":"    \"\"\"Get the datastore list and choose a suitable datastore.\"\"\""},{"line_number":576,"context_line":"    data_store_name \u003d None"},{"line_number":577,"context_line":"    omission_list \u003d _get_local_disk_names(session, cluster)"},{"line_number":578,"context_line":"    if cluster is None and host is None:"},{"line_number":579,"context_line":"        data_stores \u003d session._call_method(vim_util, \"get_objects\","},{"line_number":580,"context_line":"                    \"Datastore\", [\"summary.type\", \"summary.name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fui8%3D","line":577,"in_reply_to":"AAAAPH%2F%2F2Tw%3D","updated":"2013-05-24 11:07:40.000000000","message":"Done","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"5784d4774fb79e2341d114f829d64cd70bdeccaa","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                               host\u003dNone, mem_req_mb\u003d0):"},{"line_number":575,"context_line":"    \"\"\"Get the datastore list and choose a suitable datastore.\"\"\""},{"line_number":576,"context_line":"    data_store_name \u003d None"},{"line_number":577,"context_line":"    omission_list \u003d _get_local_disk_names(session, cluster)"},{"line_number":578,"context_line":"    if cluster is None and host is None:"},{"line_number":579,"context_line":"        data_stores \u003d session._call_method(vim_util, \"get_objects\","},{"line_number":580,"context_line":"                    \"Datastore\", [\"summary.type\", \"summary.name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FujQ%3D","line":577,"in_reply_to":"AAAAPH%2F%2F2Vs%3D","updated":"2013-05-24 11:07:40.000000000","message":"Done","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7629,"name":"Shawn Hartsock","email":"hartsock@acm.org","username":"hartsocks"},"change_message_id":"ec1889aeeac989ee07f84896ed495c5adf1182a5","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                               host\u003dNone, mem_req_mb\u003d0):"},{"line_number":575,"context_line":"    \"\"\"Get the datastore list and choose a suitable datastore.\"\"\""},{"line_number":576,"context_line":"    data_store_name \u003d None"},{"line_number":577,"context_line":"    omission_list \u003d _get_local_disk_names(session, cluster)"},{"line_number":578,"context_line":"    if cluster is None and host is None:"},{"line_number":579,"context_line":"        data_stores \u003d session._call_method(vim_util, \"get_objects\","},{"line_number":580,"context_line":"                    \"Datastore\", [\"summary.type\", \"summary.name\","}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2Tw%3D","line":577,"in_reply_to":"AAAAPH%2F%2F2Vs%3D","updated":"2013-05-21 19:15:53.000000000","message":"I see it now on line 624.\n\nCould this be called local_disk_names or similar? Could this be declared closer to where it is used?","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7631,"name":"Christian Dickmann","email":"cdickmann@vmware.com","username":"cdickmann"},"change_message_id":"3624dcb119dbc8b0f04daf93758e50ee6e3d1243","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        ds_cap \u003d None"},{"line_number":608,"context_line":"        ds_free \u003d None"},{"line_number":609,"context_line":"        ds_accessible \u003d 0"},{"line_number":610,"context_line":"        for prop in elem.propSet:"},{"line_number":611,"context_line":"            if prop.name \u003d\u003d \"summary.type\":"},{"line_number":612,"context_line":"                ds_type \u003d prop.val"},{"line_number":613,"context_line":"            elif prop.name \u003d\u003d \"summary.name\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2Dw%3D","line":610,"updated":"2013-05-21 20:58:02.000000000","message":"We should rephrase this code like this: \npropSet \u003d dict([(prop.name, prop.val) for prop in elem.propSet]) and then access propSet, e.g. propSet[\u0027summary.accessible\u0027]","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"5784d4774fb79e2341d114f829d64cd70bdeccaa","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        ds_cap \u003d None"},{"line_number":608,"context_line":"        ds_free \u003d None"},{"line_number":609,"context_line":"        ds_accessible \u003d 0"},{"line_number":610,"context_line":"        for prop in elem.propSet:"},{"line_number":611,"context_line":"            if prop.name \u003d\u003d \"summary.type\":"},{"line_number":612,"context_line":"                ds_type \u003d prop.val"},{"line_number":613,"context_line":"            elif prop.name \u003d\u003d \"summary.name\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fui0%3D","line":610,"in_reply_to":"AAAAPH%2F%2F2Dw%3D","updated":"2013-05-24 11:07:40.000000000","message":"Done","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7631,"name":"Christian Dickmann","email":"cdickmann@vmware.com","username":"cdickmann"},"change_message_id":"3624dcb119dbc8b0f04daf93758e50ee6e3d1243","unresolved":false,"context_lines":[{"line_number":628,"context_line":"            continue"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        # Local storage identifier"},{"line_number":631,"context_line":"        if ds_type \u003d\u003d \"VMFS\" or ds_type \u003d\u003d \"NFS\":"},{"line_number":632,"context_line":"            if mem_req_mb \u003c (ds_free / (1024 * 1024)) and ds_accessible:"},{"line_number":633,"context_line":"                data_store_name \u003d ds_name"},{"line_number":634,"context_line":"                LOG.debug(_(\"Datastore %(ds_name)s has\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F2DY%3D","line":631,"updated":"2013-05-21 20:58:02.000000000","message":"Whats the goal of specifically looking at VMFS and NFS as types here? The code doesn\u0027t seem to care about the DS type.","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"45d65cbdad83260f924206451ebea70534913914","unresolved":false,"context_lines":[{"line_number":628,"context_line":"            continue"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        # Local storage identifier"},{"line_number":631,"context_line":"        if ds_type \u003d\u003d \"VMFS\" or ds_type \u003d\u003d \"NFS\":"},{"line_number":632,"context_line":"            if mem_req_mb \u003c (ds_free / (1024 * 1024)) and ds_accessible:"},{"line_number":633,"context_line":"                data_store_name \u003d ds_name"},{"line_number":634,"context_line":"                LOG.debug(_(\"Datastore %(ds_name)s has\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FzgI%3D","line":631,"in_reply_to":"AAAAPH%2F%2F2DY%3D","updated":"2013-05-22 17:00:08.000000000","message":"I\u0027m not aware of the history of this check, but based on the SDK documentation, looks like the intent is to filter datastores with volume type cifs and vfat and place the VM files only on vmfs and nfs. Do you have specific reason to allow when volume is cifs or vfat?","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"5784d4774fb79e2341d114f829d64cd70bdeccaa","unresolved":false,"context_lines":[{"line_number":628,"context_line":"            continue"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        # Local storage identifier"},{"line_number":631,"context_line":"        if ds_type \u003d\u003d \"VMFS\" or ds_type \u003d\u003d \"NFS\":"},{"line_number":632,"context_line":"            if mem_req_mb \u003c (ds_free / (1024 * 1024)) and ds_accessible:"},{"line_number":633,"context_line":"                data_store_name \u003d ds_name"},{"line_number":634,"context_line":"                LOG.debug(_(\"Datastore %(ds_name)s has\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2Fuiw%3D","line":631,"in_reply_to":"AAAAPH%2F%2FyLo%3D","updated":"2013-05-24 11:07:40.000000000","message":"Done","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7631,"name":"Christian Dickmann","email":"cdickmann@vmware.com","username":"cdickmann"},"change_message_id":"93b90addaa729bf46346d30d090976eb0045c057","unresolved":false,"context_lines":[{"line_number":628,"context_line":"            continue"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        # Local storage identifier"},{"line_number":631,"context_line":"        if ds_type \u003d\u003d \"VMFS\" or ds_type \u003d\u003d \"NFS\":"},{"line_number":632,"context_line":"            if mem_req_mb \u003c (ds_free / (1024 * 1024)) and ds_accessible:"},{"line_number":633,"context_line":"                data_store_name \u003d ds_name"},{"line_number":634,"context_line":"                LOG.debug(_(\"Datastore %(ds_name)s has\""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2FyLo%3D","line":631,"in_reply_to":"AAAAPH%2F%2FzgI%3D","updated":"2013-05-23 03:48:38.000000000","message":"Ah, vSphere doesn\u0027t actually support CIFS or vfat for datastores. But some of our hosted products (e.g. Workstation) may support the same API with such filesystems. If this is the intention, you should add a comment that either things are known to not work with such datastores (and cite a bug number) or haven\u0027t been tested and are hence blacklisted.","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"},{"author":{"_account_id":7631,"name":"Christian Dickmann","email":"cdickmann@vmware.com","username":"cdickmann"},"change_message_id":"5807131a0de31a45c21e9145dd1c4de60fc858f8","unresolved":false,"context_lines":[{"line_number":559,"context_line":"    return local_disk_list"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"def _is_shared_datastore(local_disk_list, vmfsDatastoreInfo):"},{"line_number":563,"context_line":"    is_shared \u003d True"},{"line_number":564,"context_line":"    if local_disk_list !\u003d None and vmfsDatastoreInfo !\u003d None:"},{"line_number":565,"context_line":"        disk_partitions \u003d vmfsDatastoreInfo.vmfs.extent"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2FuAE%3D","line":562,"updated":"2013-05-24 15:36:49.000000000","message":"Like I commented previously, this is not the right way to determine if a datastore is shared. Please use the \"host\" property of the datastore.","commit_id":"5cbe3ba04c9d0c3fc86b3da6234ed4aadff14b57"},{"author":{"_account_id":7239,"name":"Kiran Kumar Vaddi","email":"kiran-kumar.vaddi@hp.com","username":"kirankv"},"change_message_id":"3af8a10c1ed4e41f0a8cf80e6a4767fe8dcc1349","unresolved":false,"context_lines":[{"line_number":559,"context_line":"    return local_disk_list"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"def _is_shared_datastore(local_disk_list, vmfsDatastoreInfo):"},{"line_number":563,"context_line":"    is_shared \u003d True"},{"line_number":564,"context_line":"    if local_disk_list !\u003d None and vmfsDatastoreInfo !\u003d None:"},{"line_number":565,"context_line":"        disk_partitions \u003d vmfsDatastoreInfo.vmfs.extent"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2Ft34%3D","line":562,"in_reply_to":"AAAAPH%2F%2FuAE%3D","updated":"2013-05-24 16:06:04.000000000","message":"We have not addressed this yet and are working on it. Comments that are addressed are marked as done in the earlier patch set. This one is still open and the next patch set will address this.","commit_id":"5cbe3ba04c9d0c3fc86b3da6234ed4aadff14b57"},{"author":{"_account_id":7631,"name":"Christian Dickmann","email":"cdickmann@vmware.com","username":"cdickmann"},"change_message_id":"5807131a0de31a45c21e9145dd1c4de60fc858f8","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        ds_free \u003d None"},{"line_number":610,"context_line":"        ds_accessible \u003d 0"},{"line_number":611,"context_line":"        propSetDict \u003d dict([(prop.name, prop.val) for prop in elem.propSet])"},{"line_number":612,"context_line":"        ds_type \u003d propSetDict[\"summary.type\"]"},{"line_number":613,"context_line":"        ds_name \u003d propSetDict[\"summary.name\"]"},{"line_number":614,"context_line":"        ds_cap \u003d propSetDict[\"summary.capacity\"]"},{"line_number":615,"context_line":"        ds_free \u003d propSetDict[\"summary.freeSpace\"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPH%2F%2Ft%2Fw%3D","line":612,"updated":"2013-05-24 15:36:49.000000000","message":"Now that you have a dictionary, there is no need to assign the values to local variables. Just start using them. You may need to call propSetDict.SetDefault() for some of the keys, but thats still less lines than what you have right now.","commit_id":"5cbe3ba04c9d0c3fc86b3da6234ed4aadff14b57"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"be64ea846a877813aa438d47c814aba64a078800","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        vm_folder_ref \u003d self._get_vmfolder_ref()"},{"line_number":161,"context_line":"        res_pool_ref \u003d self._get_res_pool_ref()"},{"line_number":162,"context_line":"        mem_req \u003d (vmdk_file_size_in_kb / 1024) + instance[\u0027memory_mb\u0027]"},{"line_number":163,"context_line":"        data_store_info \u003d\\"},{"line_number":164,"context_line":"        vm_util.get_datastore_ref_and_name(self._session, self._cluster,"},{"line_number":165,"context_line":"                                                mem_req_mb\u003dmem_req)"},{"line_number":166,"context_line":"        data_store_ref \u003d data_store_info[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPH%2F%2F0wI%3D","line":163,"updated":"2013-05-22 08:04:55.000000000","message":"nit: avoid \\ ( ) are preferred.","commit_id":"9741902dcde9e2e3db0d67bd42f06519cf2a6fe4"}]}
