)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     nilc \u003cnilakhya.chatterjee@globallogic.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-05-31 12:41:28 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Backup/Restore API for Vertica Datastore"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. Refactored config parameters for backup/restore."},{"line_number":10,"context_line":"2. Refactored code in backup agent."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_466ed602","line":7,"updated":"2014-05-31 10:42:19.000000000","message":"Backup/Restore feature, not the API","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"}],"trove/common/cfg.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":183,"context_line":"               help\u003d\"Default strategy to store backups.\"),"},{"line_number":184,"context_line":"    cfg.StrOpt(\u0027storage_namespace\u0027,"},{"line_number":185,"context_line":"               default\u003d\u0027trove.guestagent.strategies.storage.swift\u0027,"},{"line_number":186,"context_line":"               help\u003d\u0027Namespace to load the default storage strategy from.\u0027),"},{"line_number":187,"context_line":"    cfg.StrOpt(\u0027backup_swift_container\u0027, default\u003d\u0027database_backups\u0027),"},{"line_number":188,"context_line":"    cfg.BoolOpt(\u0027backup_use_gzip_compression\u0027, default\u003dTrue,"},{"line_number":189,"context_line":"                help\u003d\u0027Compress backups using gzip.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_372038f7","side":"PARENT","line":186,"range":{"start_line":186,"start_character":34,"end_line":186,"end_character":38},"updated":"2014-05-27 13:51:14.000000000","message":"Why it was ripped out?","commit_id":"8b54fe71bce9ec979fc03c8609ca7a38e773493d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    cfg.StrOpt(\u0027nova_compute_url\u0027, default\u003d\u0027http://localhost:8774/v2\u0027),"},{"line_number":57,"context_line":"    cfg.StrOpt(\u0027cinder_url\u0027, default\u003d\u0027http://localhost:8776/v2\u0027),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027heat_url\u0027, default\u003d\u0027http://localhost:8004/v1\u0027),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027swift_url\u0027, default\u003d\u0027http://localhost:8080/v1/AUTH_\u0027),"},{"line_number":60,"context_line":"    cfg.StrOpt(\u0027trove_auth_url\u0027, default\u003d\u0027http://0.0.0.0:5000/v2.0\u0027),"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027host\u0027, default\u003d\u00270.0.0.0\u0027),"},{"line_number":62,"context_line":"    cfg.IntOpt(\u0027report_interval\u0027, default\u003d10,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_7712c0b5","line":59,"range":{"start_line":59,"start_character":53,"end_line":59,"end_character":54},"updated":"2014-05-27 13:51:14.000000000","message":"Why is it being changed?","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    cfg.StrOpt(\u0027backup_namespace\u0027,"},{"line_number":287,"context_line":"               default\u003d\u0027trove.guestagent.strategies.backup.mysql_impl\u0027,"},{"line_number":288,"context_line":"               help\u003d\u0027Namespace to load backup strategies from.\u0027),"},{"line_number":289,"context_line":"    cfg.StrOpt(\u0027storage_namespace\u0027,"},{"line_number":290,"context_line":"               default\u003d\u0027trove.guestagent.strategies.storage.swift\u0027,"},{"line_number":291,"context_line":"               help\u003d\u0027Namespace to load the default storage strategy from.\u0027),"},{"line_number":292,"context_line":"    cfg.StrOpt(\u0027restore_namespace\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_c6810691","line":289,"updated":"2014-05-31 10:42:19.000000000","message":"No need to refactor and write new storage per datastore. You just need to  fit strategies into initial backup/restore framework","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"}],"trove/guestagent/backup/backupagent.py":[{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    def execute_restore(self, context, backup_info, restore_location):"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        try:"},{"line_number":166,"context_line":"            LOG.debug(_(\"Getting Restore Runner %(type)s\"), backup_info)"},{"line_number":167,"context_line":"            restore_runner \u003d self._get_restore_runner(backup_info[\u0027type\u0027])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"            LOG.info(_(\"Running restore %(id)s\") % backup_info)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d06c45d3","line":166,"updated":"2014-06-24 18:46:11.000000000","message":"Logging standards indicate that LOG.debug should not be internationalized.","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                    checksum\u003dbackup_info[\u0027checksum\u0027],"},{"line_number":176,"context_line":"                                    restore_location\u003drestore_location)"},{"line_number":177,"context_line":"            backup_info[\u0027restore_location\u0027] \u003d restore_location"},{"line_number":178,"context_line":"            LOG.debug(_(\"Restoring instance from backup %(id)s to \""},{"line_number":179,"context_line":"                        \"%(restore_location)s\") % backup_info)"},{"line_number":180,"context_line":"            content_size \u003d runner.restore()"},{"line_number":181,"context_line":"            LOG.info(_(\"Restore from backup %(id)s completed successfully \""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_1066adee","line":178,"updated":"2014-06-24 18:46:11.000000000","message":"Logging standards indicate that LOG.debug should not be internationalized.","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"}],"trove/guestagent/datastore/vertica/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"class VerticaApp(object):"},{"line_number":422,"context_line":"    \"\"\"Prepares DBaaS on a Guest container.\"\"\""},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"    def __init__(self, status):"},{"line_number":425,"context_line":"        \"\"\"By default login with root no password for initial setup.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_664af281","line":422,"updated":"2014-05-31 10:42:19.000000000","message":"All changes in this file should be ported into initial vertica patch","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"}],"trove/guestagent/strategies/backup/vertica_impl.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        cmd \u003d (\"ifconfig eth0 | grep \u0027inet addr:\u0027|\""},{"line_number":48,"context_line":"               \"grep -v \u0027127.0.0.1\u0027 | cut -d: -f2 | awk \u0027{ print $1}\u0027\")"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        out, err \u003d utils.execute(cmd, shell\u003dTrue)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        ip_address \u003d out.strip(\"\\n\")"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_37fcb83e","line":50,"updated":"2014-05-27 13:51:14.000000000","message":"try:except block required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        tarloc \u003d location + \"/backup.tar\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if task \u003d\u003d \u0027backup\u0027:"},{"line_number":61,"context_line":"            utils.execute(\"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":62,"context_line":"                          (\"/opt/vertica/bin/vbr.py --task\u003dbackup\""},{"line_number":63,"context_line":"                          \" --config-file VerticaVBR.ini\"),"},{"line_number":64,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_57f9444c","line":61,"updated":"2014-05-27 13:51:14.000000000","message":"try:except block required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                          \" --config-file VerticaVBR.ini\"),"},{"line_number":64,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":65,"context_line":"            os.chdir(location)"},{"line_number":66,"context_line":"            utils.execute(\"tar\", \"-cf\", \"backup.tar\", \"backups/\","},{"line_number":67,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        elif task \u003d\u003d \u0027restore\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_779560e3","line":66,"updated":"2014-05-27 13:51:14.000000000","message":"try:except block required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                           \" --config-file VerticaVBR.ini\"),"},{"line_number":74,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"            utils.execute(\"rm\", \"-rf\", tarloc,"},{"line_number":77,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def create_config_file(self, ip_address):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_979aec12","line":76,"updated":"2014-05-27 13:51:14.000000000","message":"try:except block required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def create_config_file(self, ip_address):"},{"line_number":80,"context_line":"        utils.execute_with_timeout(\"chown\", getpass.getuser(),"},{"line_number":81,"context_line":"                                   \"/home/dbadmin/.ssh\","},{"line_number":82,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_17ffbc35","line":80,"updated":"2014-05-27 13:51:14.000000000","message":"try:extry:except block required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                               \"Host 127.0.0.1\\n\""},{"line_number":90,"context_line":"                               \"StrictHostKeyChecking no\")"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"            config_file \u003d open(\"/home/dbadmin/.ssh/config\", \u0027a\u0027)"},{"line_number":93,"context_line":"            config_file.write(config_template % ip_address)"},{"line_number":94,"context_line":"            config_file.close()"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_97f3cc72","line":92,"updated":"2014-05-27 13:51:14.000000000","message":"with open(..._) as something:","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            nodeMap \u003d (\"/opt/vertica/bin/adminTools -t node_map |\""},{"line_number":103,"context_line":"                       \" grep vertica | cut -d \u0027|\u0027 -f2 | tr -d \u0027 \u0027\")"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"            out, err \u003d utils.execute(\"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":106,"context_line":"                                     nodeMap, run_as_root\u003dTrue,"},{"line_number":107,"context_line":"                                     root_helper\u003d\"sudo\")"},{"line_number":108,"context_line":"            dbNode \u003d out.strip(\"\\n\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_97ccac37","line":105,"range":{"start_line":105,"start_character":23,"end_line":105,"end_character":28},"updated":"2014-05-27 13:51:14.000000000","message":"try:except block required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                            \"backupHost\u003d%s\\n\""},{"line_number":120,"context_line":"                            \"backupDir\u003d%s/backups\\n\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"            ini_file \u003d open(\"/tmp/VerticaVBR.ini\", \u0027a\u0027)"},{"line_number":123,"context_line":"            ini_file.write(ini_template % (dbPassword, dbNode, ip_address,"},{"line_number":124,"context_line":"                                           location))"},{"line_number":125,"context_line":"            ini_file.close()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_37e598a8","line":122,"range":{"start_line":122,"start_character":23,"end_line":122,"end_character":27},"updated":"2014-05-27 13:51:14.000000000","message":"with open(..._) as something:","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import getpass"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from trove.common import utils, cfg, exception"},{"line_number":21,"context_line":"from trove.guestagent.strategies.backup import base"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_a6223ab7","line":18,"updated":"2014-05-31 10:42:19.000000000","message":"Please improve exception handling","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        if task \u003d\u003d \u0027backup\u0027:"},{"line_number":38,"context_line":"            # remove older backups"},{"line_number":39,"context_line":"            if os.path.exists(backloc):"},{"line_number":40,"context_line":"                utils.execute(\"rm\", \"-rf\", backloc, run_as_root\u003dTrue,"},{"line_number":41,"context_line":"                              root_helper\u003d\"sudo\")"},{"line_number":42,"context_line":"            # refresh backup directory"},{"line_number":43,"context_line":"            utils.execute(\"su\", \"-\", \"dbadmin\", \"-c\","}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_6641125a","line":40,"updated":"2014-05-31 10:42:19.000000000","message":"Please add exception handling","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                          (\"mkdir \"\"%s\" % backloc),"},{"line_number":45,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":46,"context_line":"        # Fetch the fixed IP of host."},{"line_number":47,"context_line":"        cmd \u003d (\"\"\"ip -4 -o addr list dev eth0 | cut -d \" \" -f 7\"\"\")"},{"line_number":48,"context_line":"        out, err \u003d utils.execute(cmd, shell\u003dTrue)"},{"line_number":49,"context_line":"        if err:"},{"line_number":50,"context_line":"            raise exception.ProcessExecutionError(out, err)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_26370a01","line":47,"updated":"2014-05-31 10:42:19.000000000","message":"You need to re-use already existing code from operation_system.py","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        tarloc \u003d location + \"/backup.tar\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if task \u003d\u003d \u0027backup\u0027:"},{"line_number":61,"context_line":"            # execute the backup tool and create an archive."},{"line_number":62,"context_line":"            utils.execute(\"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":63,"context_line":"                          (\"/opt/vertica/bin/vbr.py --task\u003dbackup\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_860c5e44","line":60,"updated":"2014-05-31 10:42:19.000000000","message":"Base backup and restore strategy has \"_pre_\" methods each exec for backup and restore should be moved into strategies implementations, and this helper class seems to be redundant.","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                              run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":47,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":48,"context_line":"                LOG.debug(\"Error executing utils.execute()\")"},{"line_number":49,"context_line":"                LOG.error(e)"},{"line_number":50,"context_line":"        # Fetch the fixed IP of host."},{"line_number":51,"context_line":"        cmd \u003d (\"\"\"ip -4 -o addr list dev eth0 | cut -d \" \" -f 7\"\"\")"},{"line_number":52,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_15821fa5","line":49,"range":{"start_line":49,"start_character":20,"end_line":49,"end_character":25},"updated":"2014-06-24 18:46:11.000000000","message":"I would have expected that you would want to rethrow the exception here. As written the code will continue to execute after the exception?","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            out, err \u003d utils.execute(cmd, shell\u003dTrue)"},{"line_number":54,"context_line":"        except exception.ProcessExecutionError as e:"},{"line_number":55,"context_line":"            LOG.error(e)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        ip_address \u003d out.split(\"/\")[0]"},{"line_number":58,"context_line":"        # Create password less ssh configurations."}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_95bd4f6a","line":55,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                              \" --config-file VerticaVBR.ini\"),"},{"line_number":71,"context_line":"                              run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":72,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":73,"context_line":"                LOG.error(e)"},{"line_number":74,"context_line":"            os.chdir(location)"},{"line_number":75,"context_line":"            try:"},{"line_number":76,"context_line":"                utils.execute(\"tar\", \"-cf\", \"backup.tar\", \"backups/\","}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_95646f22","line":73,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                              run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":78,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":79,"context_line":"                LOG.debug(\"Error executing \u0027tar -cf\u0027 command.\")"},{"line_number":80,"context_line":"                LOG.error(e)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        elif task \u003d\u003d \u0027restore\u0027:"},{"line_number":83,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_b56b2bf0","line":80,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                               \" --config-file VerticaVBR.ini\"),"},{"line_number":89,"context_line":"                              run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":90,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":91,"context_line":"                LOG.error(e)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            try:"},{"line_number":94,"context_line":"                utils.execute(\"rm\", \"-rf\", tarloc,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_d56ef7ff","line":91,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                              run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":96,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":97,"context_line":"                LOG.debug(\"Error executing \u0027rm -rf\u0027 command.\")"},{"line_number":98,"context_line":"                LOG.error(e)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def create_sshconfig(self, ip_address):"},{"line_number":101,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_357f1bad","line":98,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                                       \"/home/dbadmin/.ssh\","},{"line_number":104,"context_line":"                                       run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":105,"context_line":"        except exception.ProcessExecutionError as e:"},{"line_number":106,"context_line":"            LOG.error(e)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        if not os.path.exists(\"/home/dbadmin/.ssh/config\"):"},{"line_number":109,"context_line":"            utils.execute_with_timeout(\"touch\", \"/home/dbadmin/.ssh/config\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_7548c38a","line":106,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                       run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":123,"context_line":"        except exception.ProcessExecutionError as e:"},{"line_number":124,"context_line":"            LOG.debug(\"Error executing \u0027chown -R\u0027 command.\")"},{"line_number":125,"context_line":"            LOG.error(e)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def create_inifile(self, metadata, ip_address, location):"},{"line_number":128,"context_line":"        if not os.path.exists(\"/tmp/VerticaVBR.ini\"):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_954b8f85","line":125,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                                         nodeMap, run_as_root\u003dTrue,"},{"line_number":135,"context_line":"                                         root_helper\u003d\"sudo\")"},{"line_number":136,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":137,"context_line":"                LOG.error(e)"},{"line_number":138,"context_line":"            dbNode \u003d out.strip(\"\\n\")"},{"line_number":139,"context_line":"            dbPassword \u003d metadata.get(\u0027RootPASS\u0027)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_f55bf352","line":137,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                                           root_helper\u003d\"sudo\")"},{"line_number":160,"context_line":"            except exception.ProcessExecutionError as e:"},{"line_number":161,"context_line":"                LOG.debug(\"Error executing copy command.\")"},{"line_number":162,"context_line":"                LOG.error(e)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"class VerticaBackup(base.BackupRunner, HelperMixin):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_15577f28","line":162,"updated":"2014-06-24 18:46:11.000000000","message":"see comment on line 49","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def metadata(self):"},{"line_number":200,"context_line":"        \"\"\"Metadata from the backup.\"\"\""},{"line_number":201,"context_line":"        LOG.debug(_(\u0027Getting metadata from backup.\u0027))"},{"line_number":202,"context_line":"        dbPassword \u003d vertica_service.get_auth_password(\u0027root\u0027)"},{"line_number":203,"context_line":"        adminPassword \u003d vertica_service.get_auth_password(\u0027admin\u0027)"},{"line_number":204,"context_line":"        return {\"RootPASS\": dbPassword, \"AdminPASS\": adminPassword}"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_9519cf89","line":201,"updated":"2014-06-24 18:46:11.000000000","message":"Logging standards indicate that LOG.debug should not be internationalized.","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"}],"trove/guestagent/strategies/restore/vertica_impl.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                   self.restore_location,"},{"line_number":64,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        fo \u003d open(restore_file, \u0027w\u0027)"},{"line_number":67,"context_line":"        stream \u003d self.storage.load(self.location, self.checksum)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        metadata_dict \u003d self.storage.load_metadata(self.location,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_f776d0d7","line":66,"updated":"2014-05-27 13:51:14.000000000","message":"with open(...) as fo:","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        metadata_dict \u003d self.storage.load_metadata(self.location,"},{"line_number":70,"context_line":"                                                   self.checksum)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        app \u003d dbaas.VerticaApp(dbaas.VerticaAppStatus())"},{"line_number":73,"context_line":"        app.create_cnf_update_adminpass(metadata_dict[\u0027adminpass\u0027])"},{"line_number":74,"context_line":"        app.update_cnf_with_user_password(VERTICA_CONFIG, \u0027dbadmin\u0027,"},{"line_number":75,"context_line":"                                          metadata_dict[\u0027rootpass\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_57a7844f","line":72,"updated":"2014-05-27 13:51:14.000000000","message":"app can be accessed via \u0027self\u0027","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            content_length +\u003d len(chunk)"},{"line_number":81,"context_line":"        fo.close()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        utils.execute_with_timeout(\"chown\", \"dbadmin:verticadba\","},{"line_number":84,"context_line":"                                   self.restore_location,"},{"line_number":85,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_37811890","line":83,"updated":"2014-05-27 13:51:14.000000000","message":"try:except required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                                   self.restore_location,"},{"line_number":85,"context_line":"                                   run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        out, err \u003d utils.execute(\"tar\", \"-xvf\","},{"line_number":88,"context_line":"                                 restore_file,"},{"line_number":89,"context_line":"                                 \"-C\", self.restore_location,"},{"line_number":90,"context_line":"                                 run_as_root\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_b7444875","line":87,"updated":"2014-05-27 13:51:14.000000000","message":"try: except required","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                                 \"-C\", self.restore_location,"},{"line_number":85,"context_line":"                                 run_as_root\u003dTrue,"},{"line_number":86,"context_line":"                                 root_helper\u003d\"sudo\")"},{"line_number":87,"context_line":"        LOG.info(_(\"after tar -xvf command out \\n%s\") % out)"},{"line_number":88,"context_line":"        LOG.info(_(\"after tar -xvf command err \\n%s\") % err)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.helper_action(task\u003d\"restore\","}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_f00a211f","line":87,"updated":"2014-06-24 18:46:11.000000000","message":"This seems more like a debug message - and probably should be reworded to have more context or removed.","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"ed65470f60324317e8a51d86426882acc43a9ccf","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                 run_as_root\u003dTrue,"},{"line_number":86,"context_line":"                                 root_helper\u003d\"sudo\")"},{"line_number":87,"context_line":"        LOG.info(_(\"after tar -xvf command out \\n%s\") % out)"},{"line_number":88,"context_line":"        LOG.info(_(\"after tar -xvf command err \\n%s\") % err)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        self.helper_action(task\u003d\"restore\","},{"line_number":91,"context_line":"                           location\u003dself.restore_location,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_90247db3","line":88,"updated":"2014-06-24 18:46:11.000000000","message":"same as line 87","commit_id":"b16e30fa5d2d8c5a94d2355ad05446977f5a6f54"}],"trove/guestagent/strategies/storage/vertica_swift.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4bacb4a635e66cfbd03ee721d6ef516925c07ee8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from swift import SwiftStorage as BaseSwiftStorage"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class SwiftStorage(BaseSwiftStorage):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ae8d1ca_971d8c76","line":17,"updated":"2014-05-27 13:51:14.000000000","message":"Why is it being implemented?\n\nAs i can see no need to do this at all. Proposed implementation perfecly fits to initial backup/restore feature implementation","commit_id":"fcf6356a8bd1e4555fd82ea9a60b6ffa1a54327c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"89ae7fdd0843f438ba6f6cfa708cba1a21b9cf81","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from swift import SwiftStorage as BaseSwiftStorage"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class SwiftStorage(BaseSwiftStorage):"},{"line_number":21,"context_line":"    \"\"\"Implementation of Storage Strategy for Swift.\"\"\""},{"line_number":22,"context_line":"    __strategy_name__ \u003d \u0027swift\u0027"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_faff72ff","line":20,"updated":"2014-05-31 10:42:19.000000000","message":"No need to implement additional storage. You need to fit this feature into existing framework","commit_id":"2221f2205aef89a96c8b7f123256026303ca9a6d"}]}
