コード例 #1
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()
コード例 #2
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()
コード例 #3
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)
コード例 #4
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
コード例 #5
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)
コード例 #6
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
コード例 #7
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)
コード例 #8
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)
コード例 #9
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)
コード例 #10
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)
コード例 #11
0
 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)
コード例 #12
0
 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)
コード例 #13
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."))
コード例 #14
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."))