Ejemplo n.º 1
0
def move_store(client_dict, key):
    if store_exists(client_dict, key):
        num = 0
        name = client_dict[key]
        while sudo.path_isfile(name + '.bak.' + str(num)):
            num += 1
        sudo.copy(name, name + '.bak.' + str(num))
        sudo.unlink(name)
Ejemplo n.º 2
0
    def install_package(self,
                        name,
                        use_repos={},
                        skip_repos=set(),
                        is_upgrade=False):
        if is_upgrade or use_repos or not self._check_existence(name):
            cmd = INSTALL_CMD[self.get_logoutput()]
            copied_sources_files = []
            is_tmp_dir_created = False
            if use_repos:
                if 'base' in use_repos:
                    use_repos = set(
                        [v for k, v in use_repos.items() if k != 'base'])
                else:
                    cmd = cmd + ['-o', 'Dir::Etc::SourceList=%s' % EMPTY_FILE]
                    use_repos = set(use_repos.values())

                if use_repos:
                    is_tmp_dir_created = True
                    apt_sources_list_tmp_dir = tempfile.mkdtemp(
                        suffix="-ambari-apt-sources-d")
                    Logger.info("Temporary sources directory was created: %s" %
                                apt_sources_list_tmp_dir)

                    for repo in use_repos:
                        new_sources_file = os.path.join(
                            apt_sources_list_tmp_dir, repo + '.list')
                        Logger.info(
                            "Temporary sources file will be copied: %s" %
                            new_sources_file)
                        sudo.copy(
                            os.path.join(APT_SOURCES_LIST_DIR, repo + '.list'),
                            new_sources_file)
                        copied_sources_files.append(new_sources_file)
                    cmd = cmd + [
                        '-o',
                        'Dir::Etc::SourceParts=%s' % apt_sources_list_tmp_dir
                    ]

            cmd = cmd + [name]
            Logger.info("Installing package %s ('%s')" %
                        (name, string_cmd_from_args_list(cmd)))
            self.checked_call_with_retries(cmd,
                                           sudo=True,
                                           env=INSTALL_CMD_ENV,
                                           logoutput=self.get_logoutput())

            if is_tmp_dir_created:
                for temporary_sources_file in copied_sources_files:
                    Logger.info("Removing temporary sources file: %s" %
                                temporary_sources_file)
                    os.remove(temporary_sources_file)
                Logger.info("Removing temporary sources directory: %s" %
                            apt_sources_list_tmp_dir)
                os.rmdir(apt_sources_list_tmp_dir)
        else:
            Logger.info("Skipping installation of existing package %s" %
                        (name))
