)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"095f9d21eb52bdf81b26d58a79a8c6f0d01a2d4e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit improves configuration validation."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"* URIOpt to validate URL strings."},{"line_number":12,"context_line":"* HostNameOpt to validate hostnames"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I4a6edf1faafbd242ca652df9a1eacd941288774a"},{"line_number":15,"context_line":"Closes-Bug: #1599034"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1aa78d24_382277b9","line":12,"range":{"start_line":12,"start_character":2,"end_line":12,"end_character":13},"updated":"2016-07-13 14:47:49.000000000","message":"HostnameOpt","commit_id":"134c660541998faaca041712cf22c2fbf6a71eb8"}],"etc/trove/trove.conf.sample":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"5a180ad12ec777766d39568e4c194a8fdbec0789","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"# Indicate which header field names may be used during the actual request."},{"line_number":311,"context_line":"# (list value)"},{"line_number":312,"context_line":"#allow_headers \u003d X-Auth-Token, X-Identity-Status, X-Roles, X-Service-Catalog, X-User-Id, X-Tenant-Id, X-OpenStack-Request-ID"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1aa78d24_dbf156cf","line":312,"updated":"2016-07-09 18:15:56.000000000","message":"i can\u0027t tell what changed.","commit_id":"134c660541998faaca041712cf22c2fbf6a71eb8"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"095f9d21eb52bdf81b26d58a79a8c6f0d01a2d4e","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"# Indicate which header field names may be used during the actual request."},{"line_number":311,"context_line":"# (list value)"},{"line_number":312,"context_line":"#allow_headers \u003d X-Auth-Token, X-Identity-Status, X-Roles, X-Service-Catalog, X-User-Id, X-Tenant-Id, X-OpenStack-Request-ID"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"1aa78d24_af7f43a9","line":312,"in_reply_to":"1aa78d24_dbf156cf","updated":"2016-07-13 14:47:49.000000000","message":"I ran the files through a diff tool, no differences between patchse. I suggest to remove this file from the commit.","commit_id":"134c660541998faaca041712cf22c2fbf6a71eb8"}],"requirements.txt":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"095f9d21eb52bdf81b26d58a79a8c6f0d01a2d4e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1aa78d24_3d79c92f","line":47,"updated":"2016-07-13 14:47:49.000000000","message":"Something I noticed is that we don\u0027t have debtcollector\u003e\u003d1.2.0 but this was required for oslo.config 3.10 as well so it must be covered somewhere else.","commit_id":"134c660541998faaca041712cf22c2fbf6a71eb8"}],"trove/common/cfg.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"13b74d142b3dddd709d7c900141147ca1bdbf0b7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"               help\u003d\u0027Service endpoint type to use when searching catalog.\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027trove_auth_url\u0027, default\u003d\u0027http://0.0.0.0:5000/v2.0\u0027,"},{"line_number":84,"context_line":"               help\u003d\u0027Trove authentication URL.\u0027),"},{"line_number":85,"context_line":"    cfg.IPOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027,"},{"line_number":86,"context_line":"              help\u003d\u0027Host to listen for RPC messages.\u0027),"},{"line_number":87,"context_line":"    cfg.IntOpt(\u0027report_interval\u0027, default\u003d30,"},{"line_number":88,"context_line":"               help\u003d\u0027The interval (in seconds) which periodic tasks are run.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_36fb077b","side":"PARENT","line":85,"updated":"2016-07-06 10:29:54.000000000","message":"why not clean up the file and go through and make more of these kinds of changes?\n\nThis could be HostNameOpt?","commit_id":"f15074bdf2ebe85a49797ad8f0c6bb036131a117"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"648fcf490bbf48588e6c62be9416490d36e3b6c1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"               help\u003d\u0027Service endpoint type to use when searching catalog.\u0027),"},{"line_number":83,"context_line":"    cfg.StrOpt(\u0027trove_auth_url\u0027, default\u003d\u0027http://0.0.0.0:5000/v2.0\u0027,"},{"line_number":84,"context_line":"               help\u003d\u0027Trove authentication URL.\u0027),"},{"line_number":85,"context_line":"    cfg.IPOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027,"},{"line_number":86,"context_line":"              help\u003d\u0027Host to listen for RPC messages.\u0027),"},{"line_number":87,"context_line":"    cfg.IntOpt(\u0027report_interval\u0027, default\u003d30,"},{"line_number":88,"context_line":"               help\u003d\u0027The interval (in seconds) which periodic tasks are run.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_50a5c544","side":"PARENT","line":85,"in_reply_to":"1aa78d24_36fb077b","updated":"2016-07-07 06:01:13.000000000","message":"Great idea.","commit_id":"f15074bdf2ebe85a49797ad8f0c6bb036131a117"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"13b74d142b3dddd709d7c900141147ca1bdbf0b7","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":97,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027,"},{"line_number":98,"context_line":"               help\u003d\u0027Factory for adding DNS entries.\u0027),"},{"line_number":99,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\","},{"line_number":100,"context_line":"               help\u003d\u0027Hostname used for adding DNS entries.\u0027),"},{"line_number":101,"context_line":"    cfg.StrOpt(\u0027dns_account_id\u0027, default\u003d\"\","},{"line_number":102,"context_line":"               help\u003d\u0027Tenant ID for DNSaaS.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_16f88b7a","side":"PARENT","line":99,"updated":"2016-07-06 10:29:54.000000000","message":"why not clean up the file and go through and make more of these kinds of changes?\n\nThis could be HostNameOpt?","commit_id":"f15074bdf2ebe85a49797ad8f0c6bb036131a117"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"648fcf490bbf48588e6c62be9416490d36e3b6c1","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":97,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027,"},{"line_number":98,"context_line":"               help\u003d\u0027Factory for adding DNS entries.\u0027),"},{"line_number":99,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\","},{"line_number":100,"context_line":"               help\u003d\u0027Hostname used for adding DNS entries.\u0027),"},{"line_number":101,"context_line":"    cfg.StrOpt(\u0027dns_account_id\u0027, default\u003d\"\","},{"line_number":102,"context_line":"               help\u003d\u0027Tenant ID for DNSaaS.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_b034e9fb","side":"PARENT","line":99,"in_reply_to":"1aa78d24_16f88b7a","updated":"2016-07-07 06:01:13.000000000","message":"Done","commit_id":"f15074bdf2ebe85a49797ad8f0c6bb036131a117"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"13b74d142b3dddd709d7c900141147ca1bdbf0b7","unresolved":false,"context_lines":[{"line_number":347,"context_line":"               help\u003d\u0027List IP addresses that match this regular expression.\u0027),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027black_list_regex\u0027, default\u003dNone,"},{"line_number":349,"context_line":"               help\u003d\u0027Exclude IP addresses that match this regular \u0027"},{"line_number":350,"context_line":"                    \u0027expression.\u0027),"},{"line_number":351,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":352,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":353,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_165ecb43","line":350,"updated":"2016-07-06 10:29:54.000000000","message":"or us the ConfigFileOpt for this?","commit_id":"78bb45287fb4773d849909b0008bba57cb48327a"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"648fcf490bbf48588e6c62be9416490d36e3b6c1","unresolved":false,"context_lines":[{"line_number":347,"context_line":"               help\u003d\u0027List IP addresses that match this regular expression.\u0027),"},{"line_number":348,"context_line":"    cfg.StrOpt(\u0027black_list_regex\u0027, default\u003dNone,"},{"line_number":349,"context_line":"               help\u003d\u0027Exclude IP addresses that match this regular \u0027"},{"line_number":350,"context_line":"                    \u0027expression.\u0027),"},{"line_number":351,"context_line":"    cfg.StrOpt(\u0027cloudinit_location\u0027, default\u003d\u0027/etc/trove/cloudinit\u0027,"},{"line_number":352,"context_line":"               help\u003d\u0027Path to folder with cloudinit scripts.\u0027),"},{"line_number":353,"context_line":"    cfg.StrOpt(\u0027injected_config_location\u0027, default\u003d\u0027/etc/trove/conf.d\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_909bad17","line":350,"in_reply_to":"1aa78d24_165ecb43","updated":"2016-07-07 06:01:13.000000000","message":"_ConfigFileOpt is internally used option to parse command line arguments.","commit_id":"78bb45287fb4773d849909b0008bba57cb48327a"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"5d7d31cf2e832b69adf9d3decafbb5518a553c51","unresolved":false,"context_lines":[{"line_number":82,"context_line":"               help\u003d\u0027Service endpoint type to use when searching catalog.\u0027),"},{"line_number":83,"context_line":"    cfg.URIOpt(\u0027trove_auth_url\u0027, default\u003d\u0027http://0.0.0.0:5000/v2.0\u0027,"},{"line_number":84,"context_line":"               help\u003d\u0027Trove authentication URL.\u0027),"},{"line_number":85,"context_line":"    cfg.HostNameOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027,"},{"line_number":86,"context_line":"                    help\u003d\u0027Host to listen for RPC messages.\u0027),"},{"line_number":87,"context_line":"    cfg.IntOpt(\u0027report_interval\u0027, default\u003d30,"},{"line_number":88,"context_line":"               help\u003d\u0027The interval (in seconds) which periodic tasks are run.\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2fb3530b","line":85,"updated":"2016-07-07 16:30:14.000000000","message":"Is this actually supposed to be a hostname or IP? Host is a pretty broad term. It already had IP type before... :/","commit_id":"3790cf8df505a35fce9e618c13b7158654e54d3a"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"93fb53539d861055bebe8fdf03f977d7628775a4","unresolved":false,"context_lines":[{"line_number":82,"context_line":"               help\u003d\u0027Service endpoint type to use when searching catalog.\u0027),"},{"line_number":83,"context_line":"    cfg.URIOpt(\u0027trove_auth_url\u0027, default\u003d\u0027http://0.0.0.0:5000/v2.0\u0027,"},{"line_number":84,"context_line":"               help\u003d\u0027Trove authentication URL.\u0027),"},{"line_number":85,"context_line":"    cfg.HostNameOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027,"},{"line_number":86,"context_line":"                    help\u003d\u0027Host to listen for RPC messages.\u0027),"},{"line_number":87,"context_line":"    cfg.IntOpt(\u0027report_interval\u0027, default\u003d30,"},{"line_number":88,"context_line":"               help\u003d\u0027The interval (in seconds) which periodic tasks are run.\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_40401c36","line":85,"in_reply_to":"1aa78d24_2fb3530b","updated":"2016-07-08 00:00:14.000000000","message":"Umm...\nIt should be IPOpt.","commit_id":"3790cf8df505a35fce9e618c13b7158654e54d3a"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"095f9d21eb52bdf81b26d58a79a8c6f0d01a2d4e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":97,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027,"},{"line_number":98,"context_line":"               help\u003d\u0027Factory for adding DNS entries.\u0027),"},{"line_number":99,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\","},{"line_number":100,"context_line":"               help\u003d\u0027Hostname used for adding DNS entries.\u0027),"},{"line_number":101,"context_line":"    cfg.StrOpt(\u0027dns_account_id\u0027, default\u003d\"\","},{"line_number":102,"context_line":"               help\u003d\u0027Tenant ID for DNSaaS.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_18421b68","side":"PARENT","line":99,"range":{"start_line":99,"start_character":31,"end_line":99,"end_character":41},"updated":"2016-07-13 14:47:49.000000000","message":"Removing this because an empty string is not a valid hostname, why not use default\u003d\"localhost\"?","commit_id":"ff4904574486675cf87074bfeee06ef682554f04"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"bc8655348d53d751a7b8a9441121b60aaab0698e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    cfg.StrOpt(\u0027dns_instance_entry_factory\u0027,"},{"line_number":97,"context_line":"               default\u003d\u0027trove.dns.driver.DnsInstanceEntryFactory\u0027,"},{"line_number":98,"context_line":"               help\u003d\u0027Factory for adding DNS entries.\u0027),"},{"line_number":99,"context_line":"    cfg.StrOpt(\u0027dns_hostname\u0027, default\u003d\"\","},{"line_number":100,"context_line":"               help\u003d\u0027Hostname used for adding DNS entries.\u0027),"},{"line_number":101,"context_line":"    cfg.StrOpt(\u0027dns_account_id\u0027, default\u003d\"\","},{"line_number":102,"context_line":"               help\u003d\u0027Tenant ID for DNSaaS.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"fad55976_fe2ebef8","side":"PARENT","line":99,"range":{"start_line":99,"start_character":31,"end_line":99,"end_character":41},"in_reply_to":"1aa78d24_18421b68","updated":"2016-07-16 07:27:53.000000000","message":"Definitely.","commit_id":"ff4904574486675cf87074bfeee06ef682554f04"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"78145ab9d359403988f727b14b2b22274bf5127c","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"database_opts \u003d ["},{"line_number":420,"context_line":"    cfg.StrOpt(\u0027connection\u0027,"},{"line_number":421,"context_line":"               default\u003d\u0027sqlite:///trove_test.sqlite\u0027,"},{"line_number":422,"context_line":"               help\u003d\u0027SQL Connection.\u0027,"},{"line_number":423,"context_line":"               secret\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_dd8faaca","line":420,"updated":"2016-07-08 16:11:21.000000000","message":"Just wondering, why this change?","commit_id":"134c660541998faaca041712cf22c2fbf6a71eb8"},{"author":{"_account_id":12758,"name":"Masaki Matsushita","email":"glass.saga@gmail.com","username":"masaki"},"change_message_id":"d5df130af19c58ef20e0a5f49bc0d1d7186a6e21","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"database_opts \u003d ["},{"line_number":420,"context_line":"    cfg.StrOpt(\u0027connection\u0027,"},{"line_number":421,"context_line":"               default\u003d\u0027sqlite:///trove_test.sqlite\u0027,"},{"line_number":422,"context_line":"               help\u003d\u0027SQL Connection.\u0027,"},{"line_number":423,"context_line":"               secret\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_cc97ebe9","line":420,"in_reply_to":"1aa78d24_dd8faaca","updated":"2016-07-09 01:01:46.000000000","message":"URIOpt fails to parse the text including \"///\".","commit_id":"134c660541998faaca041712cf22c2fbf6a71eb8"}]}
