)]}'
{"trove/common/cfg.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":782,"context_line":"                     \u0027if trove_security_groups_support is True).\u0027),"},{"line_number":783,"context_line":"    cfg.StrOpt(\u0027backup_strategy\u0027, default\u003dNone,"},{"line_number":784,"context_line":"               help\u003d\u0027Default strategy to perform backups.\u0027,"},{"line_number":785,"context_line":"               deprecated_name\u003d\u0027backup_strategy\u0027,"},{"line_number":786,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":787,"context_line":"    cfg.DictOpt(\u0027backup_incremental_strategy\u0027, default\u003d{},"},{"line_number":788,"context_line":"                help\u003d\u0027Incremental Backup Runner based on the default \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_8aa6500d","line":785,"updated":"2015-03-16 17:04:38.000000000","message":"you shouldn\u0027t have deprecated names here, these are new options.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":788,"context_line":"                help\u003d\u0027Incremental Backup Runner based on the default \u0027"},{"line_number":789,"context_line":"                \u0027strategy. For strategies that do not implement an \u0027"},{"line_number":790,"context_line":"                \u0027incremental, the runner will use the default full backup.\u0027,"},{"line_number":791,"context_line":"                deprecated_name\u003d\u0027backup_incremental_strategy\u0027,"},{"line_number":792,"context_line":"                deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":793,"context_line":"    cfg.StrOpt(\u0027replication_strategy\u0027, default\u003dNone,"},{"line_number":794,"context_line":"               help\u003d\u0027Default strategy for replication.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_6aa3dcff","line":791,"updated":"2015-03-16 17:04:38.000000000","message":"you shouldn\u0027t have deprecated names here, these are new options.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":801,"context_line":"               help\u003d\u0027Device path for volume if volume support is enabled.\u0027),"},{"line_number":802,"context_line":"    cfg.StrOpt(\u0027backup_namespace\u0027, default\u003dNone,"},{"line_number":803,"context_line":"               help\u003d\u0027Namespace to load backup strategies from.\u0027,"},{"line_number":804,"context_line":"               deprecated_name\u003d\u0027backup_namespace\u0027,"},{"line_number":805,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":806,"context_line":"    cfg.StrOpt(\u0027restore_namespace\u0027, default\u003dNone,"},{"line_number":807,"context_line":"               help\u003d\u0027Namespace to load restore strategies from.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_4aa0d8f3","line":804,"updated":"2015-03-16 17:04:38.000000000","message":"you shouldn\u0027t have deprecated names here, these are new options.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":805,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":806,"context_line":"    cfg.StrOpt(\u0027restore_namespace\u0027, default\u003dNone,"},{"line_number":807,"context_line":"               help\u003d\u0027Namespace to load restore strategies from.\u0027,"},{"line_number":808,"context_line":"               deprecated_name\u003d\u0027restore_namespace\u0027,"},{"line_number":809,"context_line":"               deprecated_group\u003d\u0027DEFAULT\u0027),"},{"line_number":810,"context_line":"]"},{"line_number":811,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_2a9d64bc","line":808,"updated":"2015-03-16 17:04:38.000000000","message":"you shouldn\u0027t have deprecated names here, these are new options.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"}],"trove/common/utils.py":[{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"5de85595211bdb5a4204dcccb267155d5d42928d","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"def get_all_disks(open_function\u003dopen):"},{"line_number":296,"context_line":"    \"\"\"Returns all ext3/ext4 disk-partitions.\"\"\""},{"line_number":297,"context_line":"    disk_name \u003d []"},{"line_number":298,"context_line":"    f \u003d open_function(\"/etc/mtab\", \"r\")"},{"line_number":299,"context_line":"    for line in f.read().splitlines():"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_35f6605e","line":296,"updated":"2015-03-17 19:57:51.000000000","message":"So what if someone wanted to use a different filesystem (say xfs)?  Or an OS that had a /run/nextos?","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d5493a45a48fdf132c06b0e02099605eb42eda6e","unresolved":false,"context_lines":[{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"def get_all_disks(open_function\u003dopen):"},{"line_number":296,"context_line":"    \"\"\"Returns all ext3/ext4 disk-partitions.\"\"\""},{"line_number":297,"context_line":"    disk_name \u003d []"},{"line_number":298,"context_line":"    f \u003d open_function(\"/etc/mtab\", \"r\")"},{"line_number":299,"context_line":"    for line in f.read().splitlines():"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_adf592ee","line":296,"in_reply_to":"9a80dd14_35f6605e","updated":"2015-03-18 07:51:45.000000000","message":"Agreed. We let operators configure the filesystem type  by specifying CONF.volume_fstype, so we should ideally be checking for the same fs type here instead of just ext.","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"}],"trove/guestagent/datastore/experimental/vertica/manager.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                cluster_config\u003dNone):"},{"line_number":46,"context_line":"        \"\"\"Makes ready DBAAS on a Guest container.\"\"\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            LOG.info(_(\"Setting instance status BUILDING.\"))"},{"line_number":49,"context_line":"            self.appStatus.begin_install()"},{"line_number":50,"context_line":"            if device_path:"},{"line_number":51,"context_line":"                device \u003d volume.VolumeDevice(device_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_b3702da5","line":48,"updated":"2015-03-13 20:20:36.000000000","message":"maybe \u0027to BUILDING\u0027","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                    device.migrate_data(mount_point)"},{"line_number":58,"context_line":"                    # mount the volume"},{"line_number":59,"context_line":"                    device.mount(mount_point)"},{"line_number":60,"context_line":"                    LOG.debug(_(\"Mounted the volume.\"))"},{"line_number":61,"context_line":"            self.app.install_if_needed(packages)"},{"line_number":62,"context_line":"            self.app.prepare_for_install_vertica()"},{"line_number":63,"context_line":"            self.app.install_vertica()"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_732cf599","line":60,"updated":"2015-03-13 20:20:36.000000000","message":"No need to internationalize debug messages","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            self.app.install_vertica()"},{"line_number":64,"context_line":"            self.app.create_db()"},{"line_number":65,"context_line":"            self.app.complete_install_or_restart()"},{"line_number":66,"context_line":"            LOG.info(\u0027Completed setup of Vertica database instance.\u0027)"},{"line_number":67,"context_line":"        except Exception as e:"},{"line_number":68,"context_line":"            LOG.error(e)"},{"line_number":69,"context_line":"            self.appStatus.set_status(rd_ins.ServiceStatuses.FAILED)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_73531517","line":66,"updated":"2015-03-13 20:20:36.000000000","message":"But INFO messages should be","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            self.app.complete_install_or_restart()"},{"line_number":66,"context_line":"            LOG.info(\u0027Completed setup of Vertica database instance.\u0027)"},{"line_number":67,"context_line":"        except Exception as e:"},{"line_number":68,"context_line":"            LOG.error(e)"},{"line_number":69,"context_line":"            self.appStatus.set_status(rd_ins.ServiceStatuses.FAILED)"},{"line_number":70,"context_line":"            raise"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_13b6593e","line":68,"updated":"2015-03-13 20:20:36.000000000","message":"Probably better to LOG.exception here","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def mount_volume(self, context, device_path\u003dNone, mount_point\u003dNone):"},{"line_number":84,"context_line":"        device \u003d volume.VolumeDevice(device_path)"},{"line_number":85,"context_line":"        device.mount(mount_point, write_to_fstab\u003dFalse)"},{"line_number":86,"context_line":"        LOG.debug(_(\"Mounted the volume.\"))"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def unmount_volume(self, context, device_path\u003dNone, mount_point\u003dNone):"},{"line_number":89,"context_line":"        device \u003d volume.VolumeDevice(device_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_33e19d2a","line":86,"updated":"2015-03-13 20:20:36.000000000","message":"Same here, no internationalization required","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    def unmount_volume(self, context, device_path\u003dNone, mount_point\u003dNone):"},{"line_number":89,"context_line":"        device \u003d volume.VolumeDevice(device_path)"},{"line_number":90,"context_line":"        device.unmount(mount_point)"},{"line_number":91,"context_line":"        LOG.debug(_(\"Unmounted the volume.\"))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def resize_fs(self, context, device_path\u003dNone, mount_point\u003dNone):"},{"line_number":94,"context_line":"        device \u003d volume.VolumeDevice(device_path)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_93c7a997","line":91,"updated":"2015-03-13 20:20:36.000000000","message":"ditto","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        LOG.debug(\"Starting with configuration changes.\")"},{"line_number":181,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":182,"context_line":"            operation\u003d\u0027start_db_with_conf_changes\u0027, datastore\u003dMANAGER)"},{"line_number":183,"context_line":"        LOG.debug(_(\"Resized the filesystem\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_334fdd35","line":183,"updated":"2015-03-13 20:20:36.000000000","message":"ditto","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"1b1fd12dd4723302af6120901788fc0cc7ad7dd9","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            self.app.complete_install_or_restart()"},{"line_number":66,"context_line":"            LOG.info(_(\u0027Completed setup of Vertica database instance.\u0027))"},{"line_number":67,"context_line":"        except Exception as e:"},{"line_number":68,"context_line":"            LOG.exception(e)"},{"line_number":69,"context_line":"            self.appStatus.set_status(rd_ins.ServiceStatuses.FAILED)"},{"line_number":70,"context_line":"            raise"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_b18ad618","line":68,"updated":"2015-03-14 17:16:00.000000000","message":"Typically, you just put a message here (since LOG.exception already knows about the exception). For example:\n\n  LOG.exception(_(\u0027Could not prepare Vertica database instance.\u0027))\n\nBut not a show-stopper.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            self.app.complete_install_or_restart()"},{"line_number":66,"context_line":"            LOG.info(_(\u0027Completed setup of Vertica database instance.\u0027))"},{"line_number":67,"context_line":"        except Exception as e:"},{"line_number":68,"context_line":"            LOG.exception(e)"},{"line_number":69,"context_line":"            self.appStatus.set_status(rd_ins.ServiceStatuses.FAILED)"},{"line_number":70,"context_line":"            raise"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_6a24bc5f","line":68,"in_reply_to":"9a80dd14_b18ad618","updated":"2015-03-16 17:04:38.000000000","message":"yes, I\u0027d remove the exception that will now get logged twice.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def resize_fs(self, context, device_path\u003dNone, mount_point\u003dNone):"},{"line_number":94,"context_line":"        device \u003d volume.VolumeDevice(device_path)"},{"line_number":95,"context_line":"        device.resize_fs(mount_point)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def reset_configuration(self, context, configuration):"},{"line_number":98,"context_line":"        LOG.debug(\"Resetting CouchDB configuration.\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_4abff8cf","line":95,"updated":"2015-03-16 17:04:38.000000000","message":"no message here ;)","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        LOG.debug(\"Starting with configuration changes.\")"},{"line_number":181,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":182,"context_line":"            operation\u003d\u0027start_db_with_conf_changes\u0027, datastore\u003dMANAGER)"},{"line_number":183,"context_line":"        LOG.debug(\"Resized the filesystem\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_aa96b449","line":183,"updated":"2015-03-16 17:04:38.000000000","message":"I have a distinct feeling that we will never see this message ;)","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1c75e5da593b8c7984a72a8415496530b0171687","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        mount_point \u003d CONF.get(MANAGER).mount_point"},{"line_number":78,"context_line":"        return dbaas.get_filesystem_volume_stats(mount_point)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"},{"line_number":81,"context_line":"        self.app.stop_db(do_not_start_on_reboot\u003ddo_not_start_on_reboot)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def mount_volume(self, context, device_path\u003dNone, mount_point\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_346d6205","line":80,"updated":"2015-03-18 12:04:00.000000000","message":"no LOG?","commit_id":"0253141bccb9a5f0d207241d27531b9ac22387c1"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"9af0720d3190476d86395a695a6b572404a580ce","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        mount_point \u003d CONF.get(MANAGER).mount_point"},{"line_number":78,"context_line":"        return dbaas.get_filesystem_volume_stats(mount_point)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"},{"line_number":81,"context_line":"        self.app.stop_db(do_not_start_on_reboot\u003ddo_not_start_on_reboot)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def mount_volume(self, context, device_path\u003dNone, mount_point\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_ba75b933","line":80,"in_reply_to":"9a80dd14_346d6205","updated":"2015-03-18 12:44:03.000000000","message":"Done","commit_id":"0253141bccb9a5f0d207241d27531b9ac22387c1"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"5fc6f60575fc7d282667abab528026008d0cb6e1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        mount_point \u003d CONF.get(MANAGER).mount_point"},{"line_number":78,"context_line":"        return dbaas.get_filesystem_volume_stats(mount_point)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def stop_db(self, context, do_not_start_on_reboot\u003dFalse):"},{"line_number":81,"context_line":"        self.app.stop_db(do_not_start_on_reboot\u003ddo_not_start_on_reboot)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def mount_volume(self, context, device_path\u003dNone, mount_point\u003dNone):"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_9a671551","line":80,"in_reply_to":"9a80dd14_ba75b933","updated":"2015-03-18 12:48:20.000000000","message":"This should not make a difference since Logging is already done in service.py\n\nLet me know if this is needed.","commit_id":"0253141bccb9a5f0d207241d27531b9ac22387c1"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"d48145432a49797fb439fb6ba027104775795969","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.guestagent.datastore.experimental.vertica.service import VerticaApp"},{"line_number":22,"context_line":"from trove.openstack.common import log as logging"},{"line_number":23,"context_line":"from trove.common.i18n import _"},{"line_number":24,"context_line":"from trove.openstack.common import periodic_task"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_ff3d4cde","line":24,"updated":"2015-03-18 19:41:56.000000000","message":"missing: from trove.common import exception","commit_id":"95364d9b4e456530a1d9dbe41604717f6dab4349"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"7a3e6fc674408bf34ab2ac959115b59ba8367e7b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.guestagent.datastore.experimental.vertica.service import VerticaApp"},{"line_number":22,"context_line":"from trove.openstack.common import log as logging"},{"line_number":23,"context_line":"from trove.common.i18n import _"},{"line_number":24,"context_line":"from trove.openstack.common import periodic_task"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_3ae1b2fc","line":24,"in_reply_to":"9a80dd14_ff3d4cde","updated":"2015-03-18 19:48:40.000000000","message":"Done","commit_id":"95364d9b4e456530a1d9dbe41604717f6dab4349"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"d48145432a49797fb439fb6ba027104775795969","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            self.app.install_if_needed(packages)"},{"line_number":62,"context_line":"            self.app.prepare_for_install_vertica()"},{"line_number":63,"context_line":"            self.app.install_vertica()"},{"line_number":64,"context_line":"            self.app.create_db()"},{"line_number":65,"context_line":"            self.app.complete_install_or_restart()"},{"line_number":66,"context_line":"            LOG.info(_(\u0027Completed setup of Vertica database instance.\u0027))"},{"line_number":67,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_7a5c0a1a","line":64,"updated":"2015-03-18 19:41:56.000000000","message":"Is this something specific to Vertica where a database needs to be created when its installed?","commit_id":"95364d9b4e456530a1d9dbe41604717f6dab4349"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"7a3e6fc674408bf34ab2ac959115b59ba8367e7b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            self.app.install_if_needed(packages)"},{"line_number":62,"context_line":"            self.app.prepare_for_install_vertica()"},{"line_number":63,"context_line":"            self.app.install_vertica()"},{"line_number":64,"context_line":"            self.app.create_db()"},{"line_number":65,"context_line":"            self.app.complete_install_or_restart()"},{"line_number":66,"context_line":"            LOG.info(_(\u0027Completed setup of Vertica database instance.\u0027))"},{"line_number":67,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a80dd14_fadf1a38","line":64,"in_reply_to":"9a80dd14_7a5c0a1a","updated":"2015-03-18 19:48:40.000000000","message":"yes its specific to vertica\nvertica installation is a 3-step process\n1. install package\n2. configure software with command install_vertica\n3. create starter database","commit_id":"95364d9b4e456530a1d9dbe41604717f6dab4349"},{"author":{"_account_id":13355,"name":"Edmond Kotowski","email":"ekotowski@gmail.com","username":"ekotowski"},"change_message_id":"10e7af3cd11845c0b6e5280fd796bea49376439a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        LOG.debug(\"Resized the filesystem.\")"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def reset_configuration(self, context, configuration):"},{"line_number":108,"context_line":"        LOG.debug(\"Resetting CouchDB configuration.\")"},{"line_number":109,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":110,"context_line":"            operation\u003d\u0027reset_configuration\u0027, datastore\u003dMANAGER)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_480597c0","line":108,"updated":"2015-03-19 15:04:46.000000000","message":"This should say Vertica not CouchDB?","commit_id":"a289706e190283ca254614349b7ea41effb9543a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"f9bc4d81d487a431e381c0665481ed826b246815","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        LOG.debug(\"Resized the filesystem.\")"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def reset_configuration(self, context, configuration):"},{"line_number":108,"context_line":"        LOG.debug(\"Resetting CouchDB configuration.\")"},{"line_number":109,"context_line":"        raise exception.DatastoreOperationNotSupported("},{"line_number":110,"context_line":"            operation\u003d\u0027reset_configuration\u0027, datastore\u003dMANAGER)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_5f054a0e","line":108,"in_reply_to":"9a80dd14_480597c0","updated":"2015-03-19 15:19:18.000000000","message":"Yep, cut-and-paste error","commit_id":"a289706e190283ca254614349b7ea41effb9543a"}],"trove/guestagent/datastore/experimental/vertica/service.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                root_helper\u003d\"sudo\")"},{"line_number":48,"context_line":"            if out.strip() \u003d\u003d DB_NAME:"},{"line_number":49,"context_line":"                #UP status is confirmed"},{"line_number":50,"context_line":"                LOG.info(\"Service Status is RUNNING.\")"},{"line_number":51,"context_line":"                return rd_instance.ServiceStatuses.RUNNING"},{"line_number":52,"context_line":"            elif out.strip() \u003d\u003d \"\":"},{"line_number":53,"context_line":"                #nothing returned, means no db running lets verify"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_530611cf","line":50,"updated":"2015-03-13 20:20:36.000000000","message":"Internationalize","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                    root_helper\u003d\"sudo\")"},{"line_number":61,"context_line":"                if out.strip() \u003d\u003d DB_NAME:"},{"line_number":62,"context_line":"                    #DOWN status is confirmed"},{"line_number":63,"context_line":"                    LOG.info(\"Service Status is SHUTDOWN.\")"},{"line_number":64,"context_line":"                    return rd_instance.ServiceStatuses.SHUTDOWN"},{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    return rd_instance.ServiceStatuses.UNKNOWN"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_f3f625d6","line":63,"updated":"2015-03-13 20:20:36.000000000","message":"ditto","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    return rd_instance.ServiceStatuses.UNKNOWN"},{"line_number":67,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":68,"context_line":"            LOG.error(\"Process execution.\")"},{"line_number":69,"context_line":"            return rd_instance.ServiceStatuses.CRASHED"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_93232957","line":68,"updated":"2015-03-13 20:20:36.000000000","message":"Always best to LOG.exception after one, to get the stack trace","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        \"\"\"Stop the database.\"\"\""},{"line_number":81,"context_line":"        LOG.info(_(\"Stopping Vertica...\"))"},{"line_number":82,"context_line":"        #using Vertica adminTools to stop db."},{"line_number":83,"context_line":"        DB_PASS \u003d self._get_database_password()"},{"line_number":84,"context_line":"        STOP_DB_COMMAND \u003d [\"sudo\", \"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":85,"context_line":"                           (system.STOP_DB % (DB_NAME, DB_PASS))]"},{"line_number":86,"context_line":"        subprocess.call(STOP_DB_COMMAND)"},{"line_number":87,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_53bb71e4","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":23},"updated":"2015-03-13 20:20:36.000000000","message":"Not sure why these are in upper-case ...","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        LOG.info(_(\"Creating database on Vertica host.\"))"},{"line_number":121,"context_line":"        try:"},{"line_number":122,"context_line":"            # Create db after install"},{"line_number":123,"context_line":"            DB_PASS \u003d self._get_database_password()"},{"line_number":124,"context_line":"            CREATE_DB_COMMAND \u003d [\"sudo\", \"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":125,"context_line":"                                 (system.CREATE_DB % (members,"},{"line_number":126,"context_line":"                                                      DB_NAME,"},{"line_number":127,"context_line":"                                                      MOUNT_POINT,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_139019ec","line":124,"range":{"start_line":123,"start_character":0,"end_line":124,"end_character":29},"updated":"2015-03-13 20:20:36.000000000","message":"ditto","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                                                      DB_PASS))]"},{"line_number":130,"context_line":"            subprocess.check_call(CREATE_DB_COMMAND)"},{"line_number":131,"context_line":"        except subprocess.CalledProcessError:"},{"line_number":132,"context_line":"            LOG.error(\"Vertica database create failed.\")"},{"line_number":133,"context_line":"        LOG.info(_(\"Vertica database create completed.\"))"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    def install_vertica(self, members\u003dsystem.get_ip(\u0027eth0\u0027)):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_b3b82d76","line":132,"updated":"2015-03-13 20:20:36.000000000","message":"LOG.exception, plus internationalization","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        LOG.info(_(\"Installing Vertica Server.\"))"},{"line_number":138,"context_line":"        try:"},{"line_number":139,"context_line":"            # Create db after install"},{"line_number":140,"context_line":"            INSTALL_VERTICA_CMD \u003d [\"sudo\", \"su\", \"-\", \"root\", \"-c\","},{"line_number":141,"context_line":"                                   (system.INSTALL_VERTICA % (members,"},{"line_number":142,"context_line":"                                                              MOUNT_POINT))]"},{"line_number":143,"context_line":"            subprocess.check_call(INSTALL_VERTICA_CMD)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_53645121","line":140,"updated":"2015-03-13 20:20:36.000000000","message":"caps","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":142,"context_line":"                                                              MOUNT_POINT))]"},{"line_number":143,"context_line":"            subprocess.check_call(INSTALL_VERTICA_CMD)"},{"line_number":144,"context_line":"        except subprocess.CalledProcessError:"},{"line_number":145,"context_line":"            LOG.error(\"install_vertica failed.\")"},{"line_number":146,"context_line":"        self._generate_database_password()"},{"line_number":147,"context_line":"        LOG.info(_(\"install_vertica completed.\"))"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_f37465d0","line":145,"updated":"2015-03-13 20:20:36.000000000","message":"LOG.exception, internationalization","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        for disk in system.get_all_disks():"},{"line_number":194,"context_line":"            device \u003d volume.VolumeDevice(disk)"},{"line_number":195,"context_line":"            device.set_readahead_size(2048)"},{"line_number":196,"context_line":"        LOG.debug(_(\"Set readhead size as required by Vertica.\"))"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def prepare_for_install_vertica(self):"},{"line_number":199,"context_line":"        \"\"\"This method executes preparatory methods before"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_ff526711","line":196,"updated":"2015-03-13 20:20:36.000000000","message":"no internationalization","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":"packager \u003d pkg.Package()"},{"line_number":31,"context_line":"DB_NAME \u003d \u0027db_srvr\u0027"},{"line_number":32,"context_line":"MOUNT_POINT \u003d \u0027/var/lib/vertica\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class VerticaAppStatus(service.BaseDbStatus):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_7b100c00","line":32,"updated":"2015-03-16 17:04:38.000000000","message":"is this safe? you allow it as a parameter in prepare.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                else:"},{"line_number":66,"context_line":"                    return rd_instance.ServiceStatuses.UNKNOWN"},{"line_number":67,"context_line":"        except exception.ProcessExecutionError:"},{"line_number":68,"context_line":"            LOG.exception(_(\"Process execution failed.\"))"},{"line_number":69,"context_line":"            return rd_instance.ServiceStatuses.CRASHED"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_9b7dc01e","line":68,"updated":"2015-03-16 17:04:38.000000000","message":"A more descriptive message would be nice; such as failed to get database status.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.state_change_wait_time \u003d CONF.state_change_wait_time"},{"line_number":77,"context_line":"        self.status \u003d status"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def stop_db(self, update_db\u003dFalse, do_not_start_on_reboot\u003dFalse):"},{"line_number":80,"context_line":"        \"\"\"Stop the database.\"\"\""},{"line_number":81,"context_line":"        LOG.info(_(\"Stopping Vertica...\"))"},{"line_number":82,"context_line":"        #using Vertica adminTools to stop db."}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_5b0a6879","line":79,"updated":"2015-03-16 17:04:38.000000000","message":"I don\u0027t see any implementation for do_not_start_on_reboot.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            self.stop_db()"},{"line_number":114,"context_line":"            self.start_db()"},{"line_number":115,"context_line":"        finally:"},{"line_number":116,"context_line":"            self.status.end_install_or_restart()"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def create_db(self, members\u003dsystem.get_ip(\u0027eth0\u0027)):"},{"line_number":119,"context_line":"        \"\"\"Prepare the guest machine with a Vertica db creation.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_7ba00c42","line":116,"updated":"2015-03-16 17:04:38.000000000","message":"seems like stop_db and start_db also do this. some cleanup would be nice.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        LOG.debug(\u0027Defining temp config holder at %s.\u0027 %"},{"line_number":161,"context_line":"                  system.VERTICA_TEMP_CONF)"},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            with open(system.VERTICA_TEMP_CONF, \u0027w+\u0027) as conf:"},{"line_number":164,"context_line":"                conf.write(config_contents)"},{"line_number":165,"context_line":"            LOG.info(_(\"Writing new config.\"))"},{"line_number":166,"context_line":"            utils.execute_with_timeout(\"mv\", system.VERTICA_TEMP_CONF,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_3b369403","line":163,"updated":"2015-03-16 17:04:38.000000000","message":"This is susceptible to a known temporary file vulnerability and should not be allowed. Use a temp file instead.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _get_database_password(self):"},{"line_number":174,"context_line":"        \"\"\"Read the password from vertica.cnf file and return it.\"\"\""},{"line_number":175,"context_line":"        pwd, err \u003d utils.execute_with_timeout(\"awk\", \u0027{print $3}\u0027,"},{"line_number":176,"context_line":"                                              system.VERTICA_CONF,"},{"line_number":177,"context_line":"                                              run_as_root\u003dTrue,"},{"line_number":178,"context_line":"                                              root_helper\u003d\"sudo\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_87100651","line":175,"updated":"2015-03-16 17:04:38.000000000","message":"is there no lighter weight way of getting the third thing in a file than spawning a shell and running awk with sudo?","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                              system.VERTICA_CONF,"},{"line_number":177,"context_line":"                                              run_as_root\u003dTrue,"},{"line_number":178,"context_line":"                                              root_helper\u003d\"sudo\")"},{"line_number":179,"context_line":"        if err:"},{"line_number":180,"context_line":"            LOG.error(err)"},{"line_number":181,"context_line":"            raise RuntimeError(\"Problem reading vertica.cnf! : %s\" % err)"},{"line_number":182,"context_line":"        return pwd.strip()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_074b3660","line":179,"updated":"2015-03-16 17:04:38.000000000","message":"What about exception handling?","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"b2bd5e081ad37e98f93c916c3c24eedc28531386","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self._disable_db_on_boot()"},{"line_number":86,"context_line":"        #using Vertica adminTools to stop db."},{"line_number":87,"context_line":"        db_password \u003d self._get_database_password()"},{"line_number":88,"context_line":"        stop_db_command \u003d [\"sudo\", \"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":89,"context_line":"                           (system.STOP_DB % (DB_NAME, db_password))]"},{"line_number":90,"context_line":"        execute_function(stop_db_command)"},{"line_number":91,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_9e1bb672","line":88,"range":{"start_line":88,"start_character":47,"end_line":88,"end_character":54},"updated":"2015-03-17 16:11:26.000000000","message":"Why exactly are we using \"sudo su - xxx\" as opposed to the common \"sudo xxx\" facilitated by the existing interface?","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"4fb0e4460d98b66d9368c4731aa9a7acb7d6b570","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self._disable_db_on_boot()"},{"line_number":86,"context_line":"        #using Vertica adminTools to stop db."},{"line_number":87,"context_line":"        db_password \u003d self._get_database_password()"},{"line_number":88,"context_line":"        stop_db_command \u003d [\"sudo\", \"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":89,"context_line":"                           (system.STOP_DB % (DB_NAME, db_password))]"},{"line_number":90,"context_line":"        execute_function(stop_db_command)"},{"line_number":91,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_98d021cb","line":88,"range":{"start_line":88,"start_character":47,"end_line":88,"end_character":54},"in_reply_to":"9a80dd14_9e1bb672","updated":"2015-03-17 19:31:11.000000000","message":"Cannot we do \"sudo -u \u003cuser\u003e xxx\"","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"13b4450d8115a552b70ebb4a4a081a0901b1a6a5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self._disable_db_on_boot()"},{"line_number":86,"context_line":"        #using Vertica adminTools to stop db."},{"line_number":87,"context_line":"        db_password \u003d self._get_database_password()"},{"line_number":88,"context_line":"        stop_db_command \u003d [\"sudo\", \"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":89,"context_line":"                           (system.STOP_DB % (DB_NAME, db_password))]"},{"line_number":90,"context_line":"        execute_function(stop_db_command)"},{"line_number":91,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_cd80224c","line":88,"range":{"start_line":88,"start_character":47,"end_line":88,"end_character":54},"in_reply_to":"9a80dd14_9e1bb672","updated":"2015-03-17 17:34:15.000000000","message":"because they are different ;)\n\nsudo xxx will execute command xxx as root\n\nsudo su - xxx will execute some commands as user xxx.","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"51076c61be64119cf9331a681aec0d5e20dd7244","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            self._disable_db_on_boot()"},{"line_number":86,"context_line":"        #using Vertica adminTools to stop db."},{"line_number":87,"context_line":"        db_password \u003d self._get_database_password()"},{"line_number":88,"context_line":"        stop_db_command \u003d [\"sudo\", \"su\", \"-\", \"dbadmin\", \"-c\","},{"line_number":89,"context_line":"                           (system.STOP_DB % (DB_NAME, db_password))]"},{"line_number":90,"context_line":"        execute_function(stop_db_command)"},{"line_number":91,"context_line":"        if not self.status.wait_for_real_status_to_change_to("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_1ef26606","line":88,"in_reply_to":"9a80dd14_9e1bb672","updated":"2015-03-17 16:14:56.000000000","message":"this command needs to be executed by another user dbadmin and not root","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"5de85595211bdb5a4204dcccb267155d5d42928d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        \"\"\"This method sets readhead size for disks as needed by Vertica.\"\"\""},{"line_number":205,"context_line":"        for disk in utils.get_all_disks():"},{"line_number":206,"context_line":"            device \u003d volume.VolumeDevice(disk)"},{"line_number":207,"context_line":"            device.set_readahead_size(2048)"},{"line_number":208,"context_line":"        LOG.debug(\"Set readhead size as required by Vertica.\")"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def prepare_for_install_vertica(self, execute_function\u003dutils.execute):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_f81e7d73","line":207,"updated":"2015-03-17 19:57:51.000000000","message":"The Vertica installation manual suggests this should be an operator configurable value.","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d5493a45a48fdf132c06b0e02099605eb42eda6e","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        \"\"\"This method sets readhead size for disks as needed by Vertica.\"\"\""},{"line_number":205,"context_line":"        for disk in utils.get_all_disks():"},{"line_number":206,"context_line":"            device \u003d volume.VolumeDevice(disk)"},{"line_number":207,"context_line":"            device.set_readahead_size(2048)"},{"line_number":208,"context_line":"        LOG.debug(\"Set readhead size as required by Vertica.\")"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def prepare_for_install_vertica(self, execute_function\u003dutils.execute):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a80dd14_ed614ad5","line":207,"in_reply_to":"9a80dd14_f81e7d73","updated":"2015-03-18 07:51:45.000000000","message":"Agreed, maybe we can add this as part of the guest [Vertica] conf settings.","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"586fec02416b260167eea7c27ce03859751340e1","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def stop_db(self, update_db\u003dFalse, do_not_start_on_reboot\u003dFalse):"},{"line_number":87,"context_line":"        \"\"\"Stop the database.\"\"\""},{"line_number":88,"context_line":"        LOG.info(_(\"Stopping Vertica...\"))"},{"line_number":89,"context_line":"        if do_not_start_on_reboot:"},{"line_number":90,"context_line":"            self._disable_db_on_boot()"},{"line_number":91,"context_line":"        #using Vertica adminTools to stop db."}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_0702b20b","line":88,"updated":"2015-03-19 14:21:21.000000000","message":"I think we got rid of the ellipsis in logged messages (also, I have to make the obligatory crack about logging).","commit_id":"a289706e190283ca254614349b7ea41effb9543a"}],"trove/guestagent/datastore/experimental/vertica/system.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"CONF \u003d cfg.CONF"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"CREATE_DB \u003d (\"/opt/vertica/bin/adminTools -t create_db -s\""},{"line_number":20,"context_line":"             \" %s -d %s -c %s -D %s -p \u0027%s\u0027\")"},{"line_number":21,"context_line":"INSTALL_VERTICA \u003d (\"/opt/vertica/sbin/install_vertica -s %s\""},{"line_number":22,"context_line":"                   \" -d %s -X -N -S default -r\""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_27611aa9","line":19,"updated":"2015-03-16 17:04:38.000000000","message":"could you key these on operating system so that someone could, in the future, support other OS\u0027es?","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"START_DB \u003d \"/opt/vertica/bin/adminTools -t start_db -d %s -p \u0027%s\u0027\""},{"line_number":26,"context_line":"STATUS_ACTIVE_DB \u003d \"/opt/vertica/bin/adminTools -t show_active_db\""},{"line_number":27,"context_line":"STATUS_DB_DOWN \u003d \"/opt/vertica/bin/adminTools -t db_status -s DOWN\""},{"line_number":28,"context_line":"VERTICA_TEMP_CONF \u003d \"/tmp/vertica.tmp\""},{"line_number":29,"context_line":"VERTICA_CONF \u003d \"/etc/vertica.cnf\""},{"line_number":30,"context_line":"INSTALL_TIMEOUT \u003d 1000"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_876566e4","line":28,"updated":"2015-03-16 17:04:38.000000000","message":"Not a good idea, this is a known vulnerability waiting to happen.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"INSTALL_TIMEOUT \u003d 1000"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def get_all_disks():"},{"line_number":34,"context_line":"    \"\"\"Returns all ext3/ext4 disk-partitions.\"\"\""},{"line_number":35,"context_line":"    disk_name \u003d []"},{"line_number":36,"context_line":"    f \u003d open(\"/etc/mtab\", \"r\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_a7beeafe","line":33,"updated":"2015-03-16 17:04:38.000000000","message":"wouldn\u0027t this be better off going into trove/common?","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    return disk_name"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def get_ip(adapter):"},{"line_number":45,"context_line":"    \"\"\"Returns IP address on adapter.\"\"\""},{"line_number":46,"context_line":"    ni.ifaddresses(adapter)"},{"line_number":47,"context_line":"    return ni.ifaddresses(adapter)[2][0][\u0027addr\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_e7e1c22b","line":44,"updated":"2015-03-16 17:04:38.000000000","message":"please use operating_system.get_ip_address if possible.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1c75e5da593b8c7984a72a8415496530b0171687","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    #This method encapsulates utils.execute for 2 purpose:"},{"line_number":33,"context_line":"    #1. Helps in safe testing."},{"line_number":34,"context_line":"    #2. Helps in executing commands as other user, using their environment."},{"line_number":35,"context_line":"    return utils.execute(\"sudo\", \"su\", \"-\", command_executor, \"-c\", command)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_14bf7e61","line":35,"updated":"2015-03-18 12:04:00.000000000","message":"Isn\u0027t this still the same issue that Petr raised on the previous patch set?","commit_id":"0253141bccb9a5f0d207241d27531b9ac22387c1"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"d6cdd36099cd0ff7ef7a03bd7a077e273bf113a4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"INSTALL_TIMEOUT \u003d 1000"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def shell_execute(command, command_executor\u003d\"root\"):"},{"line_number":32,"context_line":"    #This method encapsulates utils.execute for 2 purpose:"},{"line_number":33,"context_line":"    #1. Helps in safe testing."},{"line_number":34,"context_line":"    #2. Helps in executing commands as other user, using their environment."}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_0944b219","line":31,"updated":"2015-03-18 18:40:04.000000000","message":"Just a little suggestion. Maybe note that \u0027su\u0027 is required for it to work. Otherwise one day, somebody may come along and refactor it...","commit_id":"1c3e2f21ed60244649a747113fa30ce8ec831f7f"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"ab66bbe9858758d71845376bfd3d874e48fb4d46","unresolved":false,"context_lines":[{"line_number":28,"context_line":"INSTALL_TIMEOUT \u003d 1000"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def shell_execute(command, command_executor\u003d\"root\"):"},{"line_number":32,"context_line":"    #This method encapsulates utils.execute for 2 purpose:"},{"line_number":33,"context_line":"    #1. Helps in safe testing."},{"line_number":34,"context_line":"    #2. Helps in executing commands as other user, using their environment."}],"source_content_type":"text/x-python","patch_set":13,"id":"9a80dd14_dc56d605","line":31,"in_reply_to":"9a80dd14_0944b219","updated":"2015-03-18 18:59:10.000000000","message":"Done","commit_id":"1c3e2f21ed60244649a747113fa30ce8ec831f7f"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"586fec02416b260167eea7c27ce03859751340e1","unresolved":false,"context_lines":[{"line_number":25,"context_line":"SET_RESTART_POLICY \u003d (\"/opt/vertica/bin/adminTools -t set_restart_policy \""},{"line_number":26,"context_line":"                      \"-d %s -p \u0027%s\u0027\")"},{"line_number":27,"context_line":"VERTICA_CONF \u003d \"/etc/vertica.cnf\""},{"line_number":28,"context_line":"INSTALL_TIMEOUT \u003d 1000"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def shell_execute(command, command_executor\u003d\"root\"):"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a80dd14_424d7871","line":28,"updated":"2015-03-19 14:21:21.000000000","message":"We should figure out how we want to handle these timeouts.","commit_id":"a289706e190283ca254614349b7ea41effb9543a"}],"trove/guestagent/volume.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                          readahead_size, self.device_path,"},{"line_number":165,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":166,"context_line":"        except ProcessExecutionError:"},{"line_number":167,"context_line":"            LOG.exception(_(\"Error setting readhead size.\"))"},{"line_number":168,"context_line":"            raise GuestError(_(\"Error setting readhead size: %s.\") %"},{"line_number":169,"context_line":"                             self.device_path)"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_47244e60","line":167,"updated":"2015-03-16 17:04:38.000000000","message":"how about showing the size and the device here?","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                          run_as_root\u003dTrue, root_helper\u003d\"sudo\")"},{"line_number":166,"context_line":"        except ProcessExecutionError:"},{"line_number":167,"context_line":"            LOG.exception(_(\"Error setting readhead size.\"))"},{"line_number":168,"context_line":"            raise GuestError(_(\"Error setting readhead size: %s.\") %"},{"line_number":169,"context_line":"                             self.device_path)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_272f5a40","line":168,"updated":"2015-03-16 17:04:38.000000000","message":"and here (device)","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"}],"trove/templates/vertica/config.template":[{"author":{"_account_id":9782,"name":"Morgan Jones","email":"morgan@tesora.com","username":"vgnbkr"},"change_message_id":"5de85595211bdb5a4204dcccb267155d5d42928d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"9a80dd14_9834a14b","line":1,"updated":"2015-03-17 19:57:51.000000000","message":"Is there a reason that the template mechanism isn\u0027t being used to configure the /etc/vertica.cnf file mentioned in system.py?  Is password the only possible entry for this file?","commit_id":"73702e35ffcfdd4b089c26b634e7228b03f93aef"}],"trove/tests/unittests/guestagent/test_dbaas.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"    def tearDown(self):"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"        super(VerticaAppStatusTest, self).tearDown()"},{"line_number":1957,"context_line":"        utils.execute \u003d self.utils_execute"},{"line_number":1958,"context_line":"        InstanceServiceStatus.find_by(instance_id\u003dself.FAKE_ID).delete()"},{"line_number":1959,"context_line":""},{"line_number":1960,"context_line":"    def test_get_actual_db_status(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_47b28e07","line":1957,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":1959,"context_line":""},{"line_number":1960,"context_line":"    def test_get_actual_db_status(self):"},{"line_number":1961,"context_line":""},{"line_number":1962,"context_line":"        utils.execute \u003d Mock(return_value\u003d[\u0027db_srvr\u0027, None])"},{"line_number":1963,"context_line":"        self.verticaAppStatus \u003d VerticaAppStatus()"},{"line_number":1964,"context_line":"        status \u003d self.verticaAppStatus._get_actual_db_status()"},{"line_number":1965,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.RUNNING, status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_079fb666","line":1962,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":1965,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.RUNNING, status)"},{"line_number":1966,"context_line":""},{"line_number":1967,"context_line":"    def test_get_actual_db_status_shutdown(self):"},{"line_number":1968,"context_line":"        utils.execute \u003d Mock(side_effect\u003d[[\u0027\u0027, None], [\u0027db_srvr\u0027, None]])"},{"line_number":1969,"context_line":"        self.verticaAppStatus \u003d VerticaAppStatus()"},{"line_number":1970,"context_line":"        status \u003d self.verticaAppStatus._get_actual_db_status()"},{"line_number":1971,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.SHUTDOWN, status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_27a4bab8","line":1968,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":1971,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.SHUTDOWN, status)"},{"line_number":1972,"context_line":""},{"line_number":1973,"context_line":"    def test_get_actual_db_status_error_crashed(self):"},{"line_number":1974,"context_line":"        utils.execute \u003d Mock(side_effect\u003dProcessExecutionError())"},{"line_number":1975,"context_line":"        self.verticaAppStatus \u003d VerticaAppStatus()"},{"line_number":1976,"context_line":"        status \u003d self.verticaAppStatus._get_actual_db_status()"},{"line_number":1977,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.CRASHED, status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_47a9ae8f","line":1974,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":1977,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.CRASHED, status)"},{"line_number":1978,"context_line":""},{"line_number":1979,"context_line":"    def test_get_actual_db_status_error_unknown(self):"},{"line_number":1980,"context_line":"        utils.execute \u003d Mock(return_value\u003d[\u0027\u0027, None])"},{"line_number":1981,"context_line":"        self.verticaAppStatus \u003d VerticaAppStatus()"},{"line_number":1982,"context_line":"        status \u003d self.verticaAppStatus._get_actual_db_status()"},{"line_number":1983,"context_line":"        self.assertEqual(rd_instance.ServiceStatuses.UNKNOWN, status)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_a78fca2d","line":1980,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2008,"context_line":"    def tearDown(self):"},{"line_number":2009,"context_line":"        super(VerticaAppTest, self).tearDown()"},{"line_number":2010,"context_line":"        self.app \u003d None"},{"line_number":2011,"context_line":"        utils.execute_with_timeout \u003d self.utils_execute_with_timeout"},{"line_number":2012,"context_line":"        utils.execute \u003d self.utils_execute"},{"line_number":2013,"context_line":"        os.unlink \u003d self.orig_unlink"},{"line_number":2014,"context_line":"        subprocess.call \u003d self.sp_call"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_4780cef7","line":2011,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2009,"context_line":"        super(VerticaAppTest, self).tearDown()"},{"line_number":2010,"context_line":"        self.app \u003d None"},{"line_number":2011,"context_line":"        utils.execute_with_timeout \u003d self.utils_execute_with_timeout"},{"line_number":2012,"context_line":"        utils.execute \u003d self.utils_execute"},{"line_number":2013,"context_line":"        os.unlink \u003d self.orig_unlink"},{"line_number":2014,"context_line":"        subprocess.call \u003d self.sp_call"},{"line_number":2015,"context_line":"        subprocess.check_call \u003d self.sp_check_call"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_6785d206","line":2012,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2010,"context_line":"        self.app \u003d None"},{"line_number":2011,"context_line":"        utils.execute_with_timeout \u003d self.utils_execute_with_timeout"},{"line_number":2012,"context_line":"        utils.execute \u003d self.utils_execute"},{"line_number":2013,"context_line":"        os.unlink \u003d self.orig_unlink"},{"line_number":2014,"context_line":"        subprocess.call \u003d self.sp_call"},{"line_number":2015,"context_line":"        subprocess.check_call \u003d self.sp_check_call"},{"line_number":2016,"context_line":"        VolumeDevice.set_readahead_size \u003d self.setread"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_8779e632","line":2013,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2011,"context_line":"        utils.execute_with_timeout \u003d self.utils_execute_with_timeout"},{"line_number":2012,"context_line":"        utils.execute \u003d self.utils_execute"},{"line_number":2013,"context_line":"        os.unlink \u003d self.orig_unlink"},{"line_number":2014,"context_line":"        subprocess.call \u003d self.sp_call"},{"line_number":2015,"context_line":"        subprocess.check_call \u003d self.sp_check_call"},{"line_number":2016,"context_line":"        VolumeDevice.set_readahead_size \u003d self.setread"},{"line_number":2017,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_c773de4c","line":2014,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2012,"context_line":"        utils.execute \u003d self.utils_execute"},{"line_number":2013,"context_line":"        os.unlink \u003d self.orig_unlink"},{"line_number":2014,"context_line":"        subprocess.call \u003d self.sp_call"},{"line_number":2015,"context_line":"        subprocess.check_call \u003d self.sp_check_call"},{"line_number":2016,"context_line":"        VolumeDevice.set_readahead_size \u003d self.setread"},{"line_number":2017,"context_line":""},{"line_number":2018,"context_line":"    def test_install_if_needed_installed(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_e770e242","line":2015,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2041,"context_line":"            \"none /run/shm tmpfs rw,nosuid,nodev 0 0\\n\""},{"line_number":2042,"context_line":"            \"/dev/vdb /mnt ext4 rw,_netdev 0 0\\n\")"},{"line_number":2043,"context_line":"        mocked_open_function \u003d mock_open(read_data\u003dsample_mtab)"},{"line_number":2044,"context_line":"        with patch(\u0027__builtin__.open\u0027, mocked_open_function):"},{"line_number":2045,"context_line":"            with open(\u0027/etc/mtab\u0027):"},{"line_number":2046,"context_line":"                self.app.prepare_for_install_vertica()"},{"line_number":2047,"context_line":"                self.assertEqual(VolumeDevice.set_readahead_size.call_count, 2)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_a79d0a5a","line":2044,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2049,"context_line":""},{"line_number":2050,"context_line":"    def test_install_vertica(self):"},{"line_number":2051,"context_line":"        mocked_open_function \u003d mock_open()"},{"line_number":2052,"context_line":"        with patch(\u0027__builtin__.open\u0027, mocked_open_function):"},{"line_number":2053,"context_line":"            with open(\u0027/tmp/vertica.tmp\u0027):"},{"line_number":2054,"context_line":"                self.app.install_vertica()"},{"line_number":2055,"context_line":"                self.assertEqual(subprocess.check_call.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_e7a702a6","line":2052,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2056,"context_line":"                self.assertEqual(utils.execute_with_timeout.call_count, 1)"},{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"    def test_create_db(self):"},{"line_number":2059,"context_line":"        utils.execute_with_timeout \u003d Mock(return_value\u003d[\u0027some_password\u0027, None])"},{"line_number":2060,"context_line":"        self.app.create_db()"},{"line_number":2061,"context_line":"        self.assertEqual(subprocess.check_call.call_count, 1)"},{"line_number":2062,"context_line":"        self.assertEqual(utils.execute_with_timeout.call_count, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_07b416d3","line":2059,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2078,"context_line":"    def test_start_db(self):"},{"line_number":2079,"context_line":"        mock_status \u003d MagicMock()"},{"line_number":2080,"context_line":"        app \u003d VerticaApp(mock_status)"},{"line_number":2081,"context_line":"        with patch.object(utils, \u0027execute_with_timeout\u0027,"},{"line_number":2082,"context_line":"                          return_value\u003d[\u0027some_password\u0027, None]):"},{"line_number":2083,"context_line":"                mock_status.wait_for_real_status_to_change_to \u003d MagicMock("},{"line_number":2084,"context_line":"                    return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_c7c11e31","line":2081,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2093,"context_line":"    def test_start_db_failure(self):"},{"line_number":2094,"context_line":"        mock_status \u003d MagicMock()"},{"line_number":2095,"context_line":"        app \u003d VerticaApp(mock_status)"},{"line_number":2096,"context_line":"        with patch.object(utils, \u0027execute_with_timeout\u0027,"},{"line_number":2097,"context_line":"                          return_value\u003d[\u0027some_password\u0027, None]):"},{"line_number":2098,"context_line":"                mock_status.wait_for_real_status_to_change_to \u003d MagicMock("},{"line_number":2099,"context_line":"                    return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_e7be22ae","line":2096,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2104,"context_line":"    def test_stop_db(self):"},{"line_number":2105,"context_line":"        mock_status \u003d MagicMock()"},{"line_number":2106,"context_line":"        app \u003d VerticaApp(mock_status)"},{"line_number":2107,"context_line":"        with patch.object(utils, \u0027execute_with_timeout\u0027,"},{"line_number":2108,"context_line":"                          return_value\u003d[\u0027some_password\u0027, None]):"},{"line_number":2109,"context_line":"                mock_status.wait_for_real_status_to_change_to \u003d MagicMock("},{"line_number":2110,"context_line":"                    return_value\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_07db3622","line":2107,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2119,"context_line":"    def test_stop_db_failure(self):"},{"line_number":2120,"context_line":"        mock_status \u003d MagicMock()"},{"line_number":2121,"context_line":"        app \u003d VerticaApp(mock_status)"},{"line_number":2122,"context_line":"        with patch.object(utils, \u0027execute_with_timeout\u0027,"},{"line_number":2123,"context_line":"                          return_value\u003d[\u0027some_password\u0027, None]):"},{"line_number":2124,"context_line":"                mock_status.wait_for_real_status_to_change_to \u003d MagicMock("},{"line_number":2125,"context_line":"                    return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_47e52edb","line":2122,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2129,"context_line":""},{"line_number":2130,"context_line":"    def test_error_in_write_config(self):"},{"line_number":2131,"context_line":"        configuration \u003d {\u0027config_contents\u0027: \u0027some junk\u0027}"},{"line_number":2132,"context_line":"        dbaas.utils.execute_with_timeout \u003d ("},{"line_number":2133,"context_line":"            Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027)))"},{"line_number":2134,"context_line":""},{"line_number":2135,"context_line":"        mocked_open_function \u003d mock_open()"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_67ea32ae","line":2132,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2142,"context_line":""},{"line_number":2143,"context_line":"    def test_error_in_write_config_verify_unlink(self):"},{"line_number":2144,"context_line":"        configuration \u003d {\u0027config_contents\u0027: \u0027some junk\u0027}"},{"line_number":2145,"context_line":"        dbaas.utils.execute_with_timeout \u003d ("},{"line_number":2146,"context_line":"            Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027)))"},{"line_number":2147,"context_line":"        mocked_open_function \u003d mock_open()"},{"line_number":2148,"context_line":"        with patch(\u0027__builtin__.open\u0027, mocked_open_function):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_a7cb4a49","line":2145,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":2145,"context_line":"        dbaas.utils.execute_with_timeout \u003d ("},{"line_number":2146,"context_line":"            Mock(side_effect\u003dProcessExecutionError(\u0027something\u0027)))"},{"line_number":2147,"context_line":"        mocked_open_function \u003d mock_open()"},{"line_number":2148,"context_line":"        with patch(\u0027__builtin__.open\u0027, mocked_open_function):"},{"line_number":2149,"context_line":"            with open(\u0027/tmp/vertica.tmp\u0027):"},{"line_number":2150,"context_line":"                self.assertRaises(ProcessExecutionError,"},{"line_number":2151,"context_line":"                                  self.app.write_config,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_c7d83e21","line":2148,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"}],"trove/tests/unittests/guestagent/test_vertica_manager.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"2630e2a7992221398b057466230300f2e2e34840","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                         backup_id\u003dNone,"},{"line_number":71,"context_line":"                         overrides\u003dNone, is_mounted\u003dFalse):"},{"line_number":72,"context_line":"        # covering all outcomes is starting to cause trouble here"},{"line_number":73,"context_line":"        COUNT \u003d 1 if device_path else 0"},{"line_number":74,"context_line":"        if not backup_id:"},{"line_number":75,"context_line":"            backup_info \u003d {\u0027id\u0027: backup_id,"},{"line_number":76,"context_line":"                           \u0027location\u0027: \u0027fake-location\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a80dd14_3f5a3ff2","line":73,"updated":"2015-03-13 20:20:36.000000000","message":"why caps?  Maybe call it \u0027expected_vol_count\u0027 ?","commit_id":"f575a45d392283f292d0b41fe6311ec4044a73e1"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        volume.VolumeDevice.unmount \u003d self.origin_unmount"},{"line_number":51,"context_line":"        volume.VolumeDevice.mount_points \u003d self.origin_mount_points"},{"line_number":52,"context_line":"        volume.VolumeDevice.set_readahead_size \u003d self.origin_set_read"},{"line_number":53,"context_line":"        os.path.exists \u003d self.origin_os_path_exists"},{"line_number":54,"context_line":"        VerticaApp.create_db \u003d self.origin_create_db"},{"line_number":55,"context_line":"        VerticaApp.install_vertica \u003d self.origin_install_vertica"},{"line_number":56,"context_line":"        VerticaApp.stop_db \u003d self.origin_stop_db"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_c7ef5eb0","line":53,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        self.manager.appStatus \u003d mock_status"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        mock_status.begin_install \u003d MagicMock(return_value\u003dNone)"},{"line_number":85,"context_line":"        os.path.exists \u003d MagicMock(return_value\u003dTrue)"},{"line_number":86,"context_line":"        volume.VolumeDevice.format \u003d MagicMock(return_value\u003dNone)"},{"line_number":87,"context_line":"        volume.VolumeDevice.migrate_data \u003d MagicMock(return_value\u003dNone)"},{"line_number":88,"context_line":"        volume.VolumeDevice.mount \u003d MagicMock(return_value\u003dNone)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_072976f2","line":85,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"}],"trove/tests/unittests/guestagent/test_volume.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        origin_check_device_exists \u003d self.volumeDevice._check_device_exists"},{"line_number":150,"context_line":"        self.volumeDevice._check_device_exists \u003d MagicMock()"},{"line_number":151,"context_line":"        origin_execute \u003d utils.execute"},{"line_number":152,"context_line":"        utils.execute \u003d Mock()"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        self.volumeDevice.set_readahead_size(2048)"},{"line_number":155,"context_line":"        self.assertEqual(1, self.volumeDevice._check_device_exists.call_count)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_c7467ec0","line":152,"updated":"2015-03-16 17:04:38.000000000","message":"This is not safe","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"3f522ec6c788e18bfff91dae6df49c79a62f0ed3","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self.assertEqual(1, utils.execute.call_count)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"        self.volumeDevice._check_device_exists \u003d origin_check_device_exists"},{"line_number":159,"context_line":"        utils.execute \u003d origin_execute"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class VolumeMountPointTest(testtools.TestCase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a80dd14_277cbaeb","line":159,"updated":"2015-03-16 17:04:38.000000000","message":"If an exception is thrown anywhere, this will not get run, use a setUp/tearDown if you must do this. But it is unsafe anyway and should be avoided.","commit_id":"4ae912b7d1d0efeedd38304843ace051e6be6468"}]}