Ejemplo n.º 3
0
  def install_package(self, name, use_repos=[], skip_repos=[], is_upgrade=False):
    if is_upgrade or use_repos or not self._check_existence(name):
      cmd = INSTALL_CMD[self.get_logoutput()]
      copied_sources_files = []
      is_tmp_dir_created = False
      if use_repos:
        is_tmp_dir_created = True
        apt_sources_list_tmp_dir = tempfile.mkdtemp(suffix="-ambari-apt-sources-d")
        Logger.info("Temporal sources directory was created: %s" % apt_sources_list_tmp_dir)
        if 'base' not in use_repos:
          cmd = cmd + ['-o', 'Dir::Etc::SourceList=%s' % EMPTY_FILE]
        for repo in use_repos:
          if repo != 'base':
            new_sources_file = os.path.join(apt_sources_list_tmp_dir, repo + '.list')
            Logger.info("Temporal sources file will be copied: %s" % new_sources_file)
            sudo.copy(os.path.join(APT_SOURCES_LIST_DIR, repo + '.list'), new_sources_file)
            copied_sources_files.append(new_sources_file)
        cmd = cmd + ['-o', 'Dir::Etc::SourceParts=%s' % apt_sources_list_tmp_dir]

      cmd = cmd + [name]
      Logger.info("Installing package %s ('%s')" % (name, string_cmd_from_args_list(cmd)))
      code, out = self.call_with_retries(cmd, sudo=True, env=INSTALL_CMD_ENV, logoutput=self.get_logoutput())
      
      if self.is_locked_output(out):
        err_msg = Logger.filter_text("Execution of '%s' returned %d. %s" % (cmd, code, out))
        raise Fail(err_msg)
      
      # apt-get update wasn't done too long maybe?
      if code:
        Logger.info("Execution of '%s' returned %d. %s" % (cmd, code, out))
        Logger.info("Failed to install package %s. Executing `%s`" % (name, string_cmd_from_args_list(REPO_UPDATE_CMD)))
        code, out = self.call_with_retries(REPO_UPDATE_CMD, sudo=True, logoutput=self.get_logoutput())
        
        if code:
          Logger.info("Execution of '%s' returned %d. %s" % (REPO_UPDATE_CMD, code, out))
          
        Logger.info("Retrying to install package %s" % (name))
        self.checked_call_with_retries(cmd, sudo=True, env=INSTALL_CMD_ENV, logoutput=self.get_logoutput())

      if is_tmp_dir_created:
        for temporal_sources_file in copied_sources_files:
          Logger.info("Removing temporal sources file: %s" % temporal_sources_file)
          os.remove(temporal_sources_file)
        Logger.info("Removing temporal sources directory: %s" % apt_sources_list_tmp_dir)
        os.rmdir(apt_sources_list_tmp_dir)
    else:
      Logger.info("Skipping installation of existing package %s" % (name))
Ejemplo n.º 4
0
  def install_package(self, name, use_repos=[], skip_repos=[], is_upgrade=False):
    if is_upgrade or use_repos or not self._check_existence(name):
      cmd = INSTALL_CMD[self.get_logoutput()]
      copied_sources_files = []
      is_tmp_dir_created = False
      if use_repos:
        is_tmp_dir_created = True
        apt_sources_list_tmp_dir = tempfile.mkdtemp(suffix="-ambari-apt-sources-d")
        Logger.info("Temporal sources directory was created: %s" % apt_sources_list_tmp_dir)
        if 'base' not in use_repos:
          cmd = cmd + ['-o', 'Dir::Etc::SourceList=%s' % EMPTY_FILE]
        for repo in use_repos:
          if repo != 'base':
            new_sources_file = os.path.join(apt_sources_list_tmp_dir, repo + '.list')
            Logger.info("Temporal sources file will be copied: %s" % new_sources_file)
            sudo.copy(os.path.join(APT_SOURCES_LIST_DIR, repo + '.list'), new_sources_file)
            copied_sources_files.append(new_sources_file)
        cmd = cmd + ['-o', 'Dir::Etc::SourceParts=%s' % apt_sources_list_tmp_dir]

      cmd = cmd + [name]
      Logger.info("Installing package %s ('%s')" % (name, string_cmd_from_args_list(cmd)))
      code, out = self.call_until_not_locked(cmd, sudo=True, env=INSTALL_CMD_ENV, logoutput=self.get_logoutput())
      
      if self.is_locked_output(out):
        err_msg = Logger.filter_text("Execution of '%s' returned %d. %s" % (cmd, code, out))
        raise Fail(err_msg)
      
      # apt-get update wasn't done too long maybe?
      if code:
        Logger.info("Execution of '%s' returned %d. %s" % (cmd, code, out))
        Logger.info("Failed to install package %s. Executing `%s`" % (name, string_cmd_from_args_list(REPO_UPDATE_CMD)))
        code, out = self.call_until_not_locked(REPO_UPDATE_CMD, sudo=True, logoutput=self.get_logoutput())
        
        if code:
          Logger.info("Execution of '%s' returned %d. %s" % (REPO_UPDATE_CMD, code, out))
          
        Logger.info("Retrying to install package %s" % (name))
        self.checked_call_until_not_locked(cmd, sudo=True, env=INSTALL_CMD_ENV, logoutput=self.get_logoutput())

      if is_tmp_dir_created:
        for temporal_sources_file in copied_sources_files:
          Logger.info("Removing temporal sources file: %s" % temporal_sources_file)
          os.remove(temporal_sources_file)
        Logger.info("Removing temporal sources directory: %s" % apt_sources_list_tmp_dir)
        os.rmdir(apt_sources_list_tmp_dir)
    else:
      Logger.info("Skipping installation of existing package %s" % (name))
