def enable_root(self, root_password=None): """Resets the root password.""" LOG.info(_LI("Enabling root.")) user = models.RootUser() user.name = "root" user.host = "%" user.password = root_password or utils.generate_random_password() if not self.is_root_enabled(): self._create_user(user.name, user.password, 'pseudosuperuser') else: LOG.debug("Updating %s password." % user.name) try: out, err = system.exec_vsql_command( self._get_database_password(), system.ALTER_USER_PASSWORD % (user.name, user.password)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to update %s " "password.") % user.name) except exception.ProcessExecutionError: LOG.error(_("Failed to update %s password.") % user.name) raise RuntimeError(_("Failed to update %s password.") % user.name) return user.serialize()
def enable_root(self, root_password=None): """Resets the root password.""" LOG.info(_LI("Enabling root.")) user = models.RootUser() user.name = "root" user.host = "%" user.password = root_password or utils.generate_random_password() if not self.is_root_enabled(): self._create_user(user.name, user.password, 'pseudosuperuser') else: LOG.debug("Updating %s password." % user.name) try: out, err = system.exec_vsql_command( self._get_database_password(), system.ALTER_USER_PASSWORD % (user.name, user.password)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError( _("Failed to update %s " "password.") % user.name) except exception.ProcessExecutionError: LOG.error(_("Failed to update %s password.") % user.name) raise RuntimeError( _("Failed to update %s password.") % user.name) return user.serialize()
def _grant_role(self, username, role): """Grants a role to the user on the schema.""" out, err = system.exec_vsql_command(self._get_database_password(), system.GRANT_TO_USER % (role, username)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to grant role %(r)s to user " "%(u)s.") % {'r': role, 'u': username}) out, err = system.exec_vsql_command(self._get_database_password(), system.ENABLE_FOR_USER % (username, role)) if err: LOG.warning(err)
def _wait_for_node_status(): out, err = system.exec_vsql_command(self._get_database_password(), system.NODE_STATUS % status) LOG.debug("Polled vertica node states: %s" % out) if err: LOG.error(err) raise RuntimeError(_("Failed to query for root user.")) return "0 rows" in out
def mark_design_ksafe(self, k): """Wrapper for mark_design_ksafe function for setting k-safety """ LOG.info(_("Setting Vertica k-safety to %s") % str(k)) out, err = system.exec_vsql_command(self._get_database_password(), system.MARK_DESIGN_KSAFE % k) # Only fail if we get an ERROR as opposed to a warning complaining # about setting k = 0 if "ERROR" in err: LOG.error(err) raise RuntimeError(_("Failed to set k-safety level %s.") % k)
def add_udls(self): """Load the user defined load libraries into the database.""" LOG.info(_("Adding configured user defined load libraries.")) password = self._get_database_password() loaded_udls = [] for lib in system.UDL_LIBS: func_name = lib['func_name'] lib_name = lib['lib_name'] language = lib['language'] factory = lib['factory'] path = lib['path'] if os.path.isfile(path): LOG.debug("Adding the %s library as %s." % (func_name, lib_name)) out, err = system.exec_vsql_command( password, system.CREATE_LIBRARY % (lib_name, path) ) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to create library %s.") % lib_name) out, err = system.exec_vsql_command( password, system.CREATE_SOURCE % (func_name, language, factory, lib_name) ) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to create source %s.") % func_name) loaded_udls.append(func_name) else: LOG.warning("Skipping %s as path %s not found." % (func_name, path)) LOG.info(_("The following UDL functions are available for use: %s") % loaded_udls)
def _grant_role(self, username, role): """Grants a role to the user on the schema.""" out, err = system.exec_vsql_command( self._get_database_password(), system.GRANT_TO_USER % (role, username)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError( _("Failed to grant role %(r)s to user " "%(u)s.") % { 'r': role, 'u': username }) out, err = system.exec_vsql_command( self._get_database_password(), system.ENABLE_FOR_USER % (username, role)) if err: LOG.warning(err)
def add_udls(self): """Load the user defined load libraries into the database.""" LOG.info(_("Adding configured user defined load libraries.")) password = self._get_database_password() loaded_udls = [] for lib in system.UDL_LIBS: func_name = lib['func_name'] lib_name = lib['lib_name'] language = lib['language'] factory = lib['factory'] path = lib['path'] if os.path.isfile(path): LOG.debug("Adding the %s library as %s." % (func_name, lib_name)) out, err = system.exec_vsql_command( password, system.CREATE_LIBRARY % (lib_name, path)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError( _("Failed to create library %s.") % lib_name) out, err = system.exec_vsql_command( password, system.CREATE_SOURCE % (func_name, language, factory, lib_name)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError( _("Failed to create source %s.") % func_name) loaded_udls.append(func_name) else: LOG.warning("Skipping %s as path %s not found." % (func_name, path)) LOG.info( _("The following UDL functions are available for use: %s") % loaded_udls)
def _create_user(self, username, password, role=None): """Creates a user, granting and enabling the given role for it.""" LOG.info(_("Creating user in Vertica database.")) out, err = system.exec_vsql_command( self._get_database_password(), system.CREATE_USER % (username, password)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to create user %s.") % username) if role: self._grant_role(username, role)
def _create_user(self, username, password, role=None): """Creates a user, granting and enabling the given role for it.""" LOG.info(_("Creating user in Vertica database.")) out, err = system.exec_vsql_command(self._get_database_password(), system.CREATE_USER % (username, password)) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to create user %s.") % username) if role: self._grant_role(username, role)
def _apply_config(self, config): try: db_password = self._get_database_password() for k, v in config.iteritems(): alter_db_cmd = system.ALTER_DB_CFG % (DB_NAME, str(k), str(v)) out, err = system.exec_vsql_command(db_password, alter_db_cmd) if err: if err.is_warning(): LOG.warning(err) else: LOG.error(err) raise RuntimeError(_("Failed to apply config %s") % k) except Exception: LOG.exception(_("Vertica configuration apply failed")) raise RuntimeError(_("Vertica configuration apply failed")) LOG.info(_("Vertica config apply completed."))