def test_version_report_lines(self): ''' Validate padding in versions report is correct ''' # Get a set of all version report name lenghts including padding line_lengths = set([ len(line.split(':')[0]) for line in list(versions_report())[4:] if line != ' ' and line != 'System Versions:' ]) # Check that they are all the same size (only one element in the set) assert len(line_lengths) == 1
def test_version_report_lines(): """ Validate padding in versions report is correct """ # Get a set of all version report name lenghts including padding line_lengths = { len(line.split(":")[0]) for line in list(versions_report())[4:] if line != " " and line != "System Versions:" } # Check that they are all the same size (only one element in the set) assert len(line_lengths) == 1
def test_version_report_lines(): """ Validate padding in versions report is correct """ # Get a set of all version report name lengths including padding versions_report_ret = list(versions_report()) start_looking_index = versions_report_ret.index("Dependency Versions:") + 1 line_lengths = { len(line.split(":")[0]) for line in versions_report_ret[start_looking_index:] if line != " " and line not in ("System Versions:", "Salt Extensions:") } # Check that they are all the same size (only one element in the set) assert len(line_lengths) == 1
def print_versions_report(self, file=sys.stdout): print >> file, '\n'.join(version.versions_report()) self.exit()
def __enter__(self): ''' Start a master and minion ''' self.master_opts = salt.config.master_config( os.path.join(INTEGRATION_TEST_DIR, 'files', 'conf', 'master') ) self.minion_opts = salt.config.minion_config( os.path.join(INTEGRATION_TEST_DIR, 'files', 'conf', 'minion') ) #if sys.version_info < (2, 7): # self.minion_opts['multiprocessing'] = False self.sub_minion_opts = salt.config.minion_config( os.path.join(INTEGRATION_TEST_DIR, 'files', 'conf', 'sub_minion') ) #if sys.version_info < (2, 7): # self.sub_minion_opts['multiprocessing'] = False self.smaster_opts = salt.config.master_config( os.path.join( INTEGRATION_TEST_DIR, 'files', 'conf', 'syndic_master' ) ) self.syndic_opts = salt.config.minion_config( os.path.join(INTEGRATION_TEST_DIR, 'files', 'conf', 'syndic')) self.syndic_opts['_master_conf_file'] = os.path.join( INTEGRATION_TEST_DIR, 'files/conf/master' ) # Set up config options that require internal data self.master_opts['pillar_roots'] = { 'base': [os.path.join(FILES, 'pillar', 'base')] } self.master_opts['file_roots'] = { 'base': [ os.path.join(FILES, 'file', 'base'), # Let's support runtime created files that can be used like: # salt://my-temp-file.txt TMP_STATE_TREE ] } self.master_opts['ext_pillar'] = [ {'cmd_yaml': 'cat {0}'.format( os.path.join( FILES, 'ext.yaml' ) )} ] # clean up the old files self._clean() # Point the config values to the correct temporary paths for name in ('hosts', 'aliases'): optname = '{0}.file'.format(name) optname_path = os.path.join(TMP, name) self.master_opts[optname] = optname_path self.minion_opts[optname] = optname_path self.sub_minion_opts[optname] = optname_path verify_env([os.path.join(self.master_opts['pki_dir'], 'minions'), os.path.join(self.master_opts['pki_dir'], 'minions_pre'), os.path.join(self.master_opts['pki_dir'], 'minions_rejected'), os.path.join(self.master_opts['cachedir'], 'jobs'), os.path.join(self.smaster_opts['pki_dir'], 'minions'), os.path.join(self.smaster_opts['pki_dir'], 'minions_pre'), os.path.join(self.smaster_opts['pki_dir'], 'minions_rejected'), os.path.join(self.smaster_opts['cachedir'], 'jobs'), os.path.dirname(self.master_opts['log_file']), self.minion_opts['extension_modules'], self.sub_minion_opts['extension_modules'], self.sub_minion_opts['pki_dir'], self.master_opts['sock_dir'], self.smaster_opts['sock_dir'], self.sub_minion_opts['sock_dir'], self.minion_opts['sock_dir'], TMP_STATE_TREE, TMP ], pwd.getpwuid(os.getuid()).pw_name) # Set up PATH to mockbin self._enter_mockbin() master = salt.master.Master(self.master_opts) self.master_process = multiprocessing.Process(target=master.start) self.master_process.start() minion = salt.minion.Minion(self.minion_opts) self.minion_process = multiprocessing.Process(target=minion.tune_in) self.minion_process.start() sub_minion = salt.minion.Minion(self.sub_minion_opts) self.sub_minion_process = multiprocessing.Process( target=sub_minion.tune_in ) self.sub_minion_process.start() smaster = salt.master.Master(self.smaster_opts) self.smaster_process = multiprocessing.Process(target=smaster.start) self.smaster_process.start() syndic = salt.minion.Syndic(self.syndic_opts) self.syndic_process = multiprocessing.Process(target=syndic.tune_in) self.syndic_process.start() #if os.environ.get('DUMP_SALT_CONFIG', None) is not None: # try: # import yaml # os.makedirs('/tmp/salttest/conf') # except OSError: # pass # self.master_opts['user'] = pwd.getpwuid(os.getuid()).pw_name # self.minion_opts['user'] = pwd.getpwuid(os.getuid()).pw_name # open('/tmp/salttest/conf/master', 'w').write( # yaml.dump(self.master_opts) # ) # open('/tmp/salttest/conf/minion', 'w').write( # yaml.dump(self.minion_opts) # ) # Let's create a local client to ping and sync minions self.client = salt.client.LocalClient( os.path.join(INTEGRATION_TEST_DIR, 'files', 'conf', 'master') ) self.minion_targets = set(['minion', 'sub_minion']) self.pre_setup_minions() self.setup_minions() if self.opts.sysinfo: from salt import version print_header('~~~~~~~ Versions Report ', inline=True) print('\n'.join(version.versions_report())) print_header( '~~~~~~~ Minion Grains Information ', inline=True, ) grains = self.client.cmd('minion', 'grains.items') import pprint pprint.pprint(grains['minion']) print_header('', sep='=', inline=True) try: return self finally: self.post_setup_minions()