Ejemplo n.º 5
0
 def _configure_postgres(self):
   if os.path.isfile(PGConfig.PG_HBA_CONF_FILE):
     if not os.path.isfile(PGConfig.PG_HBA_CONF_FILE_BACKUP):
       sudo.copy(PGConfig.PG_HBA_CONF_FILE, PGConfig.PG_HBA_CONF_FILE_BACKUP)
     else:
       #Postgres has been configured before, must not override backup
       print "Backup for pg_hba found, reconfiguration not required"
       return 0, "", ""
   PGConfig._configure_pg_hba_postgres_user()
   PGConfig._configure_pg_hba_ambaridb_users(PGConfig.PG_HBA_CONF_FILE, self.database_username)
   sudo.chmod(PGConfig.PG_HBA_CONF_FILE, 0644)
   PGConfig._configure_postgresql_conf()
   #restart postgresql if already running
   pg_status, retcode, out, err = PGConfig._get_postgre_status()
   if pg_status == PGConfig.PG_STATUS_RUNNING:
     retcode, out, err = PGConfig._restart_postgres()
     return retcode, out, err
   return 0, "", ""
Ejemplo n.º 6
0
    def install_package(self, name, context):
        """
    Install package

    :type name str
    :type context ambari_commons.shell.RepoCallContext
    """
        from resource_management.core import sudo

        apt_sources_list_tmp_dir = None

        if context.is_upgrade or context.use_repos or not self._check_existence(
                name):
            cmd = self.properties.install_cmd[context.log_output]
            copied_sources_files = []
            is_tmp_dir_created = False
            if context.use_repos:
                if 'base' in context.use_repos:
                    use_repos = set([
                        v for k, v in context.use_repos.items() if k != 'base'
                    ])
                else:
                    cmd = cmd + [
                        '-o', 'Dir::Etc::SourceList={0}'.format(
                            self.properties.empty_file)
                    ]
                    use_repos = set(context.use_repos.values())

                if use_repos:
                    is_tmp_dir_created = True
                    apt_sources_list_tmp_dir = tempfile.mkdtemp(
                        suffix="-ambari-apt-sources-d")
                    Logger.info("Temporary sources directory was created: %s" %
                                apt_sources_list_tmp_dir)

                    for repo in use_repos:
                        new_sources_file = os.path.join(
                            apt_sources_list_tmp_dir, repo + '.list')
                        Logger.info(
                            "Temporary sources file will be copied: {0}".
                            format(new_sources_file))
                        sudo.copy(
                            os.path.join(
                                self.properties.repo_definition_location,
                                repo + '.list'), new_sources_file)
                        copied_sources_files.append(new_sources_file)
                    cmd = cmd + [
                        '-o', 'Dir::Etc::SourceParts='.format(
                            apt_sources_list_tmp_dir)
                    ]

            cmd = cmd + [name]
            Logger.info("Installing package {0} ('{1}')".format(
                name, shell.string_cmd_from_args_list(cmd)))
            shell.repository_manager_executor(
                cmd,
                self.properties,
                context,
                env=self.properties.install_cmd_env)

            if is_tmp_dir_created:
                for temporary_sources_file in copied_sources_files:
                    Logger.info("Removing temporary sources file: {0}".format(
                        temporary_sources_file))
                    os.remove(temporary_sources_file)
                if apt_sources_list_tmp_dir:
                    Logger.info(
                        "Removing temporary sources directory: {0}".format(
                            apt_sources_list_tmp_dir))
                    os.rmdir(apt_sources_list_tmp_dir)
        else:
            Logger.info(
                "Skipping installation of existing package {0}".format(name))