Exemple #1
0
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)
Exemple #3
0
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}')
Exemple #5
0
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)
Exemple #6
0
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