)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6b1dc7f2006e22b1e8dc33119eeddecf01aad2d9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Newly introduced `iscsi_bsoflags\u0027 allows to specify `tgtd\u0027 backing storage"},{"line_number":10,"context_line":"flags. This can be used to instruct `tgtd\u0027 to open backing device file using"},{"line_number":11,"context_line":"`O_DIRECT\u0027 flag ensuring direct access without cache."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I9c7c88a7ae75096042104849c1b00aa47728e0d4"},{"line_number":14,"context_line":"Closes-Bug: #1441935"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_00abe18a","line":12,"updated":"2015-05-14 16:23:55.000000000","message":"Need \u0027DocImpact\u0027","commit_id":"7ddbd5d75673f515ddeaaa14b0a57db939104629"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3baa4d4a7f53449fbb1f749684fedf0d5140a18c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Pavel Boldin \u003cpboldin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-20 20:29:30 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iscsi_target_flags configuration option"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Newly introduced `iscsi_target_flags\u0027 allows to specify `tgtd\u0027"},{"line_number":10,"context_line":"backing storage flags. This can be used to instruct `tgtd\u0027 to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_2bdbcf50","line":7,"updated":"2015-05-20 21:38:39.000000000","message":"This the option is plural, how do you pass in multiple flags?","commit_id":"1971688ee5c65dfc7b7b6e8892f5665546dc9448"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"0b12672bbf3214f4a6052180048cfaa970adfc44","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Pavel Boldin \u003cpboldin@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-20 20:29:30 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add iscsi_target_flags configuration option"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Newly introduced `iscsi_target_flags\u0027 allows to specify `tgtd\u0027"},{"line_number":10,"context_line":"backing storage flags. This can be used to instruct `tgtd\u0027 to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_a8cd7a86","line":7,"in_reply_to":"7a016987_2bdbcf50","updated":"2015-05-21 10:30:50.000000000","message":"You don\u0027t pass multiple flags. You pass a single line with target-specific flags in it.","commit_id":"1971688ee5c65dfc7b7b6e8892f5665546dc9448"}],"cinder/tests/unit/targets/test_tgt_driver.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c2b516cfd38a68213a8d89cf8558c310fb9cf8d5","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        with mock.patch(\u0027cinder.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)),\\"},{"line_number":206,"context_line":"                mock.patch.object(self.target, \u0027_get_target\u0027,"},{"line_number":207,"context_line":"                                  side_effect\u003dlambda x: 1),\\"},{"line_number":208,"context_line":"                mock.patch.object(self.target, \u0027_verify_backing_lun\u0027,"},{"line_number":209,"context_line":"                                  side_effect\u003dlambda x, y: True):"},{"line_number":210,"context_line":"            self.assertEqual("}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_35c8a5a5","line":207,"updated":"2015-06-10 18:00:36.000000000","message":"Why not use return_value instead?","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"90a45ea0abd4d25d15f76f349902048dd44feb01","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        with mock.patch(\u0027cinder.utils.execute\u0027, return_value\u003d(\u0027\u0027, \u0027\u0027)),\\"},{"line_number":206,"context_line":"                mock.patch.object(self.target, \u0027_get_target\u0027,"},{"line_number":207,"context_line":"                                  side_effect\u003dlambda x: 1),\\"},{"line_number":208,"context_line":"                mock.patch.object(self.target, \u0027_verify_backing_lun\u0027,"},{"line_number":209,"context_line":"                                  side_effect\u003dlambda x, y: True):"},{"line_number":210,"context_line":"            self.assertEqual("}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_d54391ad","line":207,"in_reply_to":"3afb71cf_35c8a5a5","updated":"2015-06-10 18:07:40.000000000","message":"Copy-pasted, that\u0027s why :)","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c2b516cfd38a68213a8d89cf8558c310fb9cf8d5","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                mock.patch.object(self.target, \u0027_get_target\u0027,"},{"line_number":207,"context_line":"                                  side_effect\u003dlambda x: 1),\\"},{"line_number":208,"context_line":"                mock.patch.object(self.target, \u0027_verify_backing_lun\u0027,"},{"line_number":209,"context_line":"                                  side_effect\u003dlambda x, y: True):"},{"line_number":210,"context_line":"            self.assertEqual("},{"line_number":211,"context_line":"                1,"},{"line_number":212,"context_line":"                self.target.create_iscsi_target("}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_15c3698a","line":209,"updated":"2015-06-10 18:00:36.000000000","message":"Same here","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c2b516cfd38a68213a8d89cf8558c310fb9cf8d5","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                    self.fake_volumes_dir,"},{"line_number":217,"context_line":"                    chap_auth\u003d(\u0027chap_foo\u0027, \u0027chap_bar\u0027)))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        with open(os.path.join(self.fake_volumes_dir,"},{"line_number":220,"context_line":"                               self.test_vol.split(\u0027:\u0027)[1])) as fh:"},{"line_number":221,"context_line":"            content \u003d fh.read()"},{"line_number":222,"context_line":"            self.assertIn(\u0027incominguser chap_foo chap_bar\u0027, content)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_75aa9d86","line":219,"updated":"2015-06-10 18:00:36.000000000","message":"It would probably be cleaner to mock open to return a mock and then check that mock\u0027s write method.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"90a45ea0abd4d25d15f76f349902048dd44feb01","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                    self.fake_volumes_dir,"},{"line_number":217,"context_line":"                    chap_auth\u003d(\u0027chap_foo\u0027, \u0027chap_bar\u0027)))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        with open(os.path.join(self.fake_volumes_dir,"},{"line_number":220,"context_line":"                               self.test_vol.split(\u0027:\u0027)[1])) as fh:"},{"line_number":221,"context_line":"            content \u003d fh.read()"},{"line_number":222,"context_line":"            self.assertIn(\u0027incominguser chap_foo chap_bar\u0027, content)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_f54d6dc4","line":219,"in_reply_to":"3afb71cf_75aa9d86","updated":"2015-06-10 18:07:40.000000000","message":"Dunno :-(\n\nBut the `write\u0027 method writes all the content at once.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ce16dfac7951083f7713f5ffd5028d8796d7a3b","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                    self.fake_volumes_dir,"},{"line_number":217,"context_line":"                    chap_auth\u003d(\u0027chap_foo\u0027, \u0027chap_bar\u0027)))"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        with open(os.path.join(self.fake_volumes_dir,"},{"line_number":220,"context_line":"                               self.test_vol.split(\u0027:\u0027)[1])) as fh:"},{"line_number":221,"context_line":"            content \u003d fh.read()"},{"line_number":222,"context_line":"            self.assertIn(\u0027incominguser chap_foo chap_bar\u0027, content)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_383ac399","line":219,"in_reply_to":"3afb71cf_f54d6dc4","updated":"2015-06-11 08:58:57.000000000","message":"Yes, so then you can compare against a multiline string.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c2b516cfd38a68213a8d89cf8558c310fb9cf8d5","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        with open(os.path.join(self.fake_volumes_dir,"},{"line_number":220,"context_line":"                               self.test_vol.split(\u0027:\u0027)[1])) as fh:"},{"line_number":221,"context_line":"            content \u003d fh.read()"},{"line_number":222,"context_line":"            self.assertIn(\u0027incominguser chap_foo chap_bar\u0027, content)"},{"line_number":223,"context_line":"            self.assertIn(\u0027target \u0027 + self.test_vol, content)"},{"line_number":224,"context_line":"            self.assertIn(\u0027backing-store \u0027 + self.fake_volumes_dir, content)"},{"line_number":225,"context_line":"            self.assertIn(\u0027bsoflags foo\u0027, content)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_15e6c914","line":222,"updated":"2015-06-10 18:00:36.000000000","message":"Since you are writing it on a specific order wouldn\u0027t it be better to check the whole content to confirm nothing else gets added by mistake and that new lines and \u003ctarget are there?","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"90a45ea0abd4d25d15f76f349902048dd44feb01","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        with open(os.path.join(self.fake_volumes_dir,"},{"line_number":220,"context_line":"                               self.test_vol.split(\u0027:\u0027)[1])) as fh:"},{"line_number":221,"context_line":"            content \u003d fh.read()"},{"line_number":222,"context_line":"            self.assertIn(\u0027incominguser chap_foo chap_bar\u0027, content)"},{"line_number":223,"context_line":"            self.assertIn(\u0027target \u0027 + self.test_vol, content)"},{"line_number":224,"context_line":"            self.assertIn(\u0027backing-store \u0027 + self.fake_volumes_dir, content)"},{"line_number":225,"context_line":"            self.assertIn(\u0027bsoflags foo\u0027, content)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_d5df11d4","line":222,"in_reply_to":"3afb71cf_15e6c914","updated":"2015-06-10 18:07:40.000000000","message":"This will make it harder to add new options. But noted.\n\n(I wonder where have you been earlier, your reviews could help improve patch a lot ;-)\n\nAnyway, if something forces a re-roll I will fix these.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ce16dfac7951083f7713f5ffd5028d8796d7a3b","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        with open(os.path.join(self.fake_volumes_dir,"},{"line_number":220,"context_line":"                               self.test_vol.split(\u0027:\u0027)[1])) as fh:"},{"line_number":221,"context_line":"            content \u003d fh.read()"},{"line_number":222,"context_line":"            self.assertIn(\u0027incominguser chap_foo chap_bar\u0027, content)"},{"line_number":223,"context_line":"            self.assertIn(\u0027target \u0027 + self.test_vol, content)"},{"line_number":224,"context_line":"            self.assertIn(\u0027backing-store \u0027 + self.fake_volumes_dir, content)"},{"line_number":225,"context_line":"            self.assertIn(\u0027bsoflags foo\u0027, content)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_06d6884e","line":222,"in_reply_to":"3afb71cf_d5df11d4","updated":"2015-06-11 08:58:57.000000000","message":"I don\u0027t think it would necessarily be harder to add new options, but you could also do a `content.split(\u0027\\n\u0027)` and then do individual asserts so you confirm the order and that there\u0027s no extra lines.\n\nThe problem with assertIn is that you could have something like \"bsoflags foowrite-cache bar\" without new lines and it would pass, or you could even have garbage in the file and not notice.\n\nThanks for taking my comments so well. :-)","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"}],"cinder/volume/driver.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0cde8e2a6e91824ef01c4d5f20526f582504677c","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    \u0027This parameter is valid if iscsi_helper is set \u0027"},{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_bsoflags\u0027,"},{"line_number":147,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":148,"context_line":"               help\u003d\u0027Sets the backing device flags for the iSCSI target \u0027"},{"line_number":149,"context_line":"                    \u0027instructing it to use O_DIRECT and/or O_SYNC type \u0027"},{"line_number":150,"context_line":"                    \u0027of io. This parameter is valid if iscsi_helper is \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_6393d5a4","line":147,"updated":"2015-05-14 07:26:50.000000000","message":"Please, add acceptable choisec","commit_id":"410abbdac77663979480aa68037e4ffa90bb451b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"650d75bc438d6fdc9c080dc4fbf2331e5e5b62dc","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    \u0027perform write-back(on) or write-through(off). \u0027"},{"line_number":144,"context_line":"                    \u0027This parameter is valid if iscsi_helper is set \u0027"},{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_bsoflags\u0027,"},{"line_number":147,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":148,"context_line":"               choices\u003d[\u0027\u0027, \u0027direct\u0027, \u0027sync\u0027],"},{"line_number":149,"context_line":"               help\u003d\u0027Sets the backing device flags for the iSCSI target \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_197d9b1c","line":146,"updated":"2015-05-14 18:49:02.000000000","message":"We should name this something else, like \u0027iscsi_target_flags\".  \"bsoflags\" is tgtd-specific and not meaningful for other iSCSI targets in Cinder which may want to use this to set other options.","commit_id":"7ddbd5d75673f515ddeaaa14b0a57db939104629"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7498df913fd87e71d8a8fa1c6e8775f08514da88","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    \u0027perform write-back(on) or write-through(off). \u0027"},{"line_number":144,"context_line":"                    \u0027This parameter is valid if iscsi_helper is set \u0027"},{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_bsoflags\u0027,"},{"line_number":147,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":148,"context_line":"               choices\u003d[\u0027\u0027, \u0027direct\u0027, \u0027sync\u0027],"},{"line_number":149,"context_line":"               help\u003d\u0027Sets the backing device flags for the iSCSI target \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_d9db831a","line":146,"in_reply_to":"7a016987_197d9b1c","updated":"2015-05-14 18:53:38.000000000","message":"Agree.","commit_id":"7ddbd5d75673f515ddeaaa14b0a57db939104629"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"650d75bc438d6fdc9c080dc4fbf2331e5e5b62dc","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_bsoflags\u0027,"},{"line_number":147,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":148,"context_line":"               choices\u003d[\u0027\u0027, \u0027direct\u0027, \u0027sync\u0027],"},{"line_number":149,"context_line":"               help\u003d\u0027Sets the backing device flags for the iSCSI target \u0027"},{"line_number":150,"context_line":"                    \u0027instructing it to use O_DIRECT and/or O_SYNC type \u0027"},{"line_number":151,"context_line":"                    \u0027of io. This parameter is valid if iscsi_helper is \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_79948f36","line":148,"updated":"2015-05-14 18:49:02.000000000","message":"This is a StrOpt and lists these two choices, which I think means you can pick one or the other.  What if you want to set both?","commit_id":"7ddbd5d75673f515ddeaaa14b0a57db939104629"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7498df913fd87e71d8a8fa1c6e8775f08514da88","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_bsoflags\u0027,"},{"line_number":147,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":148,"context_line":"               choices\u003d[\u0027\u0027, \u0027direct\u0027, \u0027sync\u0027],"},{"line_number":149,"context_line":"               help\u003d\u0027Sets the backing device flags for the iSCSI target \u0027"},{"line_number":150,"context_line":"                    \u0027instructing it to use O_DIRECT and/or O_SYNC type \u0027"},{"line_number":151,"context_line":"                    \u0027of io. This parameter is valid if iscsi_helper is \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f9f51f83","line":148,"in_reply_to":"7a016987_79948f36","updated":"2015-05-14 18:53:38.000000000","message":"You can\u0027t.\n\nYet, because these are tgt-specific I will remove them completely.","commit_id":"7ddbd5d75673f515ddeaaa14b0a57db939104629"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3baa4d4a7f53449fbb1f749684fedf0d5140a18c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"               help\u003d\u0027Sets the target-specific flags for the iSCSI target. \u0027"},{"line_number":149,"context_line":"                    \u0027Only used for tgtadm to specify backing device flags \u0027"},{"line_number":150,"context_line":"                    \u0027using bsoflags option. Use this to instruct tgtd to \u0027"},{"line_number":151,"context_line":"                    \u0027open backing device using O_DIRECT or O_SYNC.\u0027),"},{"line_number":152,"context_line":"    cfg.StrOpt(\u0027iscsi_protocol\u0027,"},{"line_number":153,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":154,"context_line":"               choices\u003d[\u0027iscsi\u0027, \u0027iser\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_0b293337","line":151,"updated":"2015-05-20 21:38:39.000000000","message":"What are the possible choices for this field.   Does this support more than one flag being passed in?   If there are known list of flags, then why not a choices\u003d[\u0027flag1\u0027, \u0027flag2\u0027] ?","commit_id":"1971688ee5c65dfc7b7b6e8892f5665546dc9448"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"0b12672bbf3214f4a6052180048cfaa970adfc44","unresolved":false,"context_lines":[{"line_number":148,"context_line":"               help\u003d\u0027Sets the target-specific flags for the iSCSI target. \u0027"},{"line_number":149,"context_line":"                    \u0027Only used for tgtadm to specify backing device flags \u0027"},{"line_number":150,"context_line":"                    \u0027using bsoflags option. Use this to instruct tgtd to \u0027"},{"line_number":151,"context_line":"                    \u0027open backing device using O_DIRECT or O_SYNC.\u0027),"},{"line_number":152,"context_line":"    cfg.StrOpt(\u0027iscsi_protocol\u0027,"},{"line_number":153,"context_line":"               default\u003d\u0027iscsi\u0027,"},{"line_number":154,"context_line":"               choices\u003d[\u0027iscsi\u0027, \u0027iser\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_88c63e66","line":151,"in_reply_to":"7a016987_0b293337","updated":"2015-05-21 10:30:50.000000000","message":"Because these are specific for each of the target utilities.","commit_id":"1971688ee5c65dfc7b7b6e8892f5665546dc9448"},{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"2fd3a6ad42dd540a0ca3d85c6a1cd7baa3a30295","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    \u0027This parameter is valid if iscsi_helper is set \u0027"},{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_target_flags\u0027,"},{"line_number":147,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":148,"context_line":"               help\u003d\u0027Sets the target-specific flags for the iSCSI target. \u0027"},{"line_number":149,"context_line":"                    \u0027Only used for tgtadm to specify backing device flags \u0027"},{"line_number":150,"context_line":"                    \u0027using bsoflags option. The specified string is passed \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5afe65bd_82100b50","line":147,"updated":"2015-06-01 20:45:24.000000000","message":"would prefer we default to None like other things here. I know the lio_initiator_iqns is an empty string, but it\u0027s going away.","commit_id":"be30ab86f5aad29287369d781cb3a4f40d1c2dc5"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"349165a96c0b7e6e070c3e144166207c4bff76f9","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    \u0027perform write-back(on) or write-through(off). \u0027"},{"line_number":144,"context_line":"                    \u0027This parameter is valid if iscsi_helper is set \u0027"},{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_target_flags\u0027,"},{"line_number":147,"context_line":"               default\u003dNone,"},{"line_number":148,"context_line":"               help\u003d\u0027Sets the target-specific flags for the iSCSI target. \u0027"},{"line_number":149,"context_line":"                    \u0027Only used for tgtadm to specify backing device flags \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_630dee3d","line":146,"updated":"2015-06-05 23:47:24.000000000","message":"Couple concerns:\n1. We should modify the wording so it\u0027s clear this only applies to LVMiSCSI driver\n\n2. I\u0027m not crazy about a free-form string here (it\u0027ll get screwed up for sure).  Maybe toggle one setting vs another?  At the very least it would probably be wise to provide an example in the help message.","commit_id":"5886cdd9fde92e48353ad1bbb02ea94a16b5400f"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"a3e90b8284ee49423605ccd65d4fa6dcfb509627","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    \u0027perform write-back(on) or write-through(off). \u0027"},{"line_number":144,"context_line":"                    \u0027This parameter is valid if iscsi_helper is set \u0027"},{"line_number":145,"context_line":"                    \u0027to tgtadm or iseradm.\u0027),"},{"line_number":146,"context_line":"    cfg.StrOpt(\u0027iscsi_target_flags\u0027,"},{"line_number":147,"context_line":"               default\u003dNone,"},{"line_number":148,"context_line":"               help\u003d\u0027Sets the target-specific flags for the iSCSI target. \u0027"},{"line_number":149,"context_line":"                    \u0027Only used for tgtadm to specify backing device flags \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_2e3d9d2b","line":146,"in_reply_to":"3afb71cf_630dee3d","updated":"2015-06-06 11:43:26.000000000","message":"John,\n\nBasically, I have already named it `bsoflags\u0027 but during the review process guys made an advice to make it more generic. Please look at the discussion in previous reviews.\n\nActually, I agree that I should have kept the old name so it\u0027s purpose is stated in name.","commit_id":"5886cdd9fde92e48353ad1bbb02ea94a16b5400f"}],"cinder/volume/targets/tgt.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"6b1dc7f2006e22b1e8dc33119eeddecf01aad2d9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                                    %s"},{"line_number":50,"context_line":"                                    write-cache %s"},{"line_number":51,"context_line":"                                \u003c/target\u003e"},{"line_number":52,"context_line":"                                 \"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":55,"context_line":"        super(TgtAdm, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_800351b8","side":"PARENT","line":52,"updated":"2015-05-14 16:23:55.000000000","message":"Why are you removing this?  I see that you collapse things down below but I don\u0027t think it is good to have blank space included if not doing chap auth.","commit_id":"e184aa8d945edbbe5d4e50201121d9d7439dd966"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"7498df913fd87e71d8a8fa1c6e8775f08514da88","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                                    %s"},{"line_number":50,"context_line":"                                    write-cache %s"},{"line_number":51,"context_line":"                                \u003c/target\u003e"},{"line_number":52,"context_line":"                                 \"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":55,"context_line":"        super(TgtAdm, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f923df03","side":"PARENT","line":52,"in_reply_to":"7a016987_800351b8","updated":"2015-05-14 18:53:38.000000000","message":"There was a few dozens of spaces before each line inb4. So, having a blank line is not an issue.\n\nBut the answer is: unification is the software development.","commit_id":"e184aa8d945edbbe5d4e50201121d9d7439dd966"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"c12c03cc1f1ceadaf98ebd9c6f5e79699baf9f3c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        if chap_auth is not None:"},{"line_number":179,"context_line":"            chap_str \u003d \u0027incominguser %s %s\u0027 % chap_auth"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        target_flags \u003d self.configuration.get(\u0027iscsi_target_flags\u0027, \u0027\u0027)"},{"line_number":182,"context_line":"        if target_flags:"},{"line_number":183,"context_line":"            target_flags \u003d \u0027bsoflags \u0027 + target_flags"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_7aff9a67","line":181,"updated":"2015-06-08 18:06:52.000000000","message":"Note not to forget (thanks to John for pointing that out):\n\nThe default for `iscsi_target_flags\u0027 is `None\u0027 and this is being substituted in %(target_flags)s leaving a `None\u0027 as option. configuration.get ignores \u0027default\u0027 value argument.","commit_id":"5886cdd9fde92e48353ad1bbb02ea94a16b5400f"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ce16dfac7951083f7713f5ffd5028d8796d7a3b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    etc."},{"line_number":37,"context_line":"    \"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    VOLUME_CONF \u003d textwrap.dedent(\"\"\""},{"line_number":40,"context_line":"                \u003ctarget %(name)s\u003e"},{"line_number":41,"context_line":"                    backing-store %(path)s"},{"line_number":42,"context_line":"                    driver %(driver)s"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_8693985a","line":39,"updated":"2015-06-11 08:58:57.000000000","message":"Would it be a good idea to make this a unicode string `textwrap.dedent(u\"\"\" ... \"\"\")` in case we have  unicode chars in the formatting arguments?","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c2b516cfd38a68213a8d89cf8558c310fb9cf8d5","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        volume_conf \u003d self.VOLUME_CONF % {"},{"line_number":186,"context_line":"            \u0027name\u0027: name, \u0027path\u0027: path, \u0027driver\u0027: driver,"},{"line_number":187,"context_line":"            \u0027chap_auth\u0027: chap_str, \u0027target_flags\u0027: target_flags,"},{"line_number":188,"context_line":"            \u0027write_cache\u0027: write_cache}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        LOG.debug(\u0027Creating iscsi_target for Volume ID: %s\u0027, vol_id)"},{"line_number":191,"context_line":"        volumes_dir \u003d self.volumes_dir"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_f561edd3","line":188,"updated":"2015-06-10 18:00:36.000000000","message":"I think this was easier to read before.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ce16dfac7951083f7713f5ffd5028d8796d7a3b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        volume_conf \u003d self.VOLUME_CONF % {"},{"line_number":186,"context_line":"            \u0027name\u0027: name, \u0027path\u0027: path, \u0027driver\u0027: driver,"},{"line_number":187,"context_line":"            \u0027chap_auth\u0027: chap_str, \u0027target_flags\u0027: target_flags,"},{"line_number":188,"context_line":"            \u0027write_cache\u0027: write_cache}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        LOG.debug(\u0027Creating iscsi_target for Volume ID: %s\u0027, vol_id)"},{"line_number":191,"context_line":"        volumes_dir \u003d self.volumes_dir"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_06d9e856","line":188,"in_reply_to":"3afb71cf_759e1d08","updated":"2015-06-11 08:58:57.000000000","message":"The other may have been easier to read, but yours makes it easier to change the code and follows OpenStack\u0027s guidelines, which is more important.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"},{"author":{"_account_id":13609,"name":"Pavel Boldin","email":"pboldin@mirantis.com","username":"pboldin"},"change_message_id":"90a45ea0abd4d25d15f76f349902048dd44feb01","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        volume_conf \u003d self.VOLUME_CONF % {"},{"line_number":186,"context_line":"            \u0027name\u0027: name, \u0027path\u0027: path, \u0027driver\u0027: driver,"},{"line_number":187,"context_line":"            \u0027chap_auth\u0027: chap_str, \u0027target_flags\u0027: target_flags,"},{"line_number":188,"context_line":"            \u0027write_cache\u0027: write_cache}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        LOG.debug(\u0027Creating iscsi_target for Volume ID: %s\u0027, vol_id)"},{"line_number":191,"context_line":"        volumes_dir \u003d self.volumes_dir"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_759e1d08","line":188,"in_reply_to":"3afb71cf_f561edd3","updated":"2015-06-10 18:07:40.000000000","message":"I don\u0027t think so, because one had to take a look at `VOLUME_CONF\u0027 and to the % operator to get the order right.","commit_id":"5ea60fdec20f94b53b7e4fd9efc54ea420b29400"}]}
