)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"7e83d84f585f6e8e6bd4c99d684791fb10a333fb","unresolved":false,"context_lines":[{"line_number":13,"context_line":"overwriting a guest image\u0027s conf file with the sample."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Requires a corresponding change in trove-integration:"},{"line_number":16,"context_line":"https://review.openstack.org/#/c/102423/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact: This change affects existing trove guest images."},{"line_number":19,"context_line":"The guestagent init script for any existing guest image will need to be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_2e2c5f47","line":16,"updated":"2014-07-01 11:29:12.000000000","message":"please mark this as a related change.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"d975119a716bdb267f606a3a76c098c110681896","unresolved":false,"context_lines":[{"line_number":18,"context_line":"DocImpact: This change affects existing trove guest images."},{"line_number":19,"context_line":"The guestagent init script for any existing guest image will need to be"},{"line_number":20,"context_line":"modified to read the guest_info and conf file from the new location."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-Bug: 1309030"},{"line_number":23,"context_line":"Change-Id: I1057f4a1b6232332ed4b520dbc7b3bbb04145f73"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_095b1588","line":21,"updated":"2014-07-01 12:23:39.000000000","message":"1. I really hate this side effect, especially because there is no good way to communicate it! I am working with Fedora so we still don\u0027t have predefined images, but I am wondering what will happen to all existing Ubuntu images?\n\n2. Another aspect is migration - you move from Icehouse to Juno and suddenly your perfectly working image just stops working?","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"f3c187a9b3cdeb0340b7b6fbd5ed7696e022212c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"DocImpact: This change affects existing trove guest images."},{"line_number":19,"context_line":"The guestagent init script for any existing guest image will need to be"},{"line_number":20,"context_line":"modified to read the guest_info and conf file from the new location."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-Bug: 1309030"},{"line_number":23,"context_line":"Change-Id: I1057f4a1b6232332ed4b520dbc7b3bbb04145f73"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_1e4b462c","line":21,"in_reply_to":"baada198_095b1588","updated":"2014-07-01 13:07:02.000000000","message":"Good question, though I\u0027m not sure how much of a concern this actually is (see below). Would be interested to hear what others think. \n\n - There are no OpenStack-provided predefined images for Ubuntu either, except those created for integration tests. Those are NOT intended for any actual deployment and change all the time. \n\n - Is it actually a requirement that a guest image can be used to without change across releases? I would expect that you would want to create images with the Juno guest agent installed, for example. Note this change doesn\u0027t affect running instances, only the creation process off an image. \n\nThat said: if we were to make the injection target dir configurable as Amrith suggested in another comment, might that provide a workaround for users that want to continue to use the /etc dir directly?","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"b6ddcc000f3a11eb530c68a6dd08629ee24077b7","unresolved":false,"context_lines":[{"line_number":18,"context_line":"DocImpact: This change affects existing trove guest images."},{"line_number":19,"context_line":"The guestagent init script for any existing guest image will need to be"},{"line_number":20,"context_line":"modified to read the guest_info and conf file from the new location."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-Bug: 1309030"},{"line_number":23,"context_line":"Change-Id: I1057f4a1b6232332ed4b520dbc7b3bbb04145f73"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_fd42cd0e","line":21,"in_reply_to":"baada198_1e4b462c","updated":"2014-07-03 04:23:04.000000000","message":"If there are no predefined images I am fine with that patch as is. Hopefully this is the last time we change a location of injected files, but making it configurable sounds better.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a69e4faa88e98f0371a80e62186cae084e4149f7","unresolved":false,"context_lines":[{"line_number":18,"context_line":"DocImpact: This change affects existing trove guest images."},{"line_number":19,"context_line":"The guestagent init script for any existing guest image will need to be"},{"line_number":20,"context_line":"modified to read the guest_info and conf file from the new location."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-Bug: 1309030"},{"line_number":23,"context_line":"Change-Id: I1057f4a1b6232332ed4b520dbc7b3bbb04145f73"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_1001ed04","line":21,"in_reply_to":"baada198_fd42cd0e","updated":"2014-07-04 10:50:58.000000000","message":"+1 to Sergeys\u0027 points","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"ebda338113dfa3ce1d709d4f5bfc8a27843c4210","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This change requires a corresponding change in trove-integration before"},{"line_number":22,"context_line":"the tests will pass:"},{"line_number":23,"context_line":"https://review.openstack.org/#/c/102423/"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"DocImpact: This change introduces a new option with a default that"},{"line_number":26,"context_line":"affects existing guest images. The guestagent init script for any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_99837302","line":23,"updated":"2014-07-19 11:09:03.000000000","message":"Could you please paste Change-Id of that review.\n\n\nExample:\n\nDependsOn: I1dffd373da722af55bdea41fead8456bb60c82b2","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"ecae92e48006dd4ce46ce472ec9de156373fb636","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This change requires a corresponding change in trove-integration before"},{"line_number":22,"context_line":"the tests will pass:"},{"line_number":23,"context_line":"https://review.openstack.org/#/c/102423/"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"DocImpact: This change introduces a new option with a default that"},{"line_number":26,"context_line":"affects existing guest images. The guestagent init script for any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_5fac5888","line":23,"in_reply_to":"baada198_99837302","updated":"2014-07-20 13:04:49.000000000","message":"Is this a convention? Did a quick git log --grep and don\u0027t see it, but it makes sense to me. Looks like \"Depends-On: \" would be more consistent.","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d60af586e48ccb9ee5e326f6ec1c721394891c78","unresolved":false,"context_lines":[{"line_number":18,"context_line":"   overwriting a guest image\u0027s conf file with the sample."},{"line_number":19,"context_line":" - Add trove-guestagent.conf injection to heat template."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This change requires a corresponding change in trove-integration before"},{"line_number":22,"context_line":"the tests will pass:"},{"line_number":23,"context_line":"https://review.openstack.org/#/c/102423/"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"baada198_6e067087","line":21,"updated":"2014-07-22 12:18:24.000000000","message":"please renive lines #21-23 because you already have Depends-On section","commit_id":"f7311540870b3d139df8d3d5b21ff65f41167256"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"961653e478fd53e60a0ce2fd31d88d0afa5f24ae","unresolved":false,"context_lines":[{"line_number":18,"context_line":"   overwriting a guest image\u0027s conf file with the sample."},{"line_number":19,"context_line":" - Add trove-guestagent.conf injection to heat template."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This change requires a corresponding change in trove-integration before"},{"line_number":22,"context_line":"the tests will pass:"},{"line_number":23,"context_line":"https://review.openstack.org/#/c/102423/"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"baada198_5d678b51","line":21,"in_reply_to":"baada198_6e067087","updated":"2014-07-22 19:44:30.000000000","message":"Done","commit_id":"f7311540870b3d139df8d3d5b21ff65f41167256"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"cd68541cfa798ef572f7824ac99b7093a3ac662a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Introduce a configuration option for a directory on the guest where the"},{"line_number":10,"context_line":"taskmanager should inject configuration files."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"During instance creationm inject the guest_info and trove-guestagent"},{"line_number":13,"context_line":"conf files to the \u0027injected_config_location\u0027. The default location is"},{"line_number":14,"context_line":"/etc/trove/conf.d."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baada198_7ee629e9","line":12,"updated":"2014-08-12 18:57:02.000000000","message":"typo - creation*m*","commit_id":"87db87b55a8905ec4781cbd2e75cce5e7c7a8c2b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"3fe2ce257758754c678f7df1585f35e574312085","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Introduce a configuration option for a directory on the guest where the"},{"line_number":10,"context_line":"taskmanager should inject configuration files."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"During instance creationm inject the guest_info and trove-guestagent"},{"line_number":13,"context_line":"conf files to the \u0027injected_config_location\u0027. The default location is"},{"line_number":14,"context_line":"/etc/trove/conf.d."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baada198_e068abbe","line":12,"in_reply_to":"baada198_7ee629e9","updated":"2014-08-13 14:04:44.000000000","message":"Yeah, please fix it.","commit_id":"87db87b55a8905ec4781cbd2e75cce5e7c7a8c2b"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"129baca42a67ecc36bf6ff59a84e0b4cad846c38","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Introduce a configuration option for a directory on the guest where the"},{"line_number":10,"context_line":"taskmanager should inject configuration files."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"During instance creationm inject the guest_info and trove-guestagent"},{"line_number":13,"context_line":"conf files to the \u0027injected_config_location\u0027. The default location is"},{"line_number":14,"context_line":"/etc/trove/conf.d."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1abeadc6_13734de8","line":12,"in_reply_to":"baada198_e068abbe","updated":"2014-08-25 17:34:54.000000000","message":"Done","commit_id":"87db87b55a8905ec4781cbd2e75cce5e7c7a8c2b"}],"etc/trove/conf.d/guest_info.conf":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"2f5723bc4035082afded43b5e996d462b5b41532","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"baada198_9c87d760","side":"PARENT","line":1,"updated":"2014-07-20 12:29:18.000000000","message":"Arbitrary?","commit_id":"3b36c5a9d3a28b350f7ff1ad121aeca2ab10f3d2"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"ecae92e48006dd4ce46ce472ec9de156373fb636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"baada198_bc7e5b19","side":"PARENT","line":1,"in_reply_to":"baada198_9c87d760","updated":"2014-07-20 13:04:49.000000000","message":"Ha - yeah, wondered about that myself. File was just renamed but I could fix the comment as well.","commit_id":"3b36c5a9d3a28b350f7ff1ad121aeca2ab10f3d2"}],"trove/common/cfg.py":[{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"3216fc0fd1a53bc440704e35c1b4b45fcf6e817b","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":238,"context_line":"               help\u003d\"Path to folder with cloudinit scripts.\"),"},{"line_number":239,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":240,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":241,"context_line":"               help\u003d\"Path to guestagent config file.\"),"},{"line_number":242,"context_line":"    cfg.DictOpt(\u0027datastore_registry_ext\u0027, default\u003ddict(),"},{"line_number":243,"context_line":"                help\u003d\u0027Extension for default datastore managers.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_ad300408","line":240,"updated":"2014-06-26 05:55:55.000000000","message":"This parameter is used today as a template for \"guest_config\", its name is misleading (see taskmanager.py). But you probably have to revert the removal of \".sample\" because:\n\n1. The template file still contains .sample suffix (see under trove/etc/trove/trove-guestagent.conf.sample). I know that installers probably can or should remove that .sample during installation process or users just override this parameter in configuration - I don\u0027t know, but this change potentially breaks some working installations \n\n2. This change is not related to the subject and not described in the commit message.","commit_id":"5e1f206d801f275401b738f346c18ecbdb23aa68"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"99542aa037fa38619d94338aed7b4b5ccd6cd7b9","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":238,"context_line":"               help\u003d\"Path to folder with cloudinit scripts.\"),"},{"line_number":239,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":240,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":241,"context_line":"               help\u003d\"Path to guestagent config file.\"),"},{"line_number":242,"context_line":"    cfg.DictOpt(\u0027datastore_registry_ext\u0027, default\u003ddict(),"},{"line_number":243,"context_line":"                help\u003d\u0027Extension for default datastore managers.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_ff870010","line":240,"in_reply_to":"1ae5cdf2_ad300408","updated":"2014-06-26 14:15:11.000000000","message":"I disagree, this default is a bit dangerous. This seems directly related to the injection of  the guest conf file from the taskmanager, but I could move this to a separate bug and patch if folks prefer. \n\nThe primary issue with the current default is not the .sample extension but rather the $pybasedir. The taskmanager injection of this conf file is optional: it checks if the specified guest_config file exists, and if so injects it into the guest image at boot. \n\nHowever we are defaulting to a file in the trove src tree that /always/ exists (and is intended as a template only). If you were to create a guest image with its own guest conf properly configured, the current default would cause your conf to be overwritten by the sample.\n\nI suggest:\n - the sample file remains where it is with the same extension\n - the default option should be changed as I\u0027ve proposed\n\nThis means that:\n - If the user tailors all the /etc/trove/*conf files on their controller node, the right thing will happen and the tailored guest conf will be injected. \n - If the user chooses to only tailor guest conf on their images, they don\u0027t have to worry about a sample file being injected over the top.","commit_id":"5e1f206d801f275401b738f346c18ecbdb23aa68"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"3dd5d433f79586840d1f7ad40506e82ee947aded","unresolved":false,"context_lines":[{"line_number":237,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":238,"context_line":"               help\u003d\"Path to folder with cloudinit scripts.\"),"},{"line_number":239,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":240,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":241,"context_line":"               help\u003d\"Path to guestagent config file.\"),"},{"line_number":242,"context_line":"    cfg.DictOpt(\u0027datastore_registry_ext\u0027, default\u003ddict(),"},{"line_number":243,"context_line":"                help\u003d\u0027Extension for default datastore managers.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_da4172a7","line":240,"in_reply_to":"1ae5cdf2_ff870010","updated":"2014-06-26 16:00:25.000000000","message":"Ok, make sense.","commit_id":"5e1f206d801f275401b738f346c18ecbdb23aa68"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"159281ab61f14183325d16f28144e45ac5f57cc0","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":344,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\"Path to folder on guest where config files will be \""},{"line_number":347,"context_line":"                    \"injected during instance creation.\"),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":349,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3d6d309a","line":346,"updated":"2015-02-10 18:30:17.000000000","message":"Also a consistency thing, strings are generally \u0027single quoted\u0027 not \"double quoted\" ;)","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"159281ab61f14183325d16f28144e45ac5f57cc0","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\"Path to folder on guest where config files will be \""},{"line_number":347,"context_line":"                    \"injected during instance creation.\"),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":349,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":350,"context_line":"               help\u003d\"Path to guestagent config file to be injected during \""},{"line_number":351,"context_line":"                    \"instance creation.\"),"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_5d03c4b7","line":348,"updated":"2015-02-10 18:30:17.000000000","message":"It is clear that the previous path is likely on the guest but it isn\u0027t clear whether the following path is on the guest or on the host. Maybe rewording the help text would be nice?","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"61ee5bc4cf41360fa1896264ae827cc6bceff02c","unresolved":false,"context_lines":[{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\"Path to folder on guest where config files will be \""},{"line_number":347,"context_line":"                    \"injected during instance creation.\"),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":349,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":350,"context_line":"               help\u003d\"Path to guestagent config file to be injected during \""},{"line_number":351,"context_line":"                    \"instance creation.\"),"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_c9b452f4","line":348,"in_reply_to":"da86d52c_5d03c4b7","updated":"2015-02-10 19:53:10.000000000","message":"This is the path on the host, to find the file that should be injected in to the guest...","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"159281ab61f14183325d16f28144e45ac5f57cc0","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                    \"injected during instance creation.\"),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":349,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":350,"context_line":"               help\u003d\"Path to guestagent config file to be injected during \""},{"line_number":351,"context_line":"                    \"instance creation.\"),"},{"line_number":352,"context_line":"    cfg.DictOpt(\u0027datastore_registry_ext\u0027, default\u003ddict(),"},{"line_number":353,"context_line":"                help\u003d\u0027Extension for default datastore managers. \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3dd8d07e","line":350,"updated":"2015-02-10 18:30:17.000000000","message":"Other commands have online help that consistently refers to \"Guest Agent\". I\u0027d suggest you do the same for consistency.","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"27ccef81980301a922bb3ae876a9e4ded327aece","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                    \"injected during instance creation.\"),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":349,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":350,"context_line":"               help\u003d\"Path to guestagent config file to be injected during \""},{"line_number":351,"context_line":"                    \"instance creation.\"),"},{"line_number":352,"context_line":"    cfg.DictOpt(\u0027datastore_registry_ext\u0027, default\u003ddict(),"},{"line_number":353,"context_line":"                help\u003d\u0027Extension for default datastore managers. \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_cc9c52c3","line":350,"in_reply_to":"da86d52c_3dd8d07e","updated":"2015-02-11 04:23:22.000000000","message":"We actually did a lot of work to get the log and help messages consistent.  I think it\u0027s a good thing to maintain that.  I\u0027m not a stickler for single vs double quotes, but while you\u0027re making the other change ... ;)","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"e766ab71e7be7f6540d991343acfe0e51acce58f","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                    \"injected during instance creation.\"),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"},{"line_number":349,"context_line":"               default\u003d\u0027/etc/trove/trove-guestagent.conf\u0027,"},{"line_number":350,"context_line":"               help\u003d\"Path to guestagent config file to be injected during \""},{"line_number":351,"context_line":"                    \"instance creation.\"),"},{"line_number":352,"context_line":"    cfg.DictOpt(\u0027datastore_registry_ext\u0027, default\u003ddict(),"},{"line_number":353,"context_line":"                help\u003d\u0027Extension for default datastore managers. \u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_bf1ad46c","line":350,"in_reply_to":"da86d52c_cc9c52c3","updated":"2015-02-11 12:56:43.000000000","message":"Peter, I\u0027m bringing up the single vs. double-quote issue only because some recent changes I\u0027ve made and some that I\u0027m going to be making are wholesale substitutions of text based on some whacky regular expressions. Thing oslo migrations/deprecations, class or import name changes, moving files and the respective imports etc.,\n\nConsistency is a very good thing in those situations.","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"84267ae740e6aa8565153b2fa2b6d32f4892c776","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                    \u0027expression.\u0027),"},{"line_number":343,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":344,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\u0027Path to folder on the Guest where config files will be \u0027"},{"line_number":347,"context_line":"                    \u0027injected during instance creation.\u0027),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_a5e8f5e2","line":345,"updated":"2015-02-25 09:11:54.000000000","message":"What\u0027s the reason to use /etc/trove/conf.d as the default here? \n\nAll of the trove config files are stored in /etc/trove (i.e. on the API, taskmanager, etc.) so why not use this same directory for the config file on the guest-agent to be consistent?","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"749d4f586f0bd10be9e733c1f3566b208f249107","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                    \u0027expression.\u0027),"},{"line_number":343,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":344,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\u0027Path to folder on the Guest where config files will be \u0027"},{"line_number":347,"context_line":"                    \u0027injected during instance creation.\u0027),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_f2ad3fea","line":345,"in_reply_to":"ba7be1f8_5c4c649e","updated":"2015-02-25 15:08:12.000000000","message":"See the comments around June 25th for discussion about this proposal from p-draigbrady and Sergey.","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"85acac45666c322855c87e000cf6c217fc74e451","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                    \u0027expression.\u0027),"},{"line_number":343,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":344,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\u0027Path to folder on the Guest where config files will be \u0027"},{"line_number":347,"context_line":"                    \u0027injected during instance creation.\u0027),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_5c4c649e","line":345,"in_reply_to":"ba7be1f8_a5e8f5e2","updated":"2015-02-25 14:44:02.000000000","message":"This was suggested early on in the review feedback, to separate generated/injected files from user-created files on the image. From the earlier comment: \n\n\"One difference there is I was using /etc/trove/conf.d/guest_info rather than just /etc/trove/guest_info That\u0027s because conf.d/ dirs are the canonical place to drop config files managed externally to a distro package. Also trove already has a place holder file in this location:\nhttps://github.com/openstack/trove/tree/master/etc/trove/conf.d\"","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"97b5cdcfa91b80102c56ae24df602733f6a392e2","unresolved":false,"context_lines":[{"line_number":342,"context_line":"                    \u0027expression.\u0027),"},{"line_number":343,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":344,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":345,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"},{"line_number":346,"context_line":"               help\u003d\u0027Path to folder on the Guest where config files will be \u0027"},{"line_number":347,"context_line":"                    \u0027injected during instance creation.\u0027),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027guest_config\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_97dbce7c","line":345,"in_reply_to":"ba7be1f8_f2ad3fea","updated":"2015-02-26 21:22:50.000000000","message":"IMO its a good idea to keep the injected files from the generated files. It helps to clarify Trove\u0027s host-guest communication mechanism.","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"}],"trove/taskmanager/models.py":[{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"e1ac3e4ba6ec9698758212643db3fb7c0e30eceb","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                              availability_zone, nics):"},{"line_number":329,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":330,"context_line":"        try:"},{"line_number":331,"context_line":"            files \u003d {\"/etc/guest_info\": (\"[DEFAULT]\\n--guest_id\u003d\""},{"line_number":332,"context_line":"                                         \"%s\\n--datastore_manager\u003d%s\\n\""},{"line_number":333,"context_line":"                                         \"--tenant_id\u003d%s\\n\" %"},{"line_number":334,"context_line":"                                         (self.id, datastore_manager,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_81a7f5a6","line":331,"updated":"2014-06-24 03:32:53.000000000","message":"Why don\u0027t we move this file to /etc/trove as well?","commit_id":"73c0ae8b54d2efaf5ef54fa628993bb65bd06c15"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"9c174880c1ca69090a7e1153ba1d278b5e48ef08","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                              availability_zone, nics):"},{"line_number":329,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":330,"context_line":"        try:"},{"line_number":331,"context_line":"            files \u003d {\"/etc/guest_info\": (\"[DEFAULT]\\n--guest_id\u003d\""},{"line_number":332,"context_line":"                                         \"%s\\n--datastore_manager\u003d%s\\n\""},{"line_number":333,"context_line":"                                         \"--tenant_id\u003d%s\\n\" %"},{"line_number":334,"context_line":"                                         (self.id, datastore_manager,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ae5cdf2_bca07d43","line":331,"in_reply_to":"1ae5cdf2_81a7f5a6","updated":"2014-06-24 15:04:39.000000000","message":"Agreed, had raised that idea on the bug too. \n\nI didn\u0027t make that change because it also requires changes in trove-integration (the upstart scripts) and things were in flux there -- but I\u0027ll take a look at it now.","commit_id":"73c0ae8b54d2efaf5ef54fa628993bb65bd06c15"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"3216fc0fd1a53bc440704e35c1b4b45fcf6e817b","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                                           \"datastore_manager\u003d%s\\n\""},{"line_number":575,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":576,"context_line":"                                           (self.id, datastore_manager,"},{"line_number":577,"context_line":"                                            self.tenant_id))}"},{"line_number":578,"context_line":"        if os.path.isfile(CONF.get(\u0027guest_config\u0027)):"},{"line_number":579,"context_line":"            with open(CONF.get(\u0027guest_config\u0027), \"r\") as f:"},{"line_number":580,"context_line":"                files[\"/etc/trove/trove-guestagent.conf\"] \u003d f.read()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_2821429e","line":577,"updated":"2014-06-26 05:55:55.000000000","message":"Can you create a constant, please?\n\nTROVE_CONFIG_DIR or something like that.","commit_id":"5e1f206d801f275401b738f346c18ecbdb23aa68"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"99542aa037fa38619d94338aed7b4b5ccd6cd7b9","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                                           \"datastore_manager\u003d%s\\n\""},{"line_number":575,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":576,"context_line":"                                           (self.id, datastore_manager,"},{"line_number":577,"context_line":"                                            self.tenant_id))}"},{"line_number":578,"context_line":"        if os.path.isfile(CONF.get(\u0027guest_config\u0027)):"},{"line_number":579,"context_line":"            with open(CONF.get(\u0027guest_config\u0027), \"r\") as f:"},{"line_number":580,"context_line":"                files[\"/etc/trove/trove-guestagent.conf\"] \u003d f.read()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_1f8d8c31","line":577,"in_reply_to":"1ae5cdf2_2821429e","updated":"2014-06-26 14:15:11.000000000","message":"Sure, will do.","commit_id":"5e1f206d801f275401b738f346c18ecbdb23aa68"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"3216fc0fd1a53bc440704e35c1b4b45fcf6e817b","unresolved":false,"context_lines":[{"line_number":577,"context_line":"                                            self.tenant_id))}"},{"line_number":578,"context_line":"        if os.path.isfile(CONF.get(\u0027guest_config\u0027)):"},{"line_number":579,"context_line":"            with open(CONF.get(\u0027guest_config\u0027), \"r\") as f:"},{"line_number":580,"context_line":"                files[\"/etc/trove/trove-guestagent.conf\"] \u003d f.read()"},{"line_number":581,"context_line":"        userdata \u003d None"},{"line_number":582,"context_line":"        cloudinit \u003d os.path.join(CONF.get(\u0027cloudinit_location\u0027),"},{"line_number":583,"context_line":"                                 \"%s.cloudinit\" % datastore_manager)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_885df618","line":580,"updated":"2014-06-26 05:55:55.000000000","message":"1. you can use the same const here.\n\n2. \"guest_config\" in line 579 and full hardcoded path in the next line is confusing. I understand semantic differences between them but its still confusing.","commit_id":"5e1f206d801f275401b738f346c18ecbdb23aa68"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"d975119a716bdb267f606a3a76c098c110681896","unresolved":false,"context_lines":[{"line_number":66,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"CONF_DIR \u003d \u0027/etc/trove/conf.d\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"use_nova_server_volume \u003d CONF.use_nova_server_volume"},{"line_number":71,"context_line":"use_heat \u003d CONF.use_heat"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_ee68a7f7","line":69,"updated":"2014-07-01 12:23:39.000000000","message":"To be accurate this is directory where user-created configuration can be stored, so\n\nUSER_CREATED_CONF_DIR\n\nprobably better and widely used term.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"b6ddcc000f3a11eb530c68a6dd08629ee24077b7","unresolved":false,"context_lines":[{"line_number":66,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"CONF_DIR \u003d \u0027/etc/trove/conf.d\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"use_nova_server_volume \u003d CONF.use_nova_server_volume"},{"line_number":71,"context_line":"use_heat \u003d CONF.use_heat"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b1360b02","line":69,"in_reply_to":"baada198_be36da01","updated":"2014-07-03 04:23:04.000000000","message":"Both your suggestions are valid, so please pick one of them.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"f3c187a9b3cdeb0340b7b6fbd5ed7696e022212c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"CONF_DIR \u003d \u0027/etc/trove/conf.d\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"use_nova_server_volume \u003d CONF.use_nova_server_volume"},{"line_number":71,"context_line":"use_heat \u003d CONF.use_heat"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_be36da01","line":69,"in_reply_to":"baada198_ee68a7f7","updated":"2014-07-01 13:07:02.000000000","message":"The clarification you\u0027re looking for is between /etc/trove and /etc/trove/conf.d, right? I don\u0027t think \"user created\" is appropriate. The guest_info file is generated by the taskmanager; and the trove-guestagent.conf is configured by the operator in the same way as /etc/trove/trove.conf and related files. Perhaps this is the \"injected conf dir\" or \"cloud init conf dir\".","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"7e83d84f585f6e8e6bd4c99d684791fb10a333fb","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            files \u003d {"},{"line_number":333,"context_line":"                CONF_DIR + \"/guest_info\": (\"[DEFAULT]\\nguest_id\u003d\""},{"line_number":334,"context_line":"                                           \"%s\\ndatastore_manager\u003d%s\\n\""},{"line_number":335,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":336,"context_line":"                                           (self.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_8e764b3d","line":333,"range":{"start_line":333,"start_character":16,"end_line":333,"end_character":24},"updated":"2014-07-01 11:29:12.000000000","message":"since this location is also used in one other place (cfg.py) does it make sense to make this a config option like cloudinit_location?","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"a30293e9fc15633145a085682cafec72516cae72","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            files \u003d {"},{"line_number":333,"context_line":"                CONF_DIR + \"/guest_info\": (\"[DEFAULT]\\nguest_id\u003d\""},{"line_number":334,"context_line":"                                           \"%s\\ndatastore_manager\u003d%s\\n\""},{"line_number":335,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":336,"context_line":"                                           (self.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_dcc8b624","line":333,"in_reply_to":"baada198_1e0c2642","updated":"2014-07-02 21:03:24.000000000","message":"I agree making the CONF_DIR configurable.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a69e4faa88e98f0371a80e62186cae084e4149f7","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            files \u003d {"},{"line_number":333,"context_line":"                CONF_DIR + \"/guest_info\": (\"[DEFAULT]\\nguest_id\u003d\""},{"line_number":334,"context_line":"                                           \"%s\\ndatastore_manager\u003d%s\\n\""},{"line_number":335,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":336,"context_line":"                                           (self.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_10280d85","line":333,"range":{"start_line":333,"start_character":16,"end_line":333,"end_character":24},"in_reply_to":"baada198_8e764b3d","updated":"2014-07-04 10:50:58.000000000","message":"+1","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"f3c187a9b3cdeb0340b7b6fbd5ed7696e022212c","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            files \u003d {"},{"line_number":333,"context_line":"                CONF_DIR + \"/guest_info\": (\"[DEFAULT]\\nguest_id\u003d\""},{"line_number":334,"context_line":"                                           \"%s\\ndatastore_manager\u003d%s\\n\""},{"line_number":335,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":336,"context_line":"                                           (self.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_1e0c2642","line":333,"in_reply_to":"baada198_8e764b3d","updated":"2014-07-01 13:07:02.000000000","message":"Yes, I think creating an option for this is reasonable and may address the backward-compatibility concern that Sergey raised.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"b6ddcc000f3a11eb530c68a6dd08629ee24077b7","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":331,"context_line":"        try:"},{"line_number":332,"context_line":"            files \u003d {"},{"line_number":333,"context_line":"                CONF_DIR + \"/guest_info\": (\"[DEFAULT]\\nguest_id\u003d\""},{"line_number":334,"context_line":"                                           \"%s\\ndatastore_manager\u003d%s\\n\""},{"line_number":335,"context_line":"                                           \"tenant_id\u003d%s\\n\" %"},{"line_number":336,"context_line":"                                           (self.id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_7dc5dd3a","line":333,"in_reply_to":"baada198_dcc8b624","updated":"2014-07-03 04:23:04.000000000","message":"Agree.","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a69e4faa88e98f0371a80e62186cae084e4149f7","unresolved":false,"context_lines":[{"line_number":574,"context_line":"    def _create_server(self, flavor_id, image_id, security_groups,"},{"line_number":575,"context_line":"                       datastore_manager, block_device_mapping,"},{"line_number":576,"context_line":"                       availability_zone, nics):"},{"line_number":577,"context_line":"        files \u003d {CONF_DIR + \"/guest_info\": (\"[DEFAULT]\\nguest_id\u003d%s\\n\""},{"line_number":578,"context_line":"                                            \"datastore_manager\u003d%s\\n\""},{"line_number":579,"context_line":"                                            \"tenant_id\u003d%s\\n\" %"},{"line_number":580,"context_line":"                                            (self.id, datastore_manager,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_302d1196","line":577,"updated":"2014-07-04 10:50:58.000000000","message":"same","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a69e4faa88e98f0371a80e62186cae084e4149f7","unresolved":false,"context_lines":[{"line_number":581,"context_line":"                                             self.tenant_id))}"},{"line_number":582,"context_line":"        if os.path.isfile(CONF.get(\u0027guest_config\u0027)):"},{"line_number":583,"context_line":"            with open(CONF.get(\u0027guest_config\u0027), \"r\") as f:"},{"line_number":584,"context_line":"                files[CONF_DIR + \"/trove-guestagent.conf\"] \u003d f.read()"},{"line_number":585,"context_line":"        userdata \u003d None"},{"line_number":586,"context_line":"        cloudinit \u003d os.path.join(CONF.get(\u0027cloudinit_location\u0027),"},{"line_number":587,"context_line":"                                 \"%s.cloudinit\" % datastore_manager)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_501e0560","line":584,"updated":"2014-07-04 10:50:58.000000000","message":"same","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"2f5723bc4035082afded43b5e996d462b5b41532","unresolved":false,"context_lines":[{"line_number":65,"context_line":"USAGE_SLEEP_TIME \u003d CONF.usage_sleep_time  # seconds."},{"line_number":66,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"INJECTED_CONF_DIR \u003d CONF.injected_config_location"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"if INJECTED_CONF_DIR.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":71,"context_line":"    # Pre-Juno guest images expect \u0027/etc/guest_info\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_fc953388","line":68,"updated":"2014-07-20 12:29:18.000000000","message":"I know that injected_config_location is a long string but would you consider naming the variable the same (capitalized) as the CONF parameter?\n\nINJECTED_CONFIG_LOCATION \u003d CONF.injected_config_location","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"ecae92e48006dd4ce46ce472ec9de156373fb636","unresolved":false,"context_lines":[{"line_number":65,"context_line":"USAGE_SLEEP_TIME \u003d CONF.usage_sleep_time  # seconds."},{"line_number":66,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"INJECTED_CONF_DIR \u003d CONF.injected_config_location"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"if INJECTED_CONF_DIR.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":71,"context_line":"    # Pre-Juno guest images expect \u0027/etc/guest_info\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_dc830f01","line":68,"in_reply_to":"baada198_fc953388","updated":"2014-07-20 13:04:49.000000000","message":"As you may have guessed, I shortened it to deal with pep8 line wrapping stuff elsewhere in the file. But perhaps with the other refactoring it\u0027ll work out better.","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"2f5723bc4035082afded43b5e996d462b5b41532","unresolved":false,"context_lines":[{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"INJECTED_CONF_DIR \u003d CONF.injected_config_location"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"if INJECTED_CONF_DIR.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":71,"context_line":"    # Pre-Juno guest images expect \u0027/etc/guest_info\u0027"},{"line_number":72,"context_line":"    GUEST_INFO_FILE \u003d \"guest_info\""},{"line_number":73,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_9ceef720","line":70,"updated":"2014-07-20 12:29:18.000000000","message":"I don\u0027t understand this hunk of code. injected_config_location is set to /etc/trove/guest_info.conf\n\nI can\u0027t see how you\u0027d ever get the true part of this test to occur. But you have a comment here that relates this to pre-juno guest images.","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"ecae92e48006dd4ce46ce472ec9de156373fb636","unresolved":false,"context_lines":[{"line_number":67,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":68,"context_line":"INJECTED_CONF_DIR \u003d CONF.injected_config_location"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"if INJECTED_CONF_DIR.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":71,"context_line":"    # Pre-Juno guest images expect \u0027/etc/guest_info\u0027"},{"line_number":72,"context_line":"    GUEST_INFO_FILE \u003d \"guest_info\""},{"line_number":73,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_5c6fff5f","line":70,"in_reply_to":"baada198_9ceef720","updated":"2014-07-20 13:04:49.000000000","message":"The user can override injected_config_location in trove-taskmanager.conf. Users trying to use a pre-juno image would need to set this to \u0027/etc\u0027 so that their existing guestagent init scripts work; in that scenario we want to fall back to the old guest_info file name as well.\n\n(I tested this case using my patched taskmanager with the unpatched trove-integration kick-start image.)","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"64b594d815e6601769a87f6b1695d7f4a0e05e1f","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":337,"context_line":"        try:"},{"line_number":338,"context_line":"            files \u003d {os.path.join(INJECTED_CONF_DIR, GUEST_INFO_FILE): ("},{"line_number":339,"context_line":"                \"[DEFAULT]\\n\""},{"line_number":340,"context_line":"                \"guest_id\u003d%s\\n\""},{"line_number":341,"context_line":"                \"datastore_manager\u003d%s\\n\""},{"line_number":342,"context_line":"                \"tenant_id\u003d%s\\n\""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_19984374","line":339,"updated":"2014-07-19 11:08:03.000000000","message":"I\u0027ve got suggestion.\nLet\u0027s move file extension definition and content building into its own method of FreshInstanceTask, so it would improve code re-useness since this pattern appears twice - \n\nlines \n#338-348 \nand \n#592-601","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"2f5723bc4035082afded43b5e996d462b5b41532","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        LOG.debug(\"begin _create_server_volume for id: %s\" % self.id)"},{"line_number":337,"context_line":"        try:"},{"line_number":338,"context_line":"            files \u003d {os.path.join(INJECTED_CONF_DIR, GUEST_INFO_FILE): ("},{"line_number":339,"context_line":"                \"[DEFAULT]\\n\""},{"line_number":340,"context_line":"                \"guest_id\u003d%s\\n\""},{"line_number":341,"context_line":"                \"datastore_manager\u003d%s\\n\""},{"line_number":342,"context_line":"                \"tenant_id\u003d%s\\n\""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_3cba4b0b","line":339,"in_reply_to":"baada198_19984374","updated":"2014-07-20 12:29:18.000000000","message":"There are a couple of other avenues for refactoring; see also your change around 422-425","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d60af586e48ccb9ee5e326f6ec1c721394891c78","unresolved":false,"context_lines":[{"line_number":67,"context_line":"USAGE_SLEEP_TIME \u003d CONF.usage_sleep_time  # seconds."},{"line_number":68,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":69,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":70,"context_line":"INJECTED_CONFIG_LOCATION \u003d CONF.injected_config_location"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"if INJECTED_CONFIG_LOCATION.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":73,"context_line":"    # Backward compatibility: if config location is set to \u0027/etc\u0027 then assume"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_ceca1c6f","line":70,"updated":"2014-07-22 12:18:24.000000000","message":"why all this logic can\u0027t be a specific method?\n\nwhy can\u0027t this be a part of _get_injected_files?\n\nall of this used only once - at provisioning, please fix it.","commit_id":"f7311540870b3d139df8d3d5b21ff65f41167256"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"961653e478fd53e60a0ce2fd31d88d0afa5f24ae","unresolved":false,"context_lines":[{"line_number":67,"context_line":"USAGE_SLEEP_TIME \u003d CONF.usage_sleep_time  # seconds."},{"line_number":68,"context_line":"HEAT_STACK_SUCCESSFUL_STATUSES \u003d [(\u0027CREATE\u0027, \u0027CREATE_COMPLETE\u0027)]"},{"line_number":69,"context_line":"HEAT_RESOURCE_SUCCESSFUL_STATE \u003d \u0027CREATE_COMPLETE\u0027"},{"line_number":70,"context_line":"INJECTED_CONFIG_LOCATION \u003d CONF.injected_config_location"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"if INJECTED_CONFIG_LOCATION.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":73,"context_line":"    # Backward compatibility: if config location is set to \u0027/etc\u0027 then assume"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_3d8657bb","line":70,"in_reply_to":"baada198_ceca1c6f","updated":"2014-07-22 19:44:30.000000000","message":"Good point, done.","commit_id":"f7311540870b3d139df8d3d5b21ff65f41167256"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"04f220dc6532e6331d740c82bbfdbd6455d9d784","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                       \u0027volumes\u0027: created_volumes}"},{"line_number":708,"context_line":"        return volume_info"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def _prepare_file_and_userdata(self, datastore_manager):"},{"line_number":711,"context_line":"        files \u003d {\"/etc/guest_info\": (\"[DEFAULT]\\nguest_id\u003d%s\\n\""},{"line_number":712,"context_line":"                                     \"datastore_manager\u003d%s\\n\""},{"line_number":713,"context_line":"                                     \"tenant_id\u003d%s\\n\" %"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_5a2bfc93","side":"PARENT","line":710,"updated":"2015-02-02 20:49:41.000000000","message":"i\u0027m not quite sure that splitting userdata and injection files is a good thing, but i\u0027m not telling that it is bad, but i\u0027d like to know what\u0027s the purpose of splitting?","commit_id":"23a682b89d0632732aead6345c189d88ad040eb8"},{"author":{"_account_id":12673,"name":"Duk Loi","email":"duk@tesora.com","username":"duktesora"},"change_message_id":"b2c855b5c41f406a2d73bd00df317524c5dc673f","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                       \u0027volumes\u0027: created_volumes}"},{"line_number":708,"context_line":"        return volume_info"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def _prepare_file_and_userdata(self, datastore_manager):"},{"line_number":711,"context_line":"        files \u003d {\"/etc/guest_info\": (\"[DEFAULT]\\nguest_id\u003d%s\\n\""},{"line_number":712,"context_line":"                                     \"datastore_manager\u003d%s\\n\""},{"line_number":713,"context_line":"                                     \"tenant_id\u003d%s\\n\" %"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_6fba9324","side":"PARENT","line":710,"in_reply_to":"da86d52c_5a2bfc93","updated":"2015-02-03 17:01:17.000000000","message":"The injected files are now read once when the call to create_instance is made which makes sense since the contents will never change and they can be passed through to the methods that require them.\n\nInitially I had thought to read the user data there as well. But I decided against it simply because I didn’t know if there was a purpose behind doing multiple reads of the user data when you put it in for the “Fix broken instance provisioning with disabled volume support”. So to me it just seemed safer to leave the user data the way you originally implemented it.","commit_id":"23a682b89d0632732aead6345c189d88ad040eb8"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"159281ab61f14183325d16f28144e45ac5f57cc0","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    def _get_injected_files(self, datastore_manager):"},{"line_number":221,"context_line":"        injected_config_location \u003d CONF.get(\u0027injected_config_location\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        if injected_config_location.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":224,"context_line":"            # Backward compatibility:"},{"line_number":225,"context_line":"            # If config location is set to \u0027/etc\u0027 then assume a pre-Juno"},{"line_number":226,"context_line":"            # guest image and use the old file name (with no extension)."}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_fd01d86a","line":223,"updated":"2015-02-10 18:30:17.000000000","message":"So, how do we manage upgrades? Is a user required to specify this? Why not default it above if it isn\u0027t specified? What would you specify as the default?","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"61ee5bc4cf41360fa1896264ae827cc6bceff02c","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    def _get_injected_files(self, datastore_manager):"},{"line_number":221,"context_line":"        injected_config_location \u003d CONF.get(\u0027injected_config_location\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        if injected_config_location.rstrip(\u0027/\u0027) \u003d\u003d \"/etc\":"},{"line_number":224,"context_line":"            # Backward compatibility:"},{"line_number":225,"context_line":"            # If config location is set to \u0027/etc\u0027 then assume a pre-Juno"},{"line_number":226,"context_line":"            # guest image and use the old file name (with no extension)."}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_490302b8","line":223,"in_reply_to":"da86d52c_fd01d86a","updated":"2015-02-10 19:53:10.000000000","message":"Haven\u0027t looked at this in a while, but the original intent here was to handle the change in file name (guest_info vs guest_info.conf). The injected_config_location should always default to the new /etc/trove/conf.d path. \n\nIf the user needs to use an older guest image with files in /etc, they would need to explicitly set the injected_config_location to the non-default  \u0027/etc\u0027. We handle that as a special backwards-compatibility case and fall back to the old file name.","commit_id":"72d02cc9e8f695886332acadc8b8072fdbe15008"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"84267ae740e6aa8565153b2fa2b6d32f4892c776","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            # Since Juno, the default is:"},{"line_number":230,"context_line":"            #   /etc/trove/conf.d/guest_info.conf"},{"line_number":231,"context_line":"            guest_info_file \u003d os.path.join(injected_config_location,"},{"line_number":232,"context_line":"                                           \"guest_info.conf\")"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        files \u003d {guest_info_file: ("},{"line_number":235,"context_line":"            \"[DEFAULT]\\n\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_4532d95f","line":232,"updated":"2015-02-25 09:11:54.000000000","message":"Also, it\u0027s probably a good idea not to hard-code the name of the injected file here. Since we are looking up the \u0027injected_config_location\u0027 from the conf file, why not consider having the whole path to the guest info file as a config value rather than just the location?\n\nIn that manner, backward compat can just be driven off of the config value, and we wouldn\u0027t have a need for this if branch.","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"f80d9c5d7c67dbf1af7d936ed55a077405aa8121","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            # Since Juno, the default is:"},{"line_number":230,"context_line":"            #   /etc/trove/conf.d/guest_info.conf"},{"line_number":231,"context_line":"            guest_info_file \u003d os.path.join(injected_config_location,"},{"line_number":232,"context_line":"                                           \"guest_info.conf\")"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        files \u003d {guest_info_file: ("},{"line_number":235,"context_line":"            \"[DEFAULT]\\n\""}],"source_content_type":"text/x-python","patch_set":15,"id":"9a80dd14_0d284c33","line":232,"in_reply_to":"ba7be1f8_178efe27","updated":"2015-03-05 22:37:45.000000000","message":"So it looks like adding a CONF \"guest_info\" value (defaulting to guest_info.conf) is the way to move this forward ...","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"97b5cdcfa91b80102c56ae24df602733f6a392e2","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            # Since Juno, the default is:"},{"line_number":230,"context_line":"            #   /etc/trove/conf.d/guest_info.conf"},{"line_number":231,"context_line":"            guest_info_file \u003d os.path.join(injected_config_location,"},{"line_number":232,"context_line":"                                           \"guest_info.conf\")"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        files \u003d {guest_info_file: ("},{"line_number":235,"context_line":"            \"[DEFAULT]\\n\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_178efe27","line":232,"in_reply_to":"ba7be1f8_37718944","updated":"2015-02-26 21:22:50.000000000","message":"Agree with Nikhil that submitting the whole path directly might make things clearer and more flexible.","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":9749,"name":"Greg Lucas","email":"greg@glucas.net","username":"glucas"},"change_message_id":"749d4f586f0bd10be9e733c1f3566b208f249107","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            # Since Juno, the default is:"},{"line_number":230,"context_line":"            #   /etc/trove/conf.d/guest_info.conf"},{"line_number":231,"context_line":"            guest_info_file \u003d os.path.join(injected_config_location,"},{"line_number":232,"context_line":"                                           \"guest_info.conf\")"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        files \u003d {guest_info_file: ("},{"line_number":235,"context_line":"            \"[DEFAULT]\\n\""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_37718944","line":232,"in_reply_to":"ba7be1f8_4532d95f","updated":"2015-02-25 15:08:12.000000000","message":"Think it was done this way because there are multiple files that go in to the injected config dir, the guest info and the guestagent conf. Could have two config options I suppose, one for the directory and one for the info file name.","commit_id":"968e497dea5b561c0e46f4e7febe5b8340545fc9"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2d69f3ca7b0b843014f0965feed79a34bf460e86","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        if (\u0027/\u0027 in guest_info):"},{"line_number":225,"context_line":"            # Backward compatibility:"},{"line_number":226,"context_line":"            # Set guest_info to be /etc/guest_info for pre-Juno guest image."},{"line_number":227,"context_line":"            guest_info_file \u003d guest_info"},{"line_number":228,"context_line":"        else:"},{"line_number":229,"context_line":"            # Since Juno, the default is:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_15bd85d8","line":226,"updated":"2015-03-06 19:04:11.000000000","message":"I find this comment confusing as guest_info is being set to exactly what\u0027s in the conf file. Maybe:\n\n  # Set guest_info to exact value specified in the conf file.\n  # This should be /etc/guest_info for pre-Juno compatibility.\n\nMaybe the original comment should be in the conf sample file ... which I notice hasn\u0027t been updated :(","commit_id":"e3416d4163bd8713ae6fad3d88fa135a5a203319"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2d69f3ca7b0b843014f0965feed79a34bf460e86","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            guest_info_file \u003d guest_info"},{"line_number":228,"context_line":"        else:"},{"line_number":229,"context_line":"            # Since Juno, the default is:"},{"line_number":230,"context_line":"            #   /etc/trove/conf.d/guest_info.conf"},{"line_number":231,"context_line":"            guest_info_file \u003d os.path.join(injected_config_location,"},{"line_number":232,"context_line":"                                           guest_info)"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9a80dd14_c88ef478","line":230,"updated":"2015-03-06 19:04:11.000000000","message":"This comment probably isn\u0027t necessary, since the info should be in etc/trove/trove-taskmanager.conf.sample (where it\u0027ll be more useful anyways).","commit_id":"e3416d4163bd8713ae6fad3d88fa135a5a203319"}],"trove/templates/cassandra/heat.template":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a69e4faa88e98f0371a80e62186cae084e4149f7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":35,"context_line":"        config:"},{"line_number":36,"context_line":"          files:"},{"line_number":37,"context_line":"            /etc/trove/conf.d/guest_info:"},{"line_number":38,"context_line":"              content:"},{"line_number":39,"context_line":"                Fn::Join:"},{"line_number":40,"context_line":"                - \u0027\u0027"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"baada198_d03135ee","line":37,"updated":"2014-07-04 10:50:58.000000000","message":"Should be rendered according to trove configuration","commit_id":"82eec00878ff246a65857f81b004ee4e6074000b"}],"trove/templates/default.heat.template":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"990ad265afa9d0d8ee8464e6bbba1b4f22cc2fae","unresolved":false,"context_lines":[{"line_number":40,"context_line":"              content:"},{"line_number":41,"context_line":"                Fn::Join:"},{"line_number":42,"context_line":"                - \u0027\u0027"},{"line_number":43,"context_line":"                - [\"[DEFAULT]\\nguest_id\u003d\", {Ref: InstanceId},"},{"line_number":44,"context_line":"                  \"\\ndatastore_manager\u003d\", {Ref: DatastoreManager},"},{"line_number":45,"context_line":"                  \"\\ntenant_id\u003d\", {Ref: TenantId}]"},{"line_number":46,"context_line":"              mode: \u0027000644\u0027"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"baada198_b07e7a19","line":43,"updated":"2014-07-20 21:38:35.000000000","message":"This also could be a part of rendering or template parametrizing procedure, since this code appears for other provisioning methods","commit_id":"50a8f4e383bd43c813d9bf811776f247deb3825a"}]}
