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)
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))
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))
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))
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, "", ""
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))