)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"623087383585edbba6cd721a7a66d9df4d855594","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This code refactors the earlier code of instance creation using heat."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- Configuration tempaltes stored at trove/templates/(datastore_type)/config.template"},{"line_number":15,"context_line":"- Heat templates are stored in trove/templates/(datastore_type)/heat.template"},{"line_number":16,"context_line":"- One template per datastore type"},{"line_number":17,"context_line":"- New parameter - ImageId"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"AAAATn%2F%2FAt8%3D","line":14,"updated":"2013-11-15 18:23:49.000000000","message":"templates, not tempaltes","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"950f2239c3d32488474f22274f485a6a3df77c79","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This code refactors the earlier code of instance creation using heat."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- Configuration tempaltes stored at trove/templates/(datastore_type)/config.template"},{"line_number":15,"context_line":"- Heat templates are stored in trove/templates/(datastore_type)/heat.template"},{"line_number":16,"context_line":"- One template per datastore type"},{"line_number":17,"context_line":"- New parameter - ImageId"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"AAAATn%2F%2FArI%3D","line":14,"in_reply_to":"AAAATn%2F%2FAt8%3D","updated":"2013-11-15 18:32:13.000000000","message":"+1","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"}],"etc/trove/heat_templates/mysql.heat.template":[{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"9084597e43de70723b6ff8fbb4619197b63a74d0","unresolved":false,"context_lines":[{"line_number":8,"context_line":"  Flavor:"},{"line_number":9,"context_line":"    Type: String"},{"line_number":10,"context_line":"    Default: m1.small"},{"line_number":11,"context_line":"    AllowedValues: [m1.tiny, m1.small, m1.medium, m1.large, m1.xlarge]"},{"line_number":12,"context_line":"  VolumeSize:"},{"line_number":13,"context_line":"    Type: Number"},{"line_number":14,"context_line":"    Default : \u00271\u0027"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F91E%3D","line":11,"updated":"2013-10-24 14:29:45.000000000","message":"Better remove that validation, as far as it can be different for different OS installation.\nFlavor names are not standardized.","commit_id":"476cbc48d475b71450c57801023927a4061c7348"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"79bb469e7e4e31651009dbf084bcf2961b58afba","unresolved":false,"context_lines":[{"line_number":8,"context_line":"  Flavor:"},{"line_number":9,"context_line":"    Type: String"},{"line_number":10,"context_line":"    Default: m1.small"},{"line_number":11,"context_line":"    AllowedValues: [m1.tiny, m1.small, m1.medium, m1.large, m1.xlarge]"},{"line_number":12,"context_line":"  VolumeSize:"},{"line_number":13,"context_line":"    Type: Number"},{"line_number":14,"context_line":"    Default : \u00271\u0027"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAATn%2F%2F9xk%3D","line":11,"in_reply_to":"AAAATn%2F%2F91E%3D","updated":"2013-10-24 14:35:48.000000000","message":"agreed","commit_id":"476cbc48d475b71450c57801023927a4061c7348"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":1,"context_line":"HeatTemplateFormatVersion: \u00272012-12-12\u0027"},{"line_number":2,"context_line":"Description: Instance creation template for mysql"},{"line_number":3,"context_line":"Parameters:"},{"line_number":4,"context_line":"  KeyName:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2FzuA%3D","line":1,"updated":"2013-10-28 18:29:48.000000000","message":"This file is safe to use as a jinja template and should be moved to trove/templates/heat","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"047e95086a197182fee34b7c11da15c77e9e13b0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"HeatTemplateFormatVersion: \u00272012-12-12\u0027"},{"line_number":2,"context_line":"Description: Instance creation template for mysql"},{"line_number":3,"context_line":"Parameters:"},{"line_number":4,"context_line":"  KeyName:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2Fy3U%3D","line":1,"in_reply_to":"AAAATn%2F%2Fy%2BI%3D","updated":"2013-10-28 22:57:23.000000000","message":"Main reason to use separate templates.\nSuppose i want custom userdata preparations. If i would do changes in one template they are going to be applied to another instances which would be launched with different service type and unneeded userdata.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"e7646186bcc2ba7e7bc13c03ad264e4285d812d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"HeatTemplateFormatVersion: \u00272012-12-12\u0027"},{"line_number":2,"context_line":"Description: Instance creation template for mysql"},{"line_number":3,"context_line":"Parameters:"},{"line_number":4,"context_line":"  KeyName:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2Fy%2BI%3D","line":1,"in_reply_to":"AAAATn%2F%2FzQg%3D","updated":"2013-10-28 22:17:37.000000000","message":"As soon as you want to boot another service_type, you are basically duplicating the contents of this template and changing the service_type\u003dmysql below.  Why not templatize it now?","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9cdd8710b83c952d5c7a5b098baf94d934465562","unresolved":false,"context_lines":[{"line_number":1,"context_line":"HeatTemplateFormatVersion: \u00272012-12-12\u0027"},{"line_number":2,"context_line":"Description: Instance creation template for mysql"},{"line_number":3,"context_line":"Parameters:"},{"line_number":4,"context_line":"  KeyName:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2FzQg%3D","line":1,"in_reply_to":"AAAATn%2F%2FzuA%3D","updated":"2013-10-28 20:53:23.000000000","message":"1. Jinja template dirs are hardcoded, this one is configurable.\n2. There is no need to use jinja because we are not rendering anything, just reading.\n3. Overall, jinja is to powerful to use it in such small task.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"d647b71bb02dd323ede5cc3c7d56038b24f85a2f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Default: nova"},{"line_number":18,"context_line":"Resources:"},{"line_number":19,"context_line":"  BaseInstance:"},{"line_number":20,"context_line":"    Type: AWS::EC2::Instance"},{"line_number":21,"context_line":"    Metadata:"},{"line_number":22,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":23,"context_line":"        config:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2F544%3D","line":20,"updated":"2013-10-25 13:12:54.000000000","message":"OpenStack has non-AWS things now, right? Like OS::Nova::Server? Shouldn\u0027t we be using the OpenStack versions for thignss that at internal to openstack at the very least?","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"e7646186bcc2ba7e7bc13c03ad264e4285d812d5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Default: nova"},{"line_number":18,"context_line":"Resources:"},{"line_number":19,"context_line":"  BaseInstance:"},{"line_number":20,"context_line":"    Type: AWS::EC2::Instance"},{"line_number":21,"context_line":"    Metadata:"},{"line_number":22,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":23,"context_line":"        config:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2Fy%2B8%3D","line":20,"in_reply_to":"AAAATn%2F%2F3Uw%3D","updated":"2013-10-28 22:17:37.000000000","message":"So what\u0027s the reason for not changing the Template type now?","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":7799,"name":"Yogesh","email":"yogesh.mehra@globallogic.com","username":"mehrayogesh"},"change_message_id":"78023efefd61f3d575259323f63ed43a09f8a80b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Default: nova"},{"line_number":18,"context_line":"Resources:"},{"line_number":19,"context_line":"  BaseInstance:"},{"line_number":20,"context_line":"    Type: AWS::EC2::Instance"},{"line_number":21,"context_line":"    Metadata:"},{"line_number":22,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":23,"context_line":"        config:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2F3Uw%3D","line":20,"in_reply_to":"AAAATn%2F%2F544%3D","updated":"2013-10-26 06:32:19.000000000","message":"I can\u0027t agree more...The AWS template identifiers should all be having a mapping already into OS-\u003eHeat. Since, this patch is targeting to make the template path configurable for a service, we can have another bp/patch to address your point. The template validation logic should handle this.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a9aaf81bdd16dea7405c3e72cc616755d6090c8a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Default: nova"},{"line_number":18,"context_line":"Resources:"},{"line_number":19,"context_line":"  BaseInstance:"},{"line_number":20,"context_line":"    Type: AWS::EC2::Instance"},{"line_number":21,"context_line":"    Metadata:"},{"line_number":22,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":23,"context_line":"        config:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2F50s%3D","line":20,"in_reply_to":"AAAATn%2F%2F544%3D","updated":"2013-10-25 13:22:20.000000000","message":"It doesn\u0027t affects to stack provisioning.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"047e95086a197182fee34b7c11da15c77e9e13b0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Default: nova"},{"line_number":18,"context_line":"Resources:"},{"line_number":19,"context_line":"  BaseInstance:"},{"line_number":20,"context_line":"    Type: AWS::EC2::Instance"},{"line_number":21,"context_line":"    Metadata:"},{"line_number":22,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":23,"context_line":"        config:"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAATn%2F%2Fy2M%3D","line":20,"in_reply_to":"AAAATn%2F%2Fy%2B8%3D","updated":"2013-10-28 22:57:23.000000000","message":"template is up to trove administrator, i think usage of AWS or OS resources are not critical, only heat should support both resources types","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8311,"name":"SnowDust","email":"nilakhya.chatterjee@globallogic.com","username":"nilc"},"change_message_id":"6da1e044ab6f3426cbfa810258c62d1fb6d27f75","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Default: nova"},{"line_number":18,"context_line":"Resources:"},{"line_number":19,"context_line":"  BaseInstance:"},{"line_number":20,"context_line":"    Type: AWS::EC2::Instance"},{"line_number":21,"context_line":"    Metadata:"},{"line_number":22,"context_line":"      AWS::CloudFormation::Init:"},{"line_number":23,"context_line":"        config:"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"AAAATn%2F%2FsAI%3D","line":20,"updated":"2013-10-30 12:48:12.000000000","message":"This was not changed, \n\nas AWS namespace can only provide EIP as per my knowledge please suggest.\n\nrest of the AWS namespace has a compatible replacement from OS namespace.","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"fd999431e9772124c691dd6b783dc35cd7ba74bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"HeatTemplateFormatVersion: \u00272012-12-12\u0027"},{"line_number":2,"context_line":"Description: Instance creation template for mysql"},{"line_number":3,"context_line":"Parameters:"},{"line_number":4,"context_line":"  KeyName:"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"AAAATn%2F%2FrFk%3D","line":1,"updated":"2013-10-30 15:40:26.000000000","message":"Because we officially support mysql this should be placed in the trove/templates directory","commit_id":"2e1f43b806c581aa6158fabb8c5ab0dbf5df8e7b"}],"etc/trove/trove-taskmanager.conf.sample":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"464cd1b323fdd8028f41fdf7674f084bc87405c0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"use_nova_server_volume \u003d False"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# Datastore templates"},{"line_number":81,"context_line":"configuration_path \u003d /etc/trove/templates/"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d notifer queue kombu connection options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":84,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAATn%2F%2FEgo%3D","line":81,"updated":"2013-11-14 20:21:34.000000000","message":"Nit, this probably isn\u0027t needed in the sample. Also the setting is \u0027template_path\u0027","commit_id":"fbfaa8b885690ae10f9583127a66492cf38d08d4"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2a2067b6c5b620f20f74dfadfd9cdbd39433b461","unresolved":false,"context_lines":[{"line_number":78,"context_line":"use_nova_server_volume \u003d False"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# Datastore templates"},{"line_number":81,"context_line":"configuration_path \u003d /etc/trove/templates/"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d notifer queue kombu connection options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":84,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAATn%2F%2FEck%3D","line":81,"in_reply_to":"AAAATn%2F%2FEdw%3D","updated":"2013-11-14 20:44:57.000000000","message":"I agree with Robert, I\u0027d rather not leave a red herring in our examples or documentation.","commit_id":"fbfaa8b885690ae10f9583127a66492cf38d08d4"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"c0c74d3d41521af3eca2048cbcc35e570234f45b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"use_nova_server_volume \u003d False"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# Datastore templates"},{"line_number":81,"context_line":"configuration_path \u003d /etc/trove/templates/"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d notifer queue kombu connection options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":84,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAATn%2F%2FEcw%3D","line":81,"in_reply_to":"AAAATn%2F%2FEdw%3D","updated":"2013-11-14 20:44:05.000000000","message":"The setting in cfg.py is \u0027template_path\u0027 not \u0027configuration_path\u0027 so this line does nothing.","commit_id":"fbfaa8b885690ae10f9583127a66492cf38d08d4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2147cae1e09e9e9f725b89566b09105d331e1aa4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"use_nova_server_volume \u003d False"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# Datastore templates"},{"line_number":81,"context_line":"configuration_path \u003d /etc/trove/templates/"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"# \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d notifer queue kombu connection options \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":84,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":14,"id":"AAAATn%2F%2FEdw%3D","line":81,"in_reply_to":"AAAATn%2F%2FEgo%3D","updated":"2013-11-14 20:39:58.000000000","message":"all templates are relayted to any kinds of configuration, so i\u0027d like to leave it as it is.","commit_id":"fbfaa8b885690ae10f9583127a66492cf38d08d4"}],"trove/common/cfg.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                help\u003d\u0027Extention for default service managers.\u0027"},{"line_number":211,"context_line":"                     \u0027 Allows to use custom managers for each of\u0027"},{"line_number":212,"context_line":"                     \u0027 service type supported in trove\u0027),"},{"line_number":213,"context_line":"    cfg.StrOpt(\u0027heat_template_basedir\u0027, default\u003d\u0027/etc/trove/heat_templates/\u0027,"},{"line_number":214,"context_line":"               help\u003d\u0027Base directory for storing heat templates\u0027),"},{"line_number":215,"context_line":"]"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fzt8%3D","line":213,"updated":"2013-10-28 18:29:48.000000000","message":"this is not needed if we just use the same jinja template framework","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"047e95086a197182fee34b7c11da15c77e9e13b0","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                help\u003d\u0027Extention for default service managers.\u0027"},{"line_number":211,"context_line":"                     \u0027 Allows to use custom managers for each of\u0027"},{"line_number":212,"context_line":"                     \u0027 service type supported in trove\u0027),"},{"line_number":213,"context_line":"    cfg.StrOpt(\u0027heat_template_basedir\u0027, default\u003d\u0027/etc/trove/heat_templates/\u0027,"},{"line_number":214,"context_line":"               help\u003d\u0027Base directory for storing heat templates\u0027),"},{"line_number":215,"context_line":"]"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fy24%3D","line":213,"in_reply_to":"AAAATn%2F%2Fy98%3D","updated":"2013-10-28 22:57:23.000000000","message":"Main usage of jinja is - rendering of template, since we are not going to generate heat templates, we need to load it, nothing else.\nYes, somehow i agree, that we could use jinja as template loading, but ENV should be modifieble via config value.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"e7646186bcc2ba7e7bc13c03ad264e4285d812d5","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                help\u003d\u0027Extention for default service managers.\u0027"},{"line_number":211,"context_line":"                     \u0027 Allows to use custom managers for each of\u0027"},{"line_number":212,"context_line":"                     \u0027 service type supported in trove\u0027),"},{"line_number":213,"context_line":"    cfg.StrOpt(\u0027heat_template_basedir\u0027, default\u003d\u0027/etc/trove/heat_templates/\u0027,"},{"line_number":214,"context_line":"               help\u003d\u0027Base directory for storing heat templates\u0027),"},{"line_number":215,"context_line":"]"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fy98%3D","line":213,"in_reply_to":"AAAATn%2F%2FzQM%3D","updated":"2013-10-28 22:17:37.000000000","message":"Unfortunately, i missed this discussion.   Can you update me on what the reasoning was?","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9cdd8710b83c952d5c7a5b098baf94d934465562","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                help\u003d\u0027Extention for default service managers.\u0027"},{"line_number":211,"context_line":"                     \u0027 Allows to use custom managers for each of\u0027"},{"line_number":212,"context_line":"                     \u0027 service type supported in trove\u0027),"},{"line_number":213,"context_line":"    cfg.StrOpt(\u0027heat_template_basedir\u0027, default\u003d\u0027/etc/trove/heat_templates/\u0027,"},{"line_number":214,"context_line":"               help\u003d\u0027Base directory for storing heat templates\u0027),"},{"line_number":215,"context_line":"]"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzQM%3D","line":213,"in_reply_to":"AAAATn%2F%2Fzt8%3D","updated":"2013-10-28 20:53:23.000000000","message":"As we discussed at IRC - we are not using jinja for this task.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"}],"trove/common/exception.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                \"duplicate entries.\")"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"class HeatTemplateNotFound(TroveError):"},{"line_number":317,"context_line":"    \"\"\"exception raised when a particular heat template is missing\"\"\""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    message \u003d _(\"Heat template file %(template_path)s cannot be found\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fztw%3D","line":316,"updated":"2013-10-28 18:29:48.000000000","message":"not needed","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9cdd8710b83c952d5c7a5b098baf94d934465562","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                \"duplicate entries.\")"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"class HeatTemplateNotFound(TroveError):"},{"line_number":317,"context_line":"    \"\"\"exception raised when a particular heat template is missing\"\"\""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    message \u003d _(\"Heat template file %(template_path)s cannot be found\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzQE%3D","line":316,"in_reply_to":"AAAATn%2F%2Fztw%3D","updated":"2013-10-28 20:53:23.000000000","message":"Reason is still jinja ?","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"}],"trove/common/template.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":"import jinja2"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from trove.common import cfg"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzrY%3D","line":15,"updated":"2013-10-28 18:29:48.000000000","message":"these extra imports will not be needed.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9cdd8710b83c952d5c7a5b098baf94d934465562","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":"import jinja2"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from trove.common import cfg"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzP4%3D","line":15,"in_reply_to":"AAAATn%2F%2FzrY%3D","updated":"2013-10-28 20:53:23.000000000","message":"we are not using jinja for heat templates.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    @classmethod"},{"line_number":80,"context_line":"    def get_template(cls, service_type):"},{"line_number":81,"context_line":"        \"\"\"fetch templates from the base directory\"\"\""},{"line_number":82,"context_line":"        heat_template_file_path \u003d (CONF.heat_template_basedir +"},{"line_number":83,"context_line":"                                   \"%(service_type)s.heat.template\" %"},{"line_number":84,"context_line":"                                   {\u0027service_type\u0027: service_type})"},{"line_number":85,"context_line":"        output \u003d cls.read_template(heat_template_file_path)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzsU%3D","line":82,"updated":"2013-10-28 18:29:48.000000000","message":"Use jinja instead:\ndef __init__(self, service_type):\n   self.service_type  \u003d service_type\n   file_name \u003d \u0027heat/%(service_type)s.heat.template\" % {...}\n   self.template \u003d ENV.get_template(file_name)\n\ndef render(self):\n   return self.template.render()","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"047e95086a197182fee34b7c11da15c77e9e13b0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    @classmethod"},{"line_number":80,"context_line":"    def get_template(cls, service_type):"},{"line_number":81,"context_line":"        \"\"\"fetch templates from the base directory\"\"\""},{"line_number":82,"context_line":"        heat_template_file_path \u003d (CONF.heat_template_basedir +"},{"line_number":83,"context_line":"                                   \"%(service_type)s.heat.template\" %"},{"line_number":84,"context_line":"                                   {\u0027service_type\u0027: service_type})"},{"line_number":85,"context_line":"        output \u003d cls.read_template(heat_template_file_path)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fy2w%3D","line":82,"in_reply_to":"AAAATn%2F%2FzsU%3D","updated":"2013-10-28 22:57:23.000000000","message":"we dont need to call method render, instead we could you self.temple.module","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"43c9f9f47016afa75a8784c2cccb18e1ae20f028","unresolved":false,"context_lines":[{"line_number":22,"context_line":"ENV \u003d jinja2.Environment(loader\u003djinja2.ChoiceLoader(["},{"line_number":23,"context_line":"    jinja2.FileSystemLoader(\"/etc/trove/templates\"),"},{"line_number":24,"context_line":"    jinja2.PackageLoader(\"trove\", \"templates\"),"},{"line_number":25,"context_line":"    jinja2.FileSystemLoader(CONF.heat_template_basedir),"},{"line_number":26,"context_line":"]))"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fr%2Bc%3D","line":25,"updated":"2013-10-30 13:17:20.000000000","message":"Why do you use 2 FileSystemLoaders? I\u0027d rather for having only one (the latter) and to set \"/etc/trove/templates\" as default value for opt in CONF","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"fd999431e9772124c691dd6b783dc35cd7ba74bd","unresolved":false,"context_lines":[{"line_number":22,"context_line":"ENV \u003d jinja2.Environment(loader\u003djinja2.ChoiceLoader(["},{"line_number":23,"context_line":"    jinja2.FileSystemLoader(\"/etc/trove/templates\"),"},{"line_number":24,"context_line":"    jinja2.PackageLoader(\"trove\", \"templates\"),"},{"line_number":25,"context_line":"    jinja2.FileSystemLoader(CONF.heat_template_basedir),"},{"line_number":26,"context_line":"]))"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2FrF4%3D","line":25,"updated":"2013-10-30 15:40:26.000000000","message":"move this above the /etc/trove/templates line as it is the most specific location.","commit_id":"2e1f43b806c581aa6158fabb8c5ab0dbf5df8e7b"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"84da02528a8663744191dedb904d036b597e388b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def get_env(datastore_type):"},{"line_number":25,"context_line":"    return jinja2.Environment(loader\u003djinja2.ChoiceLoader(["},{"line_number":26,"context_line":"        jinja2.FileSystemLoader(CONF.template_path + datastore_type),"},{"line_number":27,"context_line":"        jinja2.PackageLoader(\"trove\", \"templates/%s\" % datastore_type),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FjWA%3D","line":24,"updated":"2013-11-01 14:17:01.000000000","message":"This should not be calculated on each template load. Jinja handles looking in folders by default. That is the standard way of using Jinja. Creating a new environment each time to adjust the path is overkill. The original code would work just fine with the addition of the CONF.template_path replacing the hard coded path.","commit_id":"81ff67951a06e3b9e9d0ae53a8510229b2f7e052"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"84da02528a8663744191dedb904d036b597e388b","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        self.flavor_dict \u003d flavor_dict"},{"line_number":47,"context_line":"        template_filename \u003d \"%s.config.template\" % datastore_type"},{"line_number":48,"context_line":"        self.template \u003d get_env(datastore_type).get_template(template_filename)"},{"line_number":49,"context_line":"        self.instance_id \u003d instance_id"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FjXY%3D","line":47,"updated":"2013-11-01 14:17:01.000000000","message":"This could just as easily be \u0027%s/config.template\u0027 % datastore_type. That would remove the need for the get_env function and just turn it back into a global ENV.","commit_id":"81ff67951a06e3b9e9d0ae53a8510229b2f7e052"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"84da02528a8663744191dedb904d036b597e388b","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"def load_heat_template(datastore_type):"},{"line_number":72,"context_line":"    template_filename \u003d \"%s.heat.template\" % datastore_type"},{"line_number":73,"context_line":"    env \u003d get_env(datastore_type)"},{"line_number":74,"context_line":"    try:"},{"line_number":75,"context_line":"        template_obj \u003d env.get_template(template_filename)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FjXM%3D","line":72,"updated":"2013-11-01 14:17:01.000000000","message":"Same here \u0027%s/heat.template\u0027 % datastore_type","commit_id":"81ff67951a06e3b9e9d0ae53a8510229b2f7e052"}],"trove/taskmanager/models.py":[{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"9084597e43de70723b6ff8fbb4619197b63a74d0","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        # https://bugs.launchpad.net/heat/+bug/1239972"},{"line_number":340,"context_line":"        # this causes the instance name size to overflow the limit of 63 chars."},{"line_number":341,"context_line":"        stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":342,"context_line":"            \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        stack \u003d client.stacks.create(stack_name\u003dstack_name,"},{"line_number":345,"context_line":"                                     template\u003dheat_template,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F9zs%3D","line":342,"updated":"2013-10-24 14:29:45.000000000","message":"Why not to use self.id to keep stack and trove instance dependency?","commit_id":"476cbc48d475b71450c57801023927a4061c7348"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"79bb469e7e4e31651009dbf084bcf2961b58afba","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        # https://bugs.launchpad.net/heat/+bug/1239972"},{"line_number":340,"context_line":"        # this causes the instance name size to overflow the limit of 63 chars."},{"line_number":341,"context_line":"        stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":342,"context_line":"            \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        stack \u003d client.stacks.create(stack_name\u003dstack_name,"},{"line_number":345,"context_line":"                                     template\u003dheat_template,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F9xQ%3D","line":342,"in_reply_to":"AAAATn%2F%2F9zs%3D","updated":"2013-10-24 14:35:48.000000000","message":"until trove would keep tracking stack name/id it is not necassery, for not trove manipulates via instance id","commit_id":"476cbc48d475b71450c57801023927a4061c7348"},{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"9084597e43de70723b6ff8fbb4619197b63a74d0","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            if use_heat:"},{"line_number":571,"context_line":"                # Delete the server via heat"},{"line_number":572,"context_line":"                heatclient \u003d create_heat_client(self.context)"},{"line_number":573,"context_line":"                stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":574,"context_line":"                    \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":575,"context_line":"                heatclient.stacks.delete(stack_name)"},{"line_number":576,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F9y0%3D","line":573,"updated":"2013-10-24 14:29:45.000000000","message":"why not to store stack_name in DB explicitly?","commit_id":"476cbc48d475b71450c57801023927a4061c7348"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"79bb469e7e4e31651009dbf084bcf2961b58afba","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            if use_heat:"},{"line_number":571,"context_line":"                # Delete the server via heat"},{"line_number":572,"context_line":"                heatclient \u003d create_heat_client(self.context)"},{"line_number":573,"context_line":"                stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":574,"context_line":"                    \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":575,"context_line":"                heatclient.stacks.delete(stack_name)"},{"line_number":576,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F9w8%3D","line":573,"in_reply_to":"AAAATn%2F%2F9y0%3D","updated":"2013-10-24 14:35:48.000000000","message":"Trove keep tracking instance id, this is what it needs for now.","commit_id":"476cbc48d475b71450c57801023927a4061c7348"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        novaclient \u003d create_nova_client(self.context)"},{"line_number":325,"context_line":"        cinderclient \u003d create_cinder_client(self.context)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        heat_template \u003d (template.HeatTemplate."},{"line_number":328,"context_line":"                         get_template(service_type))"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        # service type parameter is now implicit to templates"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fzqw%3D","line":327,"updated":"2013-10-28 18:29:48.000000000","message":"heat_template \u003d template.HeatTemplate(sevice_type).render()","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9cdd8710b83c952d5c7a5b098baf94d934465562","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        novaclient \u003d create_nova_client(self.context)"},{"line_number":325,"context_line":"        cinderclient \u003d create_cinder_client(self.context)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        heat_template \u003d (template.HeatTemplate."},{"line_number":328,"context_line":"                         get_template(service_type))"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        # service type parameter is now implicit to templates"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzPo%3D","line":327,"in_reply_to":"AAAATn%2F%2Fzqw%3D","updated":"2013-10-28 20:53:23.000000000","message":"We are not using jinja for heat templates.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4c0935051cf9e2f681b03fbe5ac0ca7e7dc5a74f","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        # service type parameter is now implicit to templates"},{"line_number":331,"context_line":"        # for a particular service type."},{"line_number":332,"context_line":"        # TODO(SnowDust): should the keypair be configurable?"},{"line_number":333,"context_line":"        parameters \u003d {\"KeyName\": \"heatkey\","},{"line_number":334,"context_line":"                      \"Flavor\": flavor[\"name\"],"},{"line_number":335,"context_line":"                      \"VolumeSize\": volume_size,"},{"line_number":336,"context_line":"                      \"InstanceId\": self.id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F65c%3D","line":333,"updated":"2013-10-25 07:56:35.000000000","message":"i suppose we should remove keyname, because we are not allowing to use ssh. Same thing in template.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"a0a8aab0ef38e40320d11d37f454a88d0d673a0c","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        # https://bugs.launchpad.net/heat/+bug/1239972"},{"line_number":340,"context_line":"        # this causes the instance name size to overflow the limit of 63 chars."},{"line_number":341,"context_line":"        stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":342,"context_line":"            \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        stack \u003d client.stacks.create(stack_name\u003dstack_name,"},{"line_number":345,"context_line":"                                     template\u003dheat_template,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F6eI%3D","line":342,"updated":"2013-10-25 10:33:58.000000000","message":"digest gives us no information at all, let us used the id","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":9111,"name":"Rhode Duster","email":"dusteratwork@gmail.com","username":"duster"},"change_message_id":"aaf0d4de3f1b67e9443470d32350c3e138984281","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        # this causes the instance name size to overflow the limit of 63 chars."},{"line_number":341,"context_line":"        stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":342,"context_line":"            \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        stack \u003d client.stacks.create(stack_name\u003dstack_name,"},{"line_number":345,"context_line":"                                     template\u003dheat_template,"},{"line_number":346,"context_line":"                                     parameters\u003dparameters)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzyU%3D","line":343,"updated":"2013-10-28 17:56:21.000000000","message":"the digest is not recorded anywhere in the trove database.\nwonder if we can store this digest somewhere to keep a record alike we are storing the instance IDs, or it would be better to be back to ID.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"047e95086a197182fee34b7c11da15c77e9e13b0","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        # this causes the instance name size to overflow the limit of 63 chars."},{"line_number":341,"context_line":"        stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":342,"context_line":"            \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        stack \u003d client.stacks.create(stack_name\u003dstack_name,"},{"line_number":345,"context_line":"                                     template\u003dheat_template,"},{"line_number":346,"context_line":"                                     parameters\u003dparameters)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2Fy2g%3D","line":343,"in_reply_to":"AAAATn%2F%2FzyU%3D","updated":"2013-10-28 22:57:23.000000000","message":"For now all heat-integrations stuff is under design, so, for now there is no chanse to store stack name, stack, id, resources id.","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8188,"name":"Ilya Sviridov","email":"sviridov.ilya@gmail.com","username":"isviridov"},"change_message_id":"a0a8aab0ef38e40320d11d37f454a88d0d673a0c","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                # Delete the server via heat"},{"line_number":572,"context_line":"                heatclient \u003d create_heat_client(self.context)"},{"line_number":573,"context_line":"                stack_name \u003d \u0027trove-%(instance_id)s\u0027 % {"},{"line_number":574,"context_line":"                    \u0027instance_id\u0027: hashlib.md5(self.id).hexdigest()[:10]}"},{"line_number":575,"context_line":"                heatclient.stacks.delete(stack_name)"},{"line_number":576,"context_line":"            else:"},{"line_number":577,"context_line":"                self.server.delete()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F6eA%3D","line":574,"updated":"2013-10-25 10:33:58.000000000","message":"the same as comment above","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"43c9f9f47016afa75a8784c2cccb18e1ae20f028","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        cinderclient \u003d create_cinder_client(self.context)"},{"line_number":327,"context_line":"        try:"},{"line_number":328,"context_line":"            heat_template \u003d template.get_heat_template(service_type)"},{"line_number":329,"context_line":"        except TemplateNotFound:"},{"line_number":330,"context_line":"            raise TroveError("},{"line_number":331,"context_line":"                message\u003d\"Heat template not found for %(service_type)s\" %"},{"line_number":332,"context_line":"                {\u0027service_type\u0027: service_type})"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fr6I%3D","line":329,"updated":"2013-10-30 13:17:20.000000000","message":"Do you really need to know that this is exactly TemplateNotFound? Maybe it worth just catch whatever it raises? Anyway u re-raise TroveError. And u will get rid of the dependency.","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"62f055143b4d54d6407f5ff896662d3ffa9428d4","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        security_groups \u003d None"},{"line_number":148,"context_line":"        if CONF.trove_security_groups_support:"},{"line_number":149,"context_line":"            try:"},{"line_number":150,"context_line":"                security_groups \u003d self._create_secgroup()"},{"line_number":151,"context_line":"            except Exception as e:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Error creating security group for instance: %s\") %"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2B82Q%3D","line":149,"updated":"2013-11-18 07:53:54.000000000","message":"since this is being done in the template now - we should only execute this when not using heat.  Otherwise, we get 2 security groups when using Heat.","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"72b41759a285c413893c8d6e68bcb47d1376f75a","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        security_groups \u003d None"},{"line_number":148,"context_line":"        if CONF.trove_security_groups_support:"},{"line_number":149,"context_line":"            try:"},{"line_number":150,"context_line":"                security_groups \u003d self._create_secgroup()"},{"line_number":151,"context_line":"            except Exception as e:"},{"line_number":152,"context_line":"                msg \u003d (_(\"Error creating security group for instance: %s\") %"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2B8vM%3D","line":149,"in_reply_to":"AAAATn%2F%2B82Q%3D","updated":"2013-11-18 08:25:45.000000000","message":"Yes, but fix will be presented here. https://review.openstack.org/#/c/50944/","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"}],"trove/templates/mysql/heat.template":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"2619e8edab20c009564b1b1c1d32f87b70d09a3e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"      InstanceId: {Ref: BaseInstance}"},{"line_number":55,"context_line":"      VolumeId: {Ref: DataVolume}"},{"line_number":56,"context_line":"      Device: /dev/vdb"},{"line_number":57,"context_line":"  MySqlDbaasSG:"},{"line_number":58,"context_line":"    Type: AWS::EC2::SecurityGroup"},{"line_number":59,"context_line":"    Properties:"},{"line_number":60,"context_line":"      GroupDescription: Default Security group for MySQL"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2FAl0%3D","line":57,"updated":"2013-11-15 19:02:23.000000000","message":"We should only add this if we have CONF.trove_security_groups_support set to True.","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9539948076641ff3d06649f62665dd3bc1fbda64","unresolved":false,"context_lines":[{"line_number":54,"context_line":"      InstanceId: {Ref: BaseInstance}"},{"line_number":55,"context_line":"      VolumeId: {Ref: DataVolume}"},{"line_number":56,"context_line":"      Device: /dev/vdb"},{"line_number":57,"context_line":"  MySqlDbaasSG:"},{"line_number":58,"context_line":"    Type: AWS::EC2::SecurityGroup"},{"line_number":59,"context_line":"    Properties:"},{"line_number":60,"context_line":"      GroupDescription: Default Security group for MySQL"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2B%2FPs%3D","line":57,"in_reply_to":"AAAATn%2F%2FAl0%3D","updated":"2013-11-16 09:25:06.000000000","message":"Security groups would be mandatory. And all responsibility would lay on trove admininstrator.","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"623087383585edbba6cd721a7a66d9df4d855594","unresolved":false,"context_lines":[{"line_number":62,"context_line":"      - IpProtocol: \"tcp\""},{"line_number":63,"context_line":"        FromPort: \"3306\""},{"line_number":64,"context_line":"        ToPort: \"3306\""},{"line_number":65,"context_line":"        CidrIp: \"0.0.0.0/0\""},{"line_number":66,"context_line":"  DatabaseIPAddress:"},{"line_number":67,"context_line":"    Type: AWS::EC2::EIP"},{"line_number":68,"context_line":"  DatabaseIPAssoc :"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2FAss%3D","line":65,"updated":"2013-11-15 18:23:49.000000000","message":"Arent these config options in trove currently? Should we not use them?\n\nSee commit b214e9ec68f7737458137e20d7fc7b3f44efbb29","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"9539948076641ff3d06649f62665dd3bc1fbda64","unresolved":false,"context_lines":[{"line_number":62,"context_line":"      - IpProtocol: \"tcp\""},{"line_number":63,"context_line":"        FromPort: \"3306\""},{"line_number":64,"context_line":"        ToPort: \"3306\""},{"line_number":65,"context_line":"        CidrIp: \"0.0.0.0/0\""},{"line_number":66,"context_line":"  DatabaseIPAddress:"},{"line_number":67,"context_line":"    Type: AWS::EC2::EIP"},{"line_number":68,"context_line":"  DatabaseIPAssoc :"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2B%2FPo%3D","line":65,"in_reply_to":"AAAATn%2F%2FAk0%3D","updated":"2013-11-16 09:25:06.000000000","message":"we still need conf values for workflow with nova, for heat - it doesn\u0027t matter.","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"ebc61228fe8c29721e2991a2f62e75bd6dda82f9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"      - IpProtocol: \"tcp\""},{"line_number":63,"context_line":"        FromPort: \"3306\""},{"line_number":64,"context_line":"        ToPort: \"3306\""},{"line_number":65,"context_line":"        CidrIp: \"0.0.0.0/0\""},{"line_number":66,"context_line":"  DatabaseIPAddress:"},{"line_number":67,"context_line":"    Type: AWS::EC2::EIP"},{"line_number":68,"context_line":"  DatabaseIPAssoc :"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2FAk0%3D","line":65,"in_reply_to":"AAAATn%2F%2FAmk%3D","updated":"2013-11-15 19:05:34.000000000","message":"Disregard this. i understand now that each template will have its own values.","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"07516a13a98050c3b263650a26bea0bfaf17a850","unresolved":false,"context_lines":[{"line_number":62,"context_line":"      - IpProtocol: \"tcp\""},{"line_number":63,"context_line":"        FromPort: \"3306\""},{"line_number":64,"context_line":"        ToPort: \"3306\""},{"line_number":65,"context_line":"        CidrIp: \"0.0.0.0/0\""},{"line_number":66,"context_line":"  DatabaseIPAddress:"},{"line_number":67,"context_line":"    Type: AWS::EC2::EIP"},{"line_number":68,"context_line":"  DatabaseIPAssoc :"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2FAmk%3D","line":65,"in_reply_to":"AAAATn%2F%2FArQ%3D","updated":"2013-11-15 18:59:25.000000000","message":"If we allow the parameters in the config file, and we dont honor them, then we will confuse people. We need to either remove them from the config file in your previous review denis, or use them here, right?","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"950f2239c3d32488474f22274f485a6a3df77c79","unresolved":false,"context_lines":[{"line_number":62,"context_line":"      - IpProtocol: \"tcp\""},{"line_number":63,"context_line":"        FromPort: \"3306\""},{"line_number":64,"context_line":"        ToPort: \"3306\""},{"line_number":65,"context_line":"        CidrIp: \"0.0.0.0/0\""},{"line_number":66,"context_line":"  DatabaseIPAddress:"},{"line_number":67,"context_line":"    Type: AWS::EC2::EIP"},{"line_number":68,"context_line":"  DatabaseIPAssoc :"}],"source_content_type":"application/octet-stream","patch_set":16,"id":"AAAATn%2F%2FArQ%3D","line":65,"in_reply_to":"AAAATn%2F%2FAss%3D","updated":"2013-11-15 18:32:13.000000000","message":"we could pass cidr/port etc. through parameters,\nbut when we are talking about fixed templates it would be better to hardcode values here or let trove manager decide what would it be","commit_id":"cdc5b57f2a94fffa15301c5e90178dc152de00cc"}],"trove/tests/unittests/common/test_template.py":[{"author":{"_account_id":8311,"name":"SnowDust","email":"nilakhya.chatterjee@globallogic.com","username":"nilc"},"change_message_id":"71a332eeefeb3bd604932d2a6c1654c329ddb631","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # 3.test validity of the loaded template"},{"line_number":79,"context_line":"        # this test comes from Denis M\u0027s valued code suggestions"},{"line_number":80,"context_line":"        #temp \u003d template.HeatTemplate(CONF.get(\u0027service_type\u0027))"},{"line_number":81,"context_line":"        #heat_template \u003d temp.get_template()"},{"line_number":82,"context_line":"        #yamled \u003d None"},{"line_number":83,"context_line":"        #yamled \u003d load(heat_template)"},{"line_number":84,"context_line":"        #self.assertNotEqual(None, yamled)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F%2Fl8%3D","line":81,"updated":"2013-10-24 05:53:56.000000000","message":"Denis do u suggest to mock this as well ?  so that we have a string in heat_template\n\nneed your inputs,\n\nalso, Redhat distributions dont have yaml by default (atleast in my test machine)\n\nshould i also make supplementary changes to the package ?\n\nPython 2.6.8 (unknown, Oct  6 2013, 16:42:03) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import yaml\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nImportError: No module named yaml","commit_id":"691bdaececdf4d81ca0e3c16b78dd4944c0fb1de"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"b0de30adc7dc7277e17b784fb06d380921fdb749","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        # 3.test validity of the loaded template"},{"line_number":79,"context_line":"        # this test comes from Denis M\u0027s valued code suggestions"},{"line_number":80,"context_line":"        #temp \u003d template.HeatTemplate(CONF.get(\u0027service_type\u0027))"},{"line_number":81,"context_line":"        #heat_template \u003d temp.get_template()"},{"line_number":82,"context_line":"        #yamled \u003d None"},{"line_number":83,"context_line":"        #yamled \u003d load(heat_template)"},{"line_number":84,"context_line":"        #self.assertNotEqual(None, yamled)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F%2FdQ%3D","line":81,"in_reply_to":"AAAATn%2F%2F%2Fl8%3D","updated":"2013-10-24 06:07:45.000000000","message":"hm, yaml is native python package, you should find out why it fails to you, because i had saw any troubles with that at any testing machine.","commit_id":"691bdaececdf4d81ca0e3c16b78dd4944c0fb1de"},{"author":{"_account_id":9111,"name":"Rhode Duster","email":"dusteratwork@gmail.com","username":"duster"},"change_message_id":"bb2ae689f3e7eb692314fa880961bf272181b5d7","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        #yamled \u003d load(heat_template)"},{"line_number":84,"context_line":"        #self.assertNotEqual(None, yamled)"},{"line_number":85,"context_line":"        #self.assertNotEqual(yamled.get(\"Parameters\"), None)"},{"line_number":86,"context_line":"        #self.assertNotEqual(yamled.get(\"Resources\"), None)"},{"line_number":87,"context_line":"        #self.assertNotEqual(yamled.get(\"Resources\").get(\"BaseInstance\"), None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F%2FZM%3D","line":86,"updated":"2013-10-24 06:25:41.000000000","message":"All the main test functionality is commented and I wonder what we are really testing here!","commit_id":"691bdaececdf4d81ca0e3c16b78dd4944c0fb1de"},{"author":{"_account_id":8311,"name":"SnowDust","email":"nilakhya.chatterjee@globallogic.com","username":"nilc"},"change_message_id":"d3be21557fccb265c703e026b4b3b615f84e512e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        #yamled \u003d load(heat_template)"},{"line_number":84,"context_line":"        #self.assertNotEqual(None, yamled)"},{"line_number":85,"context_line":"        #self.assertNotEqual(yamled.get(\"Parameters\"), None)"},{"line_number":86,"context_line":"        #self.assertNotEqual(yamled.get(\"Resources\"), None)"},{"line_number":87,"context_line":"        #self.assertNotEqual(yamled.get(\"Resources\").get(\"BaseInstance\"), None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F%2FY4%3D","line":86,"in_reply_to":"AAAATn%2F%2F%2FZM%3D","updated":"2013-10-24 06:28:28.000000000","message":"please find my inline comments first. \n\ntrying to find the yaml package availability across distributions, will enable this soon.","commit_id":"691bdaececdf4d81ca0e3c16b78dd4944c0fb1de"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"00129e78c0ed05cb36bb680d4709bbb2032c0715","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_heat_template_loading_exception(self):"},{"line_number":74,"context_line":"        \"\"\" tests the loading of heat templates from base dir\"\"\""},{"line_number":75,"context_line":"        # 1. test for Exception when the template is not found"},{"line_number":76,"context_line":"        self.assertRaises(HeatTemplateNotFound,"},{"line_number":77,"context_line":"                          template.HeatTemplate.get_template,"},{"line_number":78,"context_line":"                          CONF.service_type)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2FzqU%3D","line":76,"updated":"2013-10-28 18:29:48.000000000","message":"this will change to jinja2.exceptions.TemplateNotFound","commit_id":"15442c8dc601bdb684e3362730760b6c2ed5e172"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"43c9f9f47016afa75a8784c2cccb18e1ae20f028","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from trove.common import template"},{"line_number":21,"context_line":"from trove.tests.unittests.util import util"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d mock()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TemplateTest(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fr5I%3D","line":23,"updated":"2013-10-30 13:17:20.000000000","message":"Why mocking your own CONF? Just use values u want.","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"43c9f9f47016afa75a8784c2cccb18e1ae20f028","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        self.template \u003d self.env.get_template(\"mysql.config.template\")"},{"line_number":32,"context_line":"        self.flavor_dict \u003d {\u0027ram\u0027: 1024}"},{"line_number":33,"context_line":"        self.server_id \u003d \"180b5ed1-3e57-4459-b7a3-2aeee4ac012a\""},{"line_number":34,"context_line":"        self.orig_conf \u003d template.CONF"},{"line_number":35,"context_line":"        when(CONF).get(\u0027service_type\u0027).thenReturn(\u0027mysql\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fr4g%3D","line":34,"updated":"2013-10-30 13:17:20.000000000","message":"You might want to mock template.CONF here","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"43c9f9f47016afa75a8784c2cccb18e1ae20f028","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # stub the ENV with /tmp for tests"},{"line_number":84,"context_line":"        loader \u003d jinja2.FileSystemLoader(\u0027/tmp\u0027)"},{"line_number":85,"context_line":"        template.ENV \u003d jinja2.Environment(loader)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        with NamedTemporaryFile(mode\u003d\"w\","},{"line_number":88,"context_line":"                                suffix\u003d\".heat.template\","}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fr3k%3D","line":85,"updated":"2013-10-30 13:17:20.000000000","message":"I guess it worth saving original template.ENV and restoring it after tests","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"43c9f9f47016afa75a8784c2cccb18e1ae20f028","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        when(CONF).get(\u0027service_type\u0027).thenReturn(test_service_name)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.assertNotEqual(None,"},{"line_number":101,"context_line":"                            template.get_heat_template(CONF.service_type))"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2Fr2w%3D","line":101,"updated":"2013-10-30 13:17:20.000000000","message":"template.get_heat_template(test_service_name) looks much simpler for me. And no need for mocked CONF","commit_id":"4f171196c6ac4b3989010dbafd9d41837d12a425"}]}
