)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joseph Vokt \u003cjoseph.vokt@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-06 16:31:37 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding client CPG stats to driver volume stats"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In cinder/volume/drivers/san/hp/hp_3par_common.py, adds a call to"},{"line_number":10,"context_line":"getCPGStatData, which calls srstatld and depends on the appropriate client API"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a4dcd0f_34c98fac","line":7,"updated":"2015-08-07 01:58:37.000000000","message":"Is it HP specific?","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joseph Vokt \u003cjoseph.vokt@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-06 16:31:37 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding client CPG stats to driver volume stats"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In cinder/volume/drivers/san/hp/hp_3par_common.py, adds a call to"},{"line_number":10,"context_line":"getCPGStatData, which calls srstatld and depends on the appropriate client API"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a4dcd0f_b5fc9073","line":7,"in_reply_to":"1a4dcd0f_34c98fac","updated":"2015-08-07 19:51:19.000000000","message":"Yes, I have changed the commit title in the next patch set.","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"In cinder/tests/unit/test_hp3par.py, adds unit tests in"},{"line_number":15,"context_line":"TestHP3PARFCDriver.test_get_volume_stats and in"},{"line_number":16,"context_line":"TestHP3PARISCSIDriver.test_get_volume_stats."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: If9e7b5ffd100489af6537f7dab970d89a6d70851"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a4dcd0f_94d6634d","line":17,"updated":"2015-08-07 01:58:37.000000000","message":"BP or bug link here please.","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"In cinder/tests/unit/test_hp3par.py, adds unit tests in"},{"line_number":15,"context_line":"TestHP3PARFCDriver.test_get_volume_stats and in"},{"line_number":16,"context_line":"TestHP3PARISCSIDriver.test_get_volume_stats."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: If9e7b5ffd100489af6537f7dab970d89a6d70851"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a4dcd0f_95f4f487","line":17,"in_reply_to":"1a4dcd0f_94d6634d","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"f23fb8a607764d00542ec9096c3b151004d9e398","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joseph Vokt \u003cjoseph.vokt@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-10 16:18:19 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"3PAR: Adding performance metrics for load balancing volume placement"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If one storage backend has high load while another has lower load, when a"},{"line_number":10,"context_line":"user/admin creates a volume, the current evaluator/scheduler may place the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"1a4dcd0f_1973da81","line":7,"updated":"2015-08-11 07:24:40.000000000","message":"The first line should be limited to 50 characters and commit messages over 72 characters will be rejected by the gate. see https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"e1ab5e0e0cb03a67a336f3c2937b0aa1fe1a51f2"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"1c1df12c34e5fae6d4bfc82e57653e42d7662c18","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Joseph Vokt \u003cjoseph.vokt@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-10 16:18:19 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"3PAR: Adding performance metrics for load balancing volume placement"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If one storage backend has high load while another has lower load, when a"},{"line_number":10,"context_line":"user/admin creates a volume, the current evaluator/scheduler may place the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"1a4dcd0f_fb3ebdb6","line":7,"in_reply_to":"1a4dcd0f_1973da81","updated":"2015-08-12 21:08:14.000000000","message":"Done","commit_id":"e1ab5e0e0cb03a67a336f3c2937b0aa1fe1a51f2"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"0004fbe2bb46cadcd24ef751c1a37af28a734779","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If one storage backend has high load while another has lower load,"},{"line_number":10,"context_line":"when a user/admin creates a volume, the current evaluator/scheduler"},{"line_number":11,"context_line":"may place the volume on the backend with higher load. Instead the"},{"line_number":12,"context_line":"evaluator/scheduler should always place that volume on the backend"},{"line_number":13,"context_line":"with the lowest load for load balancing purposes. In general, for load"},{"line_number":14,"context_line":"balancing virtual volume placement, an evaluator/scheduler needs"},{"line_number":15,"context_line":"access to real time performance metrics (e.g. throughput, bandwidth,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_4baf162a","line":12,"updated":"2015-08-12 01:04:20.000000000","message":"Nitpick: this isn\u0027t necessarily always true.","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"1369629dd3ee99d82213459d1b0b2cc2f63a8c19","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If one storage backend has high load while another has lower load,"},{"line_number":10,"context_line":"when a user/admin creates a volume, the current evaluator/scheduler"},{"line_number":11,"context_line":"may place the volume on the backend with higher load. Instead the"},{"line_number":12,"context_line":"evaluator/scheduler should always place that volume on the backend"},{"line_number":13,"context_line":"with the lowest load for load balancing purposes. In general, for load"},{"line_number":14,"context_line":"balancing virtual volume placement, an evaluator/scheduler needs"},{"line_number":15,"context_line":"access to real time performance metrics (e.g. throughput, bandwidth,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_fb931da1","line":12,"in_reply_to":"1a4dcd0f_4baf162a","updated":"2015-08-12 21:08:31.000000000","message":"Reworded it as \u0027in many cases\u0027","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"0004fbe2bb46cadcd24ef751c1a37af28a734779","unresolved":false,"context_lines":[{"line_number":12,"context_line":"evaluator/scheduler should always place that volume on the backend"},{"line_number":13,"context_line":"with the lowest load for load balancing purposes. In general, for load"},{"line_number":14,"context_line":"balancing virtual volume placement, an evaluator/scheduler needs"},{"line_number":15,"context_line":"access to real time performance metrics (e.g. throughput, bandwidth,"},{"line_number":16,"context_line":"latency, IO size) to measure load, which Cinder does not have"},{"line_number":17,"context_line":"currently."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_eba7024e","line":15,"updated":"2015-08-12 01:04:20.000000000","message":"given the status update interval is 60 secs, I\u0027d say it\u0027s \u0027near\u0027 real time","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"1369629dd3ee99d82213459d1b0b2cc2f63a8c19","unresolved":false,"context_lines":[{"line_number":12,"context_line":"evaluator/scheduler should always place that volume on the backend"},{"line_number":13,"context_line":"with the lowest load for load balancing purposes. In general, for load"},{"line_number":14,"context_line":"balancing virtual volume placement, an evaluator/scheduler needs"},{"line_number":15,"context_line":"access to real time performance metrics (e.g. throughput, bandwidth,"},{"line_number":16,"context_line":"latency, IO size) to measure load, which Cinder does not have"},{"line_number":17,"context_line":"currently."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_fbda3d77","line":15,"in_reply_to":"1a4dcd0f_eba7024e","updated":"2015-08-12 21:08:31.000000000","message":"Omitted use of \u0027real time\u0027. I describe the actual time interval used father down in the updated commit message.","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"0004fbe2bb46cadcd24ef751c1a37af28a734779","unresolved":false,"context_lines":[{"line_number":13,"context_line":"with the lowest load for load balancing purposes. In general, for load"},{"line_number":14,"context_line":"balancing virtual volume placement, an evaluator/scheduler needs"},{"line_number":15,"context_line":"access to real time performance metrics (e.g. throughput, bandwidth,"},{"line_number":16,"context_line":"latency, IO size) to measure load, which Cinder does not have"},{"line_number":17,"context_line":"currently."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Although these performance metrics are available from the 3PAR CLI,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_0ba58e45","line":16,"updated":"2015-08-12 01:04:20.000000000","message":"s/Cinder does not have/Cinder drivers don\u0027t generally report that/","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"1369629dd3ee99d82213459d1b0b2cc2f63a8c19","unresolved":false,"context_lines":[{"line_number":13,"context_line":"with the lowest load for load balancing purposes. In general, for load"},{"line_number":14,"context_line":"balancing virtual volume placement, an evaluator/scheduler needs"},{"line_number":15,"context_line":"access to real time performance metrics (e.g. throughput, bandwidth,"},{"line_number":16,"context_line":"latency, IO size) to measure load, which Cinder does not have"},{"line_number":17,"context_line":"currently."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Although these performance metrics are available from the 3PAR CLI,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_bbe03527","line":16,"in_reply_to":"1a4dcd0f_0ba58e45","updated":"2015-08-12 21:08:31.000000000","message":"Done","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"0004fbe2bb46cadcd24ef751c1a37af28a734779","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Although these performance metrics are available from the 3PAR CLI,"},{"line_number":20,"context_line":"they are currently inaccesible in the evaluator/scheduler. The"},{"line_number":21,"context_line":"proposed changes make it possible to define filter and goodness"},{"line_number":22,"context_line":"functions in /etc/cinder/cinder.conf which include 3PAR CPG"},{"line_number":23,"context_line":"performance metrics. Note that the filter and goodness functions are"},{"line_number":24,"context_line":"used by the evaluator/scheduler to evaluate where to place a new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_ab649a21","line":21,"updated":"2015-08-12 01:04:20.000000000","message":"s/make it/add these metrics to volume status report thus make it/","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"1369629dd3ee99d82213459d1b0b2cc2f63a8c19","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Although these performance metrics are available from the 3PAR CLI,"},{"line_number":20,"context_line":"they are currently inaccesible in the evaluator/scheduler. The"},{"line_number":21,"context_line":"proposed changes make it possible to define filter and goodness"},{"line_number":22,"context_line":"functions in /etc/cinder/cinder.conf which include 3PAR CPG"},{"line_number":23,"context_line":"performance metrics. Note that the filter and goodness functions are"},{"line_number":24,"context_line":"used by the evaluator/scheduler to evaluate where to place a new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_7bd5cd40","line":21,"in_reply_to":"1a4dcd0f_ab649a21","updated":"2015-08-12 21:08:31.000000000","message":"Done","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"0004fbe2bb46cadcd24ef751c1a37af28a734779","unresolved":false,"context_lines":[{"line_number":22,"context_line":"functions in /etc/cinder/cinder.conf which include 3PAR CPG"},{"line_number":23,"context_line":"performance metrics. Note that the filter and goodness functions are"},{"line_number":24,"context_line":"used by the evaluator/scheduler to evaluate where to place a new"},{"line_number":25,"context_line":"volume among multiple 3PAR backends. Thus, the proposed changes give"},{"line_number":26,"context_line":"the evaluator/scheduler access to the real time performance metrics"},{"line_number":27,"context_line":"necessary for load balancing volume placement."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_cb69e6fa","line":25,"updated":"2015-08-12 01:04:20.000000000","message":"Such filter/goodness function is not public available in upstream Cinder, so unless an filter/goodness function example is provided, I\u0027d suggest the commit message here focus on what this change is about: changing 3PAR driver to report performance metrics.","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"1369629dd3ee99d82213459d1b0b2cc2f63a8c19","unresolved":false,"context_lines":[{"line_number":22,"context_line":"functions in /etc/cinder/cinder.conf which include 3PAR CPG"},{"line_number":23,"context_line":"performance metrics. Note that the filter and goodness functions are"},{"line_number":24,"context_line":"used by the evaluator/scheduler to evaluate where to place a new"},{"line_number":25,"context_line":"volume among multiple 3PAR backends. Thus, the proposed changes give"},{"line_number":26,"context_line":"the evaluator/scheduler access to the real time performance metrics"},{"line_number":27,"context_line":"necessary for load balancing volume placement."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1a4dcd0f_3b10a5ff","line":25,"in_reply_to":"1a4dcd0f_cb69e6fa","updated":"2015-08-12 21:08:31.000000000","message":"Addressed this by focusing on how I add metrics to the volume status report, not the goodness/filter function.","commit_id":"402d07bc4294e6745bd4cdaf84db4c7f30f67e30"}],"cinder/tests/unit/test_hp3par.py":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3458,"context_line":"                             stat_capabilities[\u0027qlen\u0027])"},{"line_number":3459,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":3460,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":3461,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":3462,"context_line":""},{"line_number":3463,"context_line":"            expected \u003d ["},{"line_number":3464,"context_line":"                mock.call.getStorageSystemInfo(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d42e2b8b","line":3461,"updated":"2015-08-07 01:58:37.000000000","message":"From 3436 to 3461, please change the order of the parameters for assertEqual:\nexpected, actual.","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3458,"context_line":"                             stat_capabilities[\u0027qlen\u0027])"},{"line_number":3459,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":3460,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":3461,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":3462,"context_line":""},{"line_number":3463,"context_line":"            expected \u003d ["},{"line_number":3464,"context_line":"                mock.call.getStorageSystemInfo(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_152f84f7","line":3461,"in_reply_to":"1a4dcd0f_d42e2b8b","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3474,"context_line":"                expected +"},{"line_number":3475,"context_line":"                self.standard_logout)"},{"line_number":3476,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":3477,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027FC\u0027)"},{"line_number":3478,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":3479,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":3480,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_14aed3e5","line":3477,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3474,"context_line":"                expected +"},{"line_number":3475,"context_line":"                self.standard_logout)"},{"line_number":3476,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":3477,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027FC\u0027)"},{"line_number":3478,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":3479,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":3480,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_b5333062","line":3477,"in_reply_to":"1a4dcd0f_14aed3e5","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3500,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":3501,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":3502,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"            cpg2 \u003d self.cpgs[0].copy()"},{"line_number":3505,"context_line":"            cpg2.update({\u0027SDGrowth\u0027: {\u0027limitMiB\u0027: 8192}})"},{"line_number":3506,"context_line":"            mock_client.getCPG.return_value \u003d cpg2"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f4b2474b","line":3503,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3500,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":3501,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":3502,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":3503,"context_line":""},{"line_number":3504,"context_line":"            cpg2 \u003d self.cpgs[0].copy()"},{"line_number":3505,"context_line":"            cpg2.update({\u0027SDGrowth\u0027: {\u0027limitMiB\u0027: 8192}})"},{"line_number":3506,"context_line":"            mock_client.getCPG.return_value \u003d cpg2"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_953b9438","line":3503,"in_reply_to":"1a4dcd0f_f4b2474b","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3520,"context_line":"            cap_util \u003d (float(total_capacity_gb - free_capacity_gb) /"},{"line_number":3521,"context_line":"                        float(total_capacity_gb)) * 100"},{"line_number":3522,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027capacity_utilization\u0027],"},{"line_number":3523,"context_line":"                             cap_util)"},{"line_number":3524,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_volumes\u0027], 3)"},{"line_number":3525,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027goodness_function\u0027],"},{"line_number":3526,"context_line":"                             GOODNESS_FUNCTION)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_54a77b0a","line":3523,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3520,"context_line":"            cap_util \u003d (float(total_capacity_gb - free_capacity_gb) /"},{"line_number":3521,"context_line":"                        float(total_capacity_gb)) * 100"},{"line_number":3522,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027capacity_utilization\u0027],"},{"line_number":3523,"context_line":"                             cap_util)"},{"line_number":3524,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_volumes\u0027], 3)"},{"line_number":3525,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027goodness_function\u0027],"},{"line_number":3526,"context_line":"                             GOODNESS_FUNCTION)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_354880cc","line":3523,"in_reply_to":"1a4dcd0f_54a77b0a","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3540,"context_line":"                             stat_capabilities[\u0027qlen\u0027])"},{"line_number":3541,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":3542,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":3543,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":3544,"context_line":"            common.client.deleteCPG(HP3PAR_CPG)"},{"line_number":3545,"context_line":"            common.client.createCPG(HP3PAR_CPG, {})"},{"line_number":3546,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_94a183fa","line":3543,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3540,"context_line":"                             stat_capabilities[\u0027qlen\u0027])"},{"line_number":3541,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":3542,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":3543,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":3544,"context_line":"            common.client.deleteCPG(HP3PAR_CPG)"},{"line_number":3545,"context_line":"            common.client.createCPG(HP3PAR_CPG, {})"},{"line_number":3546,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f510d8ad","line":3543,"in_reply_to":"1a4dcd0f_94a183fa","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3567,"context_line":"            self.driver._login()"},{"line_number":3568,"context_line":""},{"line_number":3569,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":3570,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027FC\u0027)"},{"line_number":3571,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":3572,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":3573,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_b4611fd5","line":3570,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3567,"context_line":"            self.driver._login()"},{"line_number":3568,"context_line":""},{"line_number":3569,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":3570,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027FC\u0027)"},{"line_number":3571,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":3572,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":3573,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_1516a4a7","line":3570,"in_reply_to":"1a4dcd0f_b4611fd5","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3585,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027iosz_kbs\u0027], None)"},{"line_number":3586,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027qlen\u0027], None)"},{"line_number":3587,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027], None)"},{"line_number":3588,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], None)"},{"line_number":3589,"context_line":""},{"line_number":3590,"context_line":"            expected \u003d ["},{"line_number":3591,"context_line":"                mock.call.getStorageSystemInfo(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f46b27b5","line":3588,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3585,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027iosz_kbs\u0027], None)"},{"line_number":3586,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027qlen\u0027], None)"},{"line_number":3587,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027], None)"},{"line_number":3588,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], None)"},{"line_number":3589,"context_line":""},{"line_number":3590,"context_line":"            expected \u003d ["},{"line_number":3591,"context_line":"                mock.call.getStorageSystemInfo(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_b50a5078","line":3588,"in_reply_to":"1a4dcd0f_f46b27b5","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":3990,"context_line":""},{"line_number":3991,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":3992,"context_line":"            const \u003d 0.0009765625"},{"line_number":3993,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027iSCSI\u0027)"},{"line_number":3994,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":3995,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":3996,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5470dba3","line":3993,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":3990,"context_line":""},{"line_number":3991,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":3992,"context_line":"            const \u003d 0.0009765625"},{"line_number":3993,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027iSCSI\u0027)"},{"line_number":3994,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":3995,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":3996,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_7525a808","line":3993,"in_reply_to":"1a4dcd0f_5470dba3","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":4016,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":4017,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":4018,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":4019,"context_line":""},{"line_number":4020,"context_line":"            expected \u003d ["},{"line_number":4021,"context_line":"                mock.call.getStorageSystemInfo(),"},{"line_number":4022,"context_line":"                mock.call.getCPG(HP3PAR_CPG),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_947ae386","line":4019,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":4016,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":4017,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":4018,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":4019,"context_line":""},{"line_number":4020,"context_line":"            expected \u003d ["},{"line_number":4021,"context_line":"                mock.call.getStorageSystemInfo(),"},{"line_number":4022,"context_line":"                mock.call.getCPG(HP3PAR_CPG),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_9522b400","line":4019,"in_reply_to":"1a4dcd0f_947ae386","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":4049,"context_line":"                             free_capacity_gb)"},{"line_number":4050,"context_line":"            cap_util \u003d (float(total_capacity_gb - free_capacity_gb) /"},{"line_number":4051,"context_line":"                        float(total_capacity_gb)) * 100"},{"line_number":4052,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027capacity_utilization\u0027],"},{"line_number":4053,"context_line":"                             cap_util)"},{"line_number":4054,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_volumes\u0027], 3)"},{"line_number":4055,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027goodness_function\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_5459bb33","line":4052,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":4049,"context_line":"                             free_capacity_gb)"},{"line_number":4050,"context_line":"            cap_util \u003d (float(total_capacity_gb - free_capacity_gb) /"},{"line_number":4051,"context_line":"                        float(total_capacity_gb)) * 100"},{"line_number":4052,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027capacity_utilization\u0027],"},{"line_number":4053,"context_line":"                             cap_util)"},{"line_number":4054,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_volumes\u0027], 3)"},{"line_number":4055,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027goodness_function\u0027],"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f5777806","line":4052,"in_reply_to":"1a4dcd0f_5459bb33","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":4070,"context_line":"                             stat_capabilities[\u0027qlen\u0027])"},{"line_number":4071,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":4072,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":4073,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":4074,"context_line":""},{"line_number":4075,"context_line":"        # Testing when the API_VERSION is incompatible with getCPGStatData"},{"line_number":4076,"context_line":"        srstatld_api_version \u003d 30201200"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f444874a","line":4073,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":4070,"context_line":"                             stat_capabilities[\u0027qlen\u0027])"},{"line_number":4071,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027],"},{"line_number":4072,"context_line":"                             stat_capabilities[\u0027avg_busy_perc\u0027])"},{"line_number":4073,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], 100)"},{"line_number":4074,"context_line":""},{"line_number":4075,"context_line":"        # Testing when the API_VERSION is incompatible with getCPGStatData"},{"line_number":4076,"context_line":"        srstatld_api_version \u003d 30201200"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_157d44e7","line":4073,"in_reply_to":"1a4dcd0f_f444874a","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":4095,"context_line":"            self.driver._login()"},{"line_number":4096,"context_line":""},{"line_number":4097,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":4098,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027iSCSI\u0027)"},{"line_number":4099,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":4100,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":4101,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d445cb42","line":4098,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":4095,"context_line":"            self.driver._login()"},{"line_number":4096,"context_line":""},{"line_number":4097,"context_line":"            stats \u003d self.driver.get_volume_stats(True)"},{"line_number":4098,"context_line":"            self.assertEqual(stats[\u0027storage_protocol\u0027], \u0027iSCSI\u0027)"},{"line_number":4099,"context_line":"            self.assertEqual(stats[\u0027total_capacity_gb\u0027], 0)"},{"line_number":4100,"context_line":"            self.assertEqual(stats[\u0027free_capacity_gb\u0027], 0)"},{"line_number":4101,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027total_capacity_gb\u0027], 24.0)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_d586fcda","line":4098,"in_reply_to":"1a4dcd0f_d445cb42","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":4113,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027iosz_kbs\u0027], None)"},{"line_number":4114,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027qlen\u0027], None)"},{"line_number":4115,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027], None)"},{"line_number":4116,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], None)"},{"line_number":4117,"context_line":""},{"line_number":4118,"context_line":"            expected \u003d ["},{"line_number":4119,"context_line":"                mock.call.getStorageSystemInfo(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_747717a0","line":4116,"updated":"2015-08-07 01:58:37.000000000","message":"expected, actual","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":4113,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027iosz_kbs\u0027], None)"},{"line_number":4114,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027qlen\u0027], None)"},{"line_number":4115,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027avg_busy_perc\u0027], None)"},{"line_number":4116,"context_line":"            self.assertEqual(stats[\u0027pools\u0027][0][\u0027load_goodness\u0027], None)"},{"line_number":4117,"context_line":""},{"line_number":4118,"context_line":"            expected \u003d ["},{"line_number":4119,"context_line":"                mock.call.getStorageSystemInfo(),"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_756cc836","line":4116,"in_reply_to":"1a4dcd0f_747717a0","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"}],"cinder/volume/drivers/san/hp/hp_3par_common.py":[{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"897b41387e02e55b370efa163f77a76fd5a79938","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        2.0.39 - Added support for updated detach_volume attachment."},{"line_number":176,"context_line":"        2.0.40 - Make the 3PAR drivers honor the pool in create  bug #1432876"},{"line_number":177,"context_line":"        2.0.41 - Only log versions at startup.  bug #1447697"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    \"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    VERSION \u003d \"2.0.41\""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4253e06c","line":178,"updated":"2015-07-10 21:49:32.000000000","message":"Update the version # and comment here.","commit_id":"0e755a327f7c972ad26819883afe6fb1db168fa4"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"0554c0bc25392cbf9b3d1a722cd8a4988138ea9b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        2.0.39 - Added support for updated detach_volume attachment."},{"line_number":176,"context_line":"        2.0.40 - Make the 3PAR drivers honor the pool in create  bug #1432876"},{"line_number":177,"context_line":"        2.0.41 - Only log versions at startup.  bug #1447697"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    \"\"\""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    VERSION \u003d \"2.0.41\""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_02042c13","line":178,"in_reply_to":"ba3cc151_4253e06c","updated":"2015-07-10 23:07:58.000000000","message":"Done","commit_id":"0e755a327f7c972ad26819883afe6fb1db168fa4"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"87a6214643bacbde0eae06c73c58966508316a3d","unresolved":false,"context_lines":[{"line_number":718,"context_line":"                    elif iops \u003e MAX_IOPS:"},{"line_number":719,"context_line":"                        load_goodness \u003d 0"},{"line_number":720,"context_line":"                    else:"},{"line_number":721,"context_line":"                        load_goodness \u003d 100 * (MAX_IOPS - iops) / \\"},{"line_number":722,"context_line":"                            (MAX_IOPS - MIN_IOPS)"},{"line_number":723,"context_line":"                else:"},{"line_number":724,"context_line":"                    LOG.warning(_LW(\"srstatld requires \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_54f53bea","line":721,"updated":"2015-08-07 01:58:37.000000000","message":"Try to avoid \\,\n() can help tp do it.","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"6b25956a86456456c8ad027eba7d8a8d143ea1f5","unresolved":false,"context_lines":[{"line_number":718,"context_line":"                    elif iops \u003e MAX_IOPS:"},{"line_number":719,"context_line":"                        load_goodness \u003d 0"},{"line_number":720,"context_line":"                    else:"},{"line_number":721,"context_line":"                        load_goodness \u003d 100 * (MAX_IOPS - iops) / \\"},{"line_number":722,"context_line":"                            (MAX_IOPS - MIN_IOPS)"},{"line_number":723,"context_line":"                else:"},{"line_number":724,"context_line":"                    LOG.warning(_LW(\"srstatld requires \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_35764007","line":721,"in_reply_to":"1a4dcd0f_54f53bea","updated":"2015-08-07 19:51:19.000000000","message":"Done","commit_id":"98c4f9becf4cb2f5d4e00b77ce422e6cb0e84458"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"1cfdbe9bf77ff580b3dd24835acf5d200ee76a73","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        2.0.45 - Python 3 fixes"},{"line_number":184,"context_line":"        2.0.46 - Improved VLUN creation and deletion logic. #1469816"},{"line_number":185,"context_line":"        2.0.47 - Changed initialize_connection to use getHostVLUNs. #1475064"},{"line_number":186,"context_line":"        2.0.48 - Added client CPG stats to driver volume stats"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    \"\"\""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_b37315b4","line":186,"updated":"2015-08-10 11:40:58.000000000","message":"Add a \u0027.\u0027 to the EOL.","commit_id":"c3d93cb5f880eaa4640a115309407f6fd9c8a447"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"2bcb2770dfb34f21339adadd03784de967590f15","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        2.0.45 - Python 3 fixes"},{"line_number":184,"context_line":"        2.0.46 - Improved VLUN creation and deletion logic. #1469816"},{"line_number":185,"context_line":"        2.0.47 - Changed initialize_connection to use getHostVLUNs. #1475064"},{"line_number":186,"context_line":"        2.0.48 - Added client CPG stats to driver volume stats"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    \"\"\""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_18b4cf7f","line":186,"in_reply_to":"1a4dcd0f_b37315b4","updated":"2015-08-12 21:07:39.000000000","message":"Added bug number","commit_id":"c3d93cb5f880eaa4640a115309407f6fd9c8a447"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4cf7338d1ed5d358e696365904614d775e7afebb","unresolved":false,"context_lines":[{"line_number":733,"context_line":"                        \u0027svct_ms\u0027: None,"},{"line_number":734,"context_line":"                        \u0027iosz_kbs\u0027: None,"},{"line_number":735,"context_line":"                        \u0027qlen\u0027: None,"},{"line_number":736,"context_line":"                        \u0027avg_busy_perc\u0027: None"},{"line_number":737,"context_line":"                    }"},{"line_number":738,"context_line":"                    load_goodness \u003d None"},{"line_number":739,"context_line":"                if \u0027numTDVVs\u0027 in cpg:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_e5d22034","line":736,"updated":"2015-08-10 17:35:52.000000000","message":"since we use these key strings a few times, it might be worth creating constants and some comments for each that describe what each of them is.  I don\u0027t know what iosz_kbs and svct_ms means.","commit_id":"58ade28d762683a30bf47ad6203e0ee9f87154fc"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"8d1cd230c665de98caace5e9152e0337c3fed814","unresolved":false,"context_lines":[{"line_number":733,"context_line":"                        \u0027svct_ms\u0027: None,"},{"line_number":734,"context_line":"                        \u0027iosz_kbs\u0027: None,"},{"line_number":735,"context_line":"                        \u0027qlen\u0027: None,"},{"line_number":736,"context_line":"                        \u0027avg_busy_perc\u0027: None"},{"line_number":737,"context_line":"                    }"},{"line_number":738,"context_line":"                    load_goodness \u003d None"},{"line_number":739,"context_line":"                if \u0027numTDVVs\u0027 in cpg:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_3b21859e","line":736,"in_reply_to":"1a4dcd0f_e5d22034","updated":"2015-08-12 21:07:57.000000000","message":"I renamed the capabilities to be more readable, make them global variables, and made comments to describe them.","commit_id":"58ade28d762683a30bf47ad6203e0ee9f87154fc"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4cf7338d1ed5d358e696365904614d775e7afebb","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                    \u0027iosz_kbs\u0027: stat_capabilities[\u0027iosz_kbs\u0027],"},{"line_number":789,"context_line":"                    \u0027qlen\u0027: stat_capabilities[\u0027qlen\u0027],"},{"line_number":790,"context_line":"                    \u0027avg_busy_perc\u0027: stat_capabilities[\u0027avg_busy_perc\u0027],"},{"line_number":791,"context_line":"                    \u0027load_goodness\u0027: load_goodness,"},{"line_number":792,"context_line":"                    \u0027filter_function\u0027: filter_function,"},{"line_number":793,"context_line":"                    \u0027goodness_function\u0027: goodness_function,"},{"line_number":794,"context_line":"                    \u0027multiattach\u0027: True,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_c5dfe438","line":791,"updated":"2015-08-10 17:35:52.000000000","message":"and then you can use the constants here...","commit_id":"58ade28d762683a30bf47ad6203e0ee9f87154fc"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"8d1cd230c665de98caace5e9152e0337c3fed814","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                    \u0027iosz_kbs\u0027: stat_capabilities[\u0027iosz_kbs\u0027],"},{"line_number":789,"context_line":"                    \u0027qlen\u0027: stat_capabilities[\u0027qlen\u0027],"},{"line_number":790,"context_line":"                    \u0027avg_busy_perc\u0027: stat_capabilities[\u0027avg_busy_perc\u0027],"},{"line_number":791,"context_line":"                    \u0027load_goodness\u0027: load_goodness,"},{"line_number":792,"context_line":"                    \u0027filter_function\u0027: filter_function,"},{"line_number":793,"context_line":"                    \u0027goodness_function\u0027: goodness_function,"},{"line_number":794,"context_line":"                    \u0027multiattach\u0027: True,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_bb2d9590","line":791,"in_reply_to":"1a4dcd0f_c5dfe438","updated":"2015-08-12 21:07:57.000000000","message":"Done","commit_id":"58ade28d762683a30bf47ad6203e0ee9f87154fc"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"04de6f2026c745bd05a80e743bc64fa8fc2514a9","unresolved":false,"context_lines":[{"line_number":718,"context_line":"            try:"},{"line_number":719,"context_line":"                cpg \u003d self.client.getCPG(cpg_name)"},{"line_number":720,"context_line":"                if self.API_VERSION \u003e\u003d SRSTATLD_API_VERSION:"},{"line_number":721,"context_line":"                    interval \u003d \u0027daily\u0027"},{"line_number":722,"context_line":"                    history \u003d \u00277d\u0027"},{"line_number":723,"context_line":"                    stat_capabilities \u003d self.client.getCPGStatData(cpg_name,"},{"line_number":724,"context_line":"                                                                   interval,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_aa445d46","line":721,"updated":"2015-08-12 23:50:51.000000000","message":"Any reason you aren\u0027t making these configurable?","commit_id":"69a5f45f22b20aeffcdc1be8cd58938328fffc36"},{"author":{"_account_id":17141,"name":"Joseph Vokt","email":"joseph.vokt@hp.com","username":"jpvokt"},"change_message_id":"06cc93c13c825e2976c41f16365aff9a240b9e71","unresolved":false,"context_lines":[{"line_number":718,"context_line":"            try:"},{"line_number":719,"context_line":"                cpg \u003d self.client.getCPG(cpg_name)"},{"line_number":720,"context_line":"                if self.API_VERSION \u003e\u003d SRSTATLD_API_VERSION:"},{"line_number":721,"context_line":"                    interval \u003d \u0027daily\u0027"},{"line_number":722,"context_line":"                    history \u003d \u00277d\u0027"},{"line_number":723,"context_line":"                    stat_capabilities \u003d self.client.getCPGStatData(cpg_name,"},{"line_number":724,"context_line":"                                                                   interval,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_2104ca16","line":721,"in_reply_to":"1a4dcd0f_aa445d46","updated":"2015-08-13 16:51:44.000000000","message":"They can be made configurable in a future patch if the need is high enough.","commit_id":"69a5f45f22b20aeffcdc1be8cd58938328fffc36"},{"author":{"_account_id":9624,"name":"Ramy Asselin","email":"ramyasselin@yahoo.com","username":"asselin"},"change_message_id":"b091d809835ad9a8e19fa869ca8ce54a3e5cbb5a","unresolved":false,"context_lines":[{"line_number":724,"context_line":"                                                                   interval,"},{"line_number":725,"context_line":"                                                                   history)"},{"line_number":726,"context_line":"                else:"},{"line_number":727,"context_line":"                    LOG.warning(_LW(\"srstatld requires \""},{"line_number":728,"context_line":"                                    \"WSAPI version \u0027%(srstatld_version)s\u0027 \""},{"line_number":729,"context_line":"                                    \"version \u0027%(version)s\u0027 is installed.\") %"},{"line_number":730,"context_line":"                                {\u0027srstatld_version\u0027: SRSTATLD_API_VERSION,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_e4e90bb9","line":727,"updated":"2015-08-13 18:47:56.000000000","message":"This shouldn\u0027t be logged every time.","commit_id":"69a5f45f22b20aeffcdc1be8cd58938328fffc36"}]}
