)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"79df3b30e598d3938b7570c95254a1d858988f43","unresolved":false,"context_lines":[{"line_number":14,"context_line":"These new extra specs will be scoped keys, the scoping will be"},{"line_number":15,"context_line":"hp3par:maxIBWS and hp3par:maxIOPS. A new key hp3par:vvs was also"},{"line_number":16,"context_line":"added to allow the admin to predefine QOS settings on a 3PAR"},{"line_number":17,"context_line":"virtual volume set and the any volume created would be a added"},{"line_number":18,"context_line":"to that predefined volume set."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The 3PAR storage arrays set these values on virtual volume sets,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAQn%2F%2F8Cs%3D","line":17,"updated":"2013-07-18 21:59:29.000000000","message":"s/and the any volume / and any volume","commit_id":"dbc7bec21c5c6ef4767fc01bf769c564fc4be806"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"4165f8de093be0ffc473cf37465a645f7838d927","unresolved":false,"context_lines":[{"line_number":14,"context_line":"These new extra specs will be scoped keys, the scoping will be"},{"line_number":15,"context_line":"hp3par:maxIBWS and hp3par:maxIOPS. A new key hp3par:vvs was also"},{"line_number":16,"context_line":"added to allow the admin to predefine QOS settings on a 3PAR"},{"line_number":17,"context_line":"virtual volume set and the any volume created would be a added"},{"line_number":18,"context_line":"to that predefined volume set."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The 3PAR storage arrays set these values on virtual volume sets,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAQn%2F%2F7mA%3D","line":17,"in_reply_to":"AAAAQn%2F%2F8Cs%3D","updated":"2013-07-18 22:04:45.000000000","message":"Done","commit_id":"dbc7bec21c5c6ef4767fc01bf769c564fc4be806"}],"cinder/tests/test_hp3par.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    VOLUME_ID_SNAP \u003d \u0027761fc5e5-5191-4ec7-aeba-33e36de44156\u0027"},{"line_number":306,"context_line":"    FAKE_DESC \u003d \u0027test description name\u0027"},{"line_number":307,"context_line":"    FAKE_FC_PORTS \u003d [\u00270987654321234\u0027, \u0027123456789000987\u0027]"},{"line_number":308,"context_line":"    QOS \u003d \"{\u0027qos:maxIOPS\u0027: 1000, \u0027qos:maxBWS\u0027: 50}\""},{"line_number":309,"context_line":"    FAKE_ISCSI_PORTS \u003d {\u00271.1.1.2\u0027: {\u0027nsp\u0027: \u00278:1:1\u0027,"},{"line_number":310,"context_line":"                                    \u0027iqn\u0027: (\u0027iqn.2000-05.com.3pardata:\u0027"},{"line_number":311,"context_line":"                                            \u002721810002ac00383d\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F61s%3D","line":308,"updated":"2013-07-19 06:08:37.000000000","message":"Why is it a string instead of a dict?","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    VOLUME_ID_SNAP \u003d \u0027761fc5e5-5191-4ec7-aeba-33e36de44156\u0027"},{"line_number":306,"context_line":"    FAKE_DESC \u003d \u0027test description name\u0027"},{"line_number":307,"context_line":"    FAKE_FC_PORTS \u003d [\u00270987654321234\u0027, \u0027123456789000987\u0027]"},{"line_number":308,"context_line":"    QOS \u003d \"{\u0027qos:maxIOPS\u0027: 1000, \u0027qos:maxBWS\u0027: 50}\""},{"line_number":309,"context_line":"    FAKE_ISCSI_PORTS \u003d {\u00271.1.1.2\u0027: {\u0027nsp\u0027: \u00278:1:1\u0027,"},{"line_number":310,"context_line":"                                    \u0027iqn\u0027: (\u0027iqn.2000-05.com.3pardata:\u0027"},{"line_number":311,"context_line":"                                            \u002721810002ac00383d\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5iM%3D","line":308,"in_reply_to":"AAAAQn%2F%2F61s%3D","updated":"2013-07-19 18:11:47.000000000","message":"This is a string value because metadata can not handle nested keys/value pairs the sql insert, so it has to be treated as single string.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        self.assertFalse(metadata[\u00273ParName\u0027] is None)"},{"line_number":458,"context_line":"        self.assertEqual(metadata[\u0027CPG\u0027], HP3PAR_CPG)"},{"line_number":459,"context_line":"        self.assertEqual(metadata[\u0027snapCPG\u0027], HP3PAR_CPG_SNAP)"},{"line_number":460,"context_line":"        self.assertEqual(metadata[\u0027qos\u0027], self.QOS)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def test_delete_volume(self):"},{"line_number":463,"context_line":"        self.flags(lock_path\u003dself.tempdir)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F61c%3D","line":460,"updated":"2013-07-19 06:08:37.000000000","message":"you can use asserDictMatch() to compare two dict if you like.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        self.assertFalse(metadata[\u00273ParName\u0027] is None)"},{"line_number":458,"context_line":"        self.assertEqual(metadata[\u0027CPG\u0027], HP3PAR_CPG)"},{"line_number":459,"context_line":"        self.assertEqual(metadata[\u0027snapCPG\u0027], HP3PAR_CPG_SNAP)"},{"line_number":460,"context_line":"        self.assertEqual(metadata[\u0027qos\u0027], self.QOS)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def test_delete_volume(self):"},{"line_number":463,"context_line":"        self.flags(lock_path\u003dself.tempdir)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5h0%3D","line":460,"in_reply_to":"AAAAQn%2F%2F61c%3D","updated":"2013-07-19 18:11:47.000000000","message":"Thanks...good to know but changing to true/false compare since we did not want to have the actual qos setting in the metadata.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        model_update \u003d self.driver.create_volume_from_snapshot(self.volume_qos,"},{"line_number":515,"context_line":"                                                               self.snapshot)"},{"line_number":516,"context_line":"        metadata \u003d model_update[\u0027metadata\u0027]"},{"line_number":517,"context_line":"        self.assertEqual(metadata[\u0027qos\u0027], self.QOS)"},{"line_number":518,"context_line":"        snap_vol \u003d self.driver.common.client.getVolume(self.VOLUME_3PAR_NAME)"},{"line_number":519,"context_line":"        self.assertEqual(snap_vol[\u0027name\u0027], self.VOLUME_3PAR_NAME)"},{"line_number":520,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F61U%3D","line":517,"updated":"2013-07-19 06:08:37.000000000","message":"ditto","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":514,"context_line":"        model_update \u003d self.driver.create_volume_from_snapshot(self.volume_qos,"},{"line_number":515,"context_line":"                                                               self.snapshot)"},{"line_number":516,"context_line":"        metadata \u003d model_update[\u0027metadata\u0027]"},{"line_number":517,"context_line":"        self.assertEqual(metadata[\u0027qos\u0027], self.QOS)"},{"line_number":518,"context_line":"        snap_vol \u003d self.driver.common.client.getVolume(self.VOLUME_3PAR_NAME)"},{"line_number":519,"context_line":"        self.assertEqual(snap_vol[\u0027name\u0027], self.VOLUME_3PAR_NAME)"},{"line_number":520,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5AE%3D","line":517,"in_reply_to":"AAAAQn%2F%2F61U%3D","updated":"2013-07-19 18:11:47.000000000","message":"same as above","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"}],"cinder/volume/drivers/san/hp/hp_3par_common.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"4b4dacfbe26fea2d8f51ba2be2a2ebaf0e7b5108","unresolved":false,"context_lines":[{"line_number":618,"context_line":"    def _add_volume_to_volume_set(self, volume, volume_name,"},{"line_number":619,"context_line":"                                  cpg, vvs_name, qos):"},{"line_number":620,"context_line":"        if vvs_name is not None:"},{"line_number":621,"context_line":"            # Admin has set a volume set name to add the volume too"},{"line_number":622,"context_line":"            self._cli_run(\u0027createvvset -add %s %s\u0027 % (vvs_name,"},{"line_number":623,"context_line":"                                                      volume_name), None)"},{"line_number":624,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F74o%3D","line":621,"updated":"2013-07-18 20:56:56.000000000","message":"Nit - typo :  too -\u003e to","commit_id":"dbc7bec21c5c6ef4767fc01bf769c564fc4be806"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"4165f8de093be0ffc473cf37465a645f7838d927","unresolved":false,"context_lines":[{"line_number":618,"context_line":"    def _add_volume_to_volume_set(self, volume, volume_name,"},{"line_number":619,"context_line":"                                  cpg, vvs_name, qos):"},{"line_number":620,"context_line":"        if vvs_name is not None:"},{"line_number":621,"context_line":"            # Admin has set a volume set name to add the volume too"},{"line_number":622,"context_line":"            self._cli_run(\u0027createvvset -add %s %s\u0027 % (vvs_name,"},{"line_number":623,"context_line":"                                                      volume_name), None)"},{"line_number":624,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F7l0%3D","line":621,"in_reply_to":"AAAAQn%2F%2F74o%3D","updated":"2013-07-18 22:04:45.000000000","message":"Done","commit_id":"dbc7bec21c5c6ef4767fc01bf769c564fc4be806"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        specs \u003d volume_type.get(\u0027extra_specs\u0027)"},{"line_number":588,"context_line":"        for key, value in specs.iteritems():"},{"line_number":589,"context_line":"            if \u0027:\u0027 in key:"},{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"},{"line_number":593,"context_line":"                qos[key] \u003d int(value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F66g%3D","line":590,"updated":"2013-07-19 06:08:37.000000000","message":"There can be quite a few of scoped keys in extra specs.  Since you are using \u0027qos\u0027 as the scope, you may explicitly compare those keys under \u0027qos\u0027 scope and ignore the rest.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        specs \u003d volume_type.get(\u0027extra_specs\u0027)"},{"line_number":588,"context_line":"        for key, value in specs.iteritems():"},{"line_number":589,"context_line":"            if \u0027:\u0027 in key:"},{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"},{"line_number":593,"context_line":"                qos[key] \u003d int(value)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5Ns%3D","line":590,"in_reply_to":"AAAAQn%2F%2F66g%3D","updated":"2013-07-19 18:11:47.000000000","message":"Done","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"35ee40589e90d903893d51a652ac6dc97e5b1d24","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"},{"line_number":593,"context_line":"                qos[key] \u003d int(value)"},{"line_number":594,"context_line":"        return qos"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _get_keys_by_volume_type(self, volume_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F7LM%3D","line":593,"updated":"2013-07-19 01:55:23.000000000","message":"How about adding come logs here if the qos key is not in self.hp_qos_keys?","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"},{"line_number":593,"context_line":"                qos[key] \u003d int(value)"},{"line_number":594,"context_line":"        return qos"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _get_keys_by_volume_type(self, volume_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5AA%3D","line":593,"in_reply_to":"AAAAQn%2F%2F66c%3D","updated":"2013-07-19 18:11:47.000000000","message":"Agreed, no need for logging the extra keys","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"},{"line_number":593,"context_line":"                qos[key] \u003d int(value)"},{"line_number":594,"context_line":"        return qos"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _get_keys_by_volume_type(self, volume_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F66c%3D","line":593,"in_reply_to":"AAAAQn%2F%2F7LM%3D","updated":"2013-07-19 06:08:37.000000000","message":"I don\u0027t think that\u0027s necessary.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":763,"context_line":"            raise exception.CinderException(ex.get_description())"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        metadata \u003d {\u00273ParName\u0027: volume_name, \u0027CPG\u0027: cpg,"},{"line_number":766,"context_line":"                    \u0027snapCPG\u0027: extras[\u0027snapCPG\u0027], \u0027qos\u0027: str(qos),"},{"line_number":767,"context_line":"                    \u0027vvs\u0027: vvs_name}"},{"line_number":768,"context_line":"        return metadata"},{"line_number":769,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F62E%3D","line":766,"updated":"2013-07-19 06:08:37.000000000","message":"are you sure you want to add str() to qos dictionary? that will make a {key:value} looks like \"{key:value\".","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"014b856d8e4e38faddbd696a45753e5fde2bd0d2","unresolved":false,"context_lines":[{"line_number":763,"context_line":"            raise exception.CinderException(ex.get_description())"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        metadata \u003d {\u00273ParName\u0027: volume_name, \u0027CPG\u0027: cpg,"},{"line_number":766,"context_line":"                    \u0027snapCPG\u0027: extras[\u0027snapCPG\u0027], \u0027qos\u0027: str(qos),"},{"line_number":767,"context_line":"                    \u0027vvs\u0027: vvs_name}"},{"line_number":768,"context_line":"        return metadata"},{"line_number":769,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5hw%3D","line":766,"in_reply_to":"AAAAQn%2F%2F5lA%3D","updated":"2013-07-19 15:54:49.000000000","message":"But you do right now","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":763,"context_line":"            raise exception.CinderException(ex.get_description())"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        metadata \u003d {\u00273ParName\u0027: volume_name, \u0027CPG\u0027: cpg,"},{"line_number":766,"context_line":"                    \u0027snapCPG\u0027: extras[\u0027snapCPG\u0027], \u0027qos\u0027: str(qos),"},{"line_number":767,"context_line":"                    \u0027vvs\u0027: vvs_name}"},{"line_number":768,"context_line":"        return metadata"},{"line_number":769,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5Nc%3D","line":766,"in_reply_to":"AAAAQn%2F%2F62E%3D","updated":"2013-07-19 18:11:47.000000000","message":"We did not need the real values in the metadata, just if it was set or not. So, qos was changed to a True/False here.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"0ecfd9453c2908e5b39ba5762e0e6e595692a335","unresolved":false,"context_lines":[{"line_number":763,"context_line":"            raise exception.CinderException(ex.get_description())"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"        metadata \u003d {\u00273ParName\u0027: volume_name, \u0027CPG\u0027: cpg,"},{"line_number":766,"context_line":"                    \u0027snapCPG\u0027: extras[\u0027snapCPG\u0027], \u0027qos\u0027: str(qos),"},{"line_number":767,"context_line":"                    \u0027vvs\u0027: vvs_name}"},{"line_number":768,"context_line":"        return metadata"},{"line_number":769,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5lA%3D","line":766,"in_reply_to":"AAAAQn%2F%2F62E%3D","updated":"2013-07-19 15:40:17.000000000","message":"We shouldn\u0027t need to do this here just to make the DB insert work.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"b10179d528ebe4de01b4facabc08df2c99fd2741","unresolved":false,"context_lines":[{"line_number":927,"context_line":"            LOG.error(str(ex))"},{"line_number":928,"context_line":"            raise exception.CinderException(ex.get_description())"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        metadata \u003d {\u00273ParName\u0027: volume_name, \u0027qos\u0027: str(qos),"},{"line_number":931,"context_line":"                    \u0027vvs\u0027: vvs_name}"},{"line_number":932,"context_line":"        return metadata"},{"line_number":933,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F62A%3D","line":930,"updated":"2013-07-19 06:08:37.000000000","message":"ditto.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"3050ad2763afb3c7b053b510daca82ff591d25a3","unresolved":false,"context_lines":[{"line_number":927,"context_line":"            LOG.error(str(ex))"},{"line_number":928,"context_line":"            raise exception.CinderException(ex.get_description())"},{"line_number":929,"context_line":""},{"line_number":930,"context_line":"        metadata \u003d {\u00273ParName\u0027: volume_name, \u0027qos\u0027: str(qos),"},{"line_number":931,"context_line":"                    \u0027vvs\u0027: vvs_name}"},{"line_number":932,"context_line":"        return metadata"},{"line_number":933,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F5NY%3D","line":930,"in_reply_to":"AAAAQn%2F%2F62A%3D","updated":"2013-07-19 18:11:47.000000000","message":"We did not need the real values in the metadata, just if it was set or not. So, qos was changed to a True/False here.","commit_id":"4cd554dc887e659d2a0c387c196daa398567ab72"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"3e0c3a999a7f1180a468cd8c5cfd5863da3dd96a","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        qos \u003d {}"},{"line_number":587,"context_line":"        specs \u003d volume_type.get(\u0027extra_specs\u0027)"},{"line_number":588,"context_line":"        for key, value in specs.iteritems():"},{"line_number":589,"context_line":"            if \u0027qos:\u0027 in key:"},{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2F4FA%3D","line":589,"updated":"2013-07-19 23:46:52.000000000","message":"One thing that bit me was having a static scoped key here, not a nit or anything just something you might want to think about for future work. :)","commit_id":"a048cd66d4af66f2d6095762e5293ae9d81d03a2"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"d4d402c889bcabbaa5c475b6a3afb24df75073de","unresolved":false,"context_lines":[{"line_number":586,"context_line":"        qos \u003d {}"},{"line_number":587,"context_line":"        specs \u003d volume_type.get(\u0027extra_specs\u0027)"},{"line_number":588,"context_line":"        for key, value in specs.iteritems():"},{"line_number":589,"context_line":"            if \u0027qos:\u0027 in key:"},{"line_number":590,"context_line":"                fields \u003d key.split(\u0027:\u0027)"},{"line_number":591,"context_line":"                key \u003d fields[1]"},{"line_number":592,"context_line":"            if key in self.hp_qos_keys:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2F31o%3D","line":589,"in_reply_to":"AAAAQn%2F%2F4FA%3D","updated":"2013-07-20 04:36:14.000000000","message":"Thanks for the heads up.","commit_id":"a048cd66d4af66f2d6095762e5293ae9d81d03a2"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"3e0c3a999a7f1180a468cd8c5cfd5863da3dd96a","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                    # Delete the volume if unable to add it to the volume set"},{"line_number":752,"context_line":"                    self.client.deleteVolume(volume_name)"},{"line_number":753,"context_line":"                    LOG.error(str(ex))"},{"line_number":754,"context_line":"                    raise exception.CinderException(ex.get_description())"},{"line_number":755,"context_line":"        except hpexceptions.HTTPConflict:"},{"line_number":756,"context_line":"            raise exception.Duplicate(_(\"Volume (%s) already exists on array\")"},{"line_number":757,"context_line":"                                      % volume_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2F4Eg%3D","line":754,"updated":"2013-07-19 23:46:52.000000000","message":"don\u0027t quite see the strategy here, so if the provider (I think that\u0027s what you call it) doesn\u0027t allow the QoS settings requested then the create raises and fails.  But I don\u0027t see where this is handled, unless it just bubble all the way up to the manager/api layers in which case we just have a \"error creating\" but there\u0027s no real feed-back or recourse?\n\nSo do they just try again, or is there something in place to have retries attempt it again?\n\nJust failing could be a bad end-user experience; anyway, might be interesting to look at scheduling filters here.  I guess the capabilities info is too high of a level to do the job though.","commit_id":"a048cd66d4af66f2d6095762e5293ae9d81d03a2"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"d4d402c889bcabbaa5c475b6a3afb24df75073de","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                    # Delete the volume if unable to add it to the volume set"},{"line_number":752,"context_line":"                    self.client.deleteVolume(volume_name)"},{"line_number":753,"context_line":"                    LOG.error(str(ex))"},{"line_number":754,"context_line":"                    raise exception.CinderException(ex.get_description())"},{"line_number":755,"context_line":"        except hpexceptions.HTTPConflict:"},{"line_number":756,"context_line":"            raise exception.Duplicate(_(\"Volume (%s) already exists on array\")"},{"line_number":757,"context_line":"                                      % volume_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2F31w%3D","line":754,"in_reply_to":"AAAAQn%2F%2F4Eg%3D","updated":"2013-07-20 04:36:14.000000000","message":"This is a 3parism where the qos settings have to set on a volume set and the volume is the added to the set, if for some reason the volume set can\u0027t be created we\u0027ll need up with an orphan volume without the qos setting. We decided the best thing to do is error on the volume create and cleanup the orphan volume on the 3par and leave the volume in an error state so it can be deleted.","commit_id":"a048cd66d4af66f2d6095762e5293ae9d81d03a2"}]}
