Beispiel #1
0
 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 not err:
         out, err = system.exec_vsql_command(self._get_database_password(),
                                             system.ENABLE_FOR_USER
                                             % (username, role))
         if err:
             LOG.error(err)
Beispiel #2
0
 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 not err:
         out, err = system.exec_vsql_command(
             self._get_database_password(),
             system.ENABLE_FOR_USER % (username, role))
         if err:
             LOG.error(err)
Beispiel #3
0
 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()
Beispiel #4
0
 def enable_root(self, root_password=None):
     """Resets the root password."""
     LOG.info("Enabling root.")
     user = models.DatastoreUser.root(password=root_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()
Beispiel #5
0
 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 %(func)s library as %(lib)s.", {
                 'func': func_name,
                 'lib': 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 %(func)s as path %(path)s not "
                   "found."), {
                       "func": func_name,
                       "path": path
                   })
     LOG.info(_("The following UDL functions are available for use: %s"),
              loaded_udls)
Beispiel #6
0
 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)
Beispiel #7
0
 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)
Beispiel #8
0
 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)
Beispiel #9
0
        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
Beispiel #10
0
        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
Beispiel #11
0
 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)
Beispiel #12
0
 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)
Beispiel #13
0
 def _create_user(self, username, password, role):
     """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 not err:
         self._grant_role(username, role)
     if err:
         LOG.error(err)
         raise RuntimeError(_("Failed to create user %s.") % username)
Beispiel #14
0
 def _create_user(self, username, password, role):
     """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 not err:
         self._grant_role(username, role)
     if err:
         LOG.error(err)
         raise RuntimeError(_("Failed to create user %s.") % username)
Beispiel #15
0
    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."))
Beispiel #16
0
    def _apply_config(self, config):
        try:
            db_password = self._get_database_password()
            for k, v in config.items():
                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.")
Beispiel #17
0
 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:
                 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()