def test_situation_open(): z = JESAdapter(hostname, username, password) job = z.submit_jcl(path_relative=True, path='resources/jobs/wait.jcl', params={ '{seconds}': '90', '{job}': WAIT_JOB }, wait=False) em = u.logon_beacon(hostname, applid, username, password) try: d = em.display open_situation = False cur_try = 0 while not open_situation and cur_try < 10: time.sleep(10) if d.find('Open') is None: d.find('Navigate')('').enter() d('c').enter() d.find('Navigate')('').enter() d('e').enter() d.find('+ z/OS')('', key=keys.ENTER) if d.find(regex=f'\+(\s+)RSPLEXL4:{hostname.upper()}:MVSSYS'): d.find(regex=f'\+(\s+)RSPLEXL4:{hostname.upper()}:MVSSYS')( '', key=keys.ENTER) sit_already_there = d.find(regex=f'\+(\s+){SIT_NAME}') if sit_already_there: # "click" to open to see the state sit_already_there('', key=keys.ENTER) else: open_situation = True cur_try += 1 assert d.find('Open') finally: u.close_beacon(em)
def test_sit_can_be_true(): sit = 'IVT_M5_Can_Be_True' assert sit_is_started(sit) z = JESAdapter(rtes[rte]['hostname'], username, password) job = z.submit_jcl(path_relative=True, path='resources/jobs/wait.jcl', params={'{seconds}': '60', '{job}': 'IVTCANTR'}, wait=False) time.sleep(50) assert sit_is_raised(sit) time.sleep(65) assert sit_is_reset(sit)
def get_zosmf_jes(source, zosmf_cache=dict()): if source in zosmf_cache: zds = zosmf_cache.get(source) else: zds = JESAdapter(f'{source}.rocketsoftware.com', username, password) zosmf_cache[source] = zds return zds
def test_jcl_submit(): z = JESAdapter(host=hostname, username=username, password=password) mydict = {'<UNAME>': username} jcl_job = z.submit_jcl(path=os.path.join('resources', 'JCL', 'WHO'), path_relative=True, params=mydict) result = jcl_job.spool() assert 'J E S 2 J O B L O G' in result match = re.search('.*-\sReturn Code\s+(\d+).*Total\sCPU\sTime.*', result) assert match is not None, 'no return code found' return_code = match.groups()[0] assert return_code == '00', 'non-zero return code' logger.info('-------------------------------') logger.info(f'return_code: {return_code}')
def set_security(hostname, username, password, rte_hlq, rte_name, omegamon, members_dir, jobs_to_submit: Tuple, stc_job: str = None, delay=30): # stop the server z1 = JESAdapter(hostname, username, password) if stc_job is not None: z1.submit_jcl( text=stop_start.replace('#CMD#', 'P').replace('#JOB#', stc_job)) z = zOSMFConnector(hostname, username, password) source_dir = os.path.join(root, 'resources', 'members', rte_name, members_dir, omegamon) dest_hlq = rte_hlq for dir_name in listdir(source_dir): dir_path = os.path.join(source_dir, dir_name) if os.path.isdir(dir_path): for member in listdir(dir_path): member_in_dataset = open(os.path.join(dir_path, member), 'r') text_in_member = member_in_dataset.read() proclib = 'ROCKET.USER.PROCLIB' clist = 'ITM.ITE.QA.CLIST' if dir_name.upper() == 'PROCLIB': print(f'uploading to {proclib}({member})') z.write_ds(dataset=f'{proclib}({member})', data=text_in_member) elif dir_name.upper() == 'CLIST': print(f'uploading to {clist}({member})') z.write_ds(dataset=f'{clist}({member})', data=text_in_member) else: print(f'uploading to {dest_hlq}.{dir_name}({member})') z.write_ds(dataset=f'{dest_hlq}.{dir_name}({member})', data=text_in_member) member_in_dataset.close() for job in jobs_to_submit: z1.submit_jcl(f'{dest_hlq}.RKANSAMU({job})') if stc_job is not None: wait_job_to_finish(hostname, username, password, stc_job) z1.submit_jcl( text=stop_start.replace('#CMD#', 'S').replace('#JOB#', stc_job)) time.sleep(delay)
def jes(request): mod = request.module jes = JESAdapter(mod.hostname, mod.username, mod.password) return jes
def jes_adapter(): return JESAdapter(hostname, username, password)
def test_compare_rte(rte_name): jes_adapter = JESAdapter(hostname, username, password) zosmf = zOSMFConnector(hostname, username, password) datasets_back = zosmf.list_ds( ds_mask=f'ITM.PARM.ARCH.{rte_name.upper()}.*') last_gdg = [] ps_ds_back = [] exclude_ds = {} old_ds = {} datasets_new = [ dataset for dataset in zosmf.list_ds( ds_mask=f'{rtes[rte_name]["rte_hlq"]}.R*') + zosmf.list_ds(ds_mask=f'{rtes[rte_name]["rte_hlq"]}.W*') + zosmf.list_ds(ds_mask=f'{rtes[rte_name]["rte_hlq"][:-4]}BASE.R*') ] # search vsam ds and add their to array vsam_ds_new = [ re.findall(r'(?<=[\w+].)\w+', datasets_new.pop(datasets_new.index(dataset) - 1))[-1] for dataset in datasets_new if re.findall(r'(?<=[\w+].)\w+', dataset)[-1] == 'DATA' ] vsam_ds_back = [ re.findall(r'(?<=[\w+].)\w+', ds)[-2] for ds in list( zosmf.list_ds(ds_mask=f'ITM.PARM.ARCH.{rte_name.upper()}.*.VSAM')) ] for dataset in datasets_back: if dataset == re.findall(r'\w+.\w+.\w+.\w+.\w+', dataset)[0] and dataset not in vsam_ds_back: try: last_gdg.append(zosmf.list_ds(ds_mask=f'{dataset}(0)')[0]) except: logging.error(f'Generation does not found for {dataset}') gdg_name = re.findall(r'(?<=[\w+].)\w+', last_gdg[0])[-1] for dataset in last_gdg: members = zosmf.list(dataset=dataset) # check datasets for PO and PS if members: old_ds.update( {re.findall(r'(?<=[\w+].)\w+', dataset)[-2]: members}) else: ps_ds_back.append(re.findall(r'(?<=[\w+].)\w+', dataset)[-2]) for dataset in datasets_new: # check for all ds without vsam if dataset == re.findall(r'\w+.\w+.\w+.\w+', dataset)[0]: members = zosmf.list(dataset=dataset) name = re.findall(r'(?<=[\w+].)\w+', dataset)[-1] if members: try: diff = list(set(members) - set(old_ds[name])) if diff: show_new_datasets(dataset, diff, 'PO') diff = list(set(old_ds[name]) - set(members)) if diff: exclude_ds.update({dataset: diff}) res = jes_adapter.submit_jcl(text=jcl_compare_word.replace( '#OLDDS#', f'ITM.PARM.ARCH.{rte_name.upper()}.' f'{name}.{gdg_name}').replace('#NEWDS#', f'{dataset}')) if res.rc != '0000': allure.attach( jes_adapter.get_job_output(job_name=res.jobname, job_id=res.jobid, utf_8_errors='ignore'), name, allure.attachment_type.TEXT) except KeyError: show_new_datasets(dataset, members, 'PO') else: # check added new datasets after updates rte if name not in ps_ds_back: show_new_datasets(dataset, '', 'PS') for member in set(vsam_ds_new) - set(vsam_ds_back): show_new_datasets(f'{rtes[rte_name]["rte_hlq"].upper()}.{member}', '', 'VSAM') for member in set(vsam_ds_back) - set(vsam_ds_new): exclude_ds.update( {f'{rtes[rte_name]["rte_hlq"].upper()}.{member} -- VSAM': ''}) if exclude_ds: show_exclude_datasets( ',\n '.join("Dataset: {!s} \n Members: {!r}".format(ds, memb) for (ds, memb) in exclude_ds.items()), rte_name)
params={'{cmd}': racf_cmd}, wait=True) @pytest.fixture(scope='module') def tep(): tep = TEP(jubula_agent, host_teps, classes_dir='C:/AUT_WD', username=username, password=password) yield tep #tep.logoff() jes = JESAdapter(hostname, username, password) def setup_module(): z.issue_command(start_trace) execute_racf_cmd(clean_racf_cmds) jes.zo.del_ds(kglumap) def teardown_module(): z.issue_command(stop_trace) log = get_log() f = open('log.txt', 'w') f.write(log)
import random from libs.utils import * from taf.zos.jes import JESAdapter from libs.creds import * username = os.environ.get('mf_user', username) password = os.environ.get('mf_password', password) rsd2_l = ['ITE2C5', 'ITE2D5', 'ITE2I5', 'ITE2MQ', 'ITE2JJ', 'ITE2N3'] rsd4_l = ['ITE4C5', 'ITE4D5', 'ITE4I5', 'ITE4MQ', 'ITE4JJ', 'ITE4N3'] rsd2_j = JESAdapter('rsd2', username, password) rsd4_j = JESAdapter('rsd4', username, password) logger = logging.getLogger(__name__) def restart(host, j_l, jes_a): stc1 = random.choice(j_l) print(f'Restarting {stc1}') jes_a.submit_jcl(text=stop_start.replace('#CMD#', 'P').replace('#JOB#', stc1)) wait_job_to_finish(host, username, password, stc1) jes_a.submit_jcl(text=stop_start.replace('#CMD#', 'S').replace('#JOB#', stc1)) logger.info('Start') count = 0 try:
import time from taf.zos.jes import JESAdapter from libs.ite1db2 import * from libs.creds import * from libs.ivtenv import rtes rte = os.environ.get('rte', 'ite1') hostname = rtes[rte]['hostname'] applid = rtes[rte]['tom_applid'] username = os.environ.get('mf_user', username) password = os.environ.get('mf_password', password) WAIT_JOB = 'IVT99999' secs = 90 while True: try: z = JESAdapter(hostname, username, password) job = z.submit_jcl(path_relative=True, path='resources/jobs/wait.jcl', params={'{seconds}': str(secs), '{job}': WAIT_JOB}, wait=True) time.sleep(70) except: print('Exception') break