Exemplo n.º 1
0
def test_pgm(transport):
    """Test calling ZZCALL
    https://bitbucket.org/inext/xmlservice-rpg/src/master/test.rpg/zzcall.rpgle
    """

    transport.set_out("""<?xml version="1.0" ?>
<xmlservice>
    <pgm error="fast" lib="XMLSERVICE" name="ZZCALL" var="zzcall">
        <parm io="both" var="p1">
            <data type="1a" var="INCHARA">C</data>
        </parm>
        <parm io="both" var="p2">
            <data type="1a" var="INCHARB">D</data>
        </parm>
        <parm io="both" var="p3">
            <data type="7p4" var="INDEC1">321.1234</data>
        </parm>
        <parm io="both" var="p4">
            <data type="12p2" var="INDEC2">1234567890.12</data>
        </parm>
        <parm io="both" var="p5">
            <ds var="INDS1">
                <data type="1a" var="DSCHARA">E</data>
                <data type="1a" var="DSCHARB">F</data>
                <data type="7p4" var="DSDEC1">333.3330</data>
                <data type="12p2" var="DSDEC2">4444444444.44</data>
            </ds>
        </parm>
        <success>+++ success XMLSERVICE ZZCALL </success>
    </pgm>
</xmlservice>
""")

    tk = iToolKit()
    tk.add(
        iPgm('zzcall', 'ZZCALL', {
            'lib': 'XMLSERVICE'
        }).addParm(iData('INCHARA', '1a', 'a')).addParm(
            iData('INCHARB', '1a', 'b')).addParm(
                iData('INDEC1', '7p4', '32.1234')).addParm(
                    iData('INDEC2', '12p2', '33.33')).addParm(
                        iDS('INDS1').addData(iData(
                            'DSCHARA', '1a',
                            'a')).addData(iData('DSCHARB', '1a', 'b')).addData(
                                iData('DSDEC1', '7p4', '32.1234')).addData(
                                    iData('DSDEC2', '12p2', '33.33'))))
    tk.call(transport)

    zzcall = tk.dict_out('zzcall')

    assert ('success' in zzcall)

    assert (zzcall['INCHARA'] == 'C')
    assert (zzcall['INCHARB'] == 'D')
    assert (zzcall['INDEC1'] == '321.1234')
    assert (zzcall['INDEC2'] == '1234567890.12')
    assert (zzcall['INDS1']['DSCHARA'] == 'E')
    assert (zzcall['INDS1']['DSCHARB'] == 'F')
    assert (zzcall['INDS1']['DSDEC1'] == '333.3330')
    assert (zzcall['INDS1']['DSDEC2'] == '4444444444.44')
def test_data_default_value():
    key = 'madsn'
    datatype = '10a'

    element = ET.fromstring(iData(key, datatype).xml_in())

    assert (element.tag == 'data')
    assert (element.attrib['var'] == key)
    assert (element.attrib['type'] == datatype)
    assert (element.text is None)
def test_data():
    key = 'lljqezl'
    datatype = '10a'
    value = 'foo'

    element = ET.fromstring(iData(key, datatype, value).xml_in())

    assert (element.tag == 'data')
    assert (element.attrib['var'] == key)
    assert (element.attrib['type'] == datatype)
    assert (element.text == value)
def test_data_non_str():
    key = 'madsn'
    datatype = '10i0'
    value = 0

    element = ET.fromstring(iData(key, datatype, value).xml_in())

    assert (element.tag == 'data')
    assert (element.attrib['var'] == key)
    assert (element.attrib['type'] == datatype)
    assert (element.text == str(value))
Exemplo n.º 5
0
 def qwtsetp(self):
     itransport = DatabaseTransport(self.conn)
     itool = iToolKit()
     itool.add(
         iPgm('qwtsetp', 'QWTSETP')
         .addParm(iData('handle', '12A', self.handle, {'hex': 'on'}))
         .addParm(
             iDS('ERRC0100_t', {'len': 'errlen'})
             .addData(iData('errRet', '10i0', ''))
             .addData(iData('errAvl', '10i0', ''))
             .addData(iData('errExp', '7A', '', {'setlen': 'errlen'}))
             .addData(iData('errRsv', '1A', ''))
         )
     )
     itool.call(itransport)
     qwtsetp = itool.dict_out('qwtsetp')
     ibmi_util.log_info(str(qwtsetp), 'qwtsetp')
     if 'success' in qwtsetp:
         return True
     else:
         return False
Exemplo n.º 6
0
 def release_profile_handle(self):
     if not self.handle:
         return True
     itransport = DatabaseTransport(self.conn)
     itool = iToolKit()
     itool.add(
         iPgm('qsyrlsph', 'QSYRLSPH')
         .addParm(iData('handle', '12A', self.handle, {'hex': 'on'}))
         .addParm(
             iDS('ERRC0100_t', {'len': 'errlen'})
             .addData(iData('errRet', '10i0', ''))
             .addData(iData('errAvl', '10i0', ''))
             .addData(iData('errExp', '7A', '', {'setlen': 'errlen'}))
             .addData(iData('errRsv', '1A', ''))
         )
     )
     itool.call(itransport)
     qsyrlsph = itool.dict_out('qsyrlsph')
     ibmi_util.log_info(str(qsyrlsph), 'qsyrlsph')
     if 'success' in qsyrlsph:
         return True
     else:
         return False
def test_data_and_options():
    key = 'oiujgoihs'
    datatype = '10a'
    value = 'bar'
    opts = {
        'dim': 10,
        'varying': 'on',
    }

    element = ET.fromstring(iData(key, datatype, value, opts).xml_in())
    assert (element.tag == 'data')
    assert (element.attrib['var'] == key)
    assert (element.attrib['type'] == datatype)
    for k, v in opts.items():
        assert (element.attrib[k] == str(v))
    assert (element.text == value)
Exemplo n.º 8
0
    def qsygetph(self):
        special_value = False
        if self.pwd in ['*NOPWD', '*NOPWDCHK', '*NOPWDSTS']:
            self.pwd = ibmi_util.fmtTo10(self.pwd)
            special_value = True

        len_of_password = len(self.pwd)
        # Chang Le: the user name should be converted to upper case
        input_user = self.name.ljust(10).upper()
        input_password_len = str(len_of_password) + 'A'

        itransport = DatabaseTransport(self.conn)
        itool = iToolKit()
        if not special_value:
            itool.add(
                iPgm('qsygetph', 'qsygetph')
                .addParm(iData('userId', '10A', input_user))
                .addParm(iData('pwd', input_password_len, self.pwd))
                .addParm(iData('handle', '12A', '', {'hex': 'on'}))
                .addParm(
                    iDS('ERRC0100_t', {'len': 'errlen'})
                    .addData(iData('errRet', '10i0', ''))
                    .addData(iData('errAvl', '10i0', ''))
                    .addData(iData('errExp', '7A', '', {'setlen': 'errlen'}))
                    .addData(iData('errRsv', '1A', ''))
                )
                .addParm(iData('len', '10i0', str(len_of_password)))
                .addParm(iData('ccsid', '10i0', '37'))
            )
        else:
            itool.add(
                iPgm('qsygetph', 'qsygetph')
                .addParm(iData('userId', '10A', input_user))
                .addParm(iData('pwd', '10A', self.pwd))
                .addParm(iData('handle', '12A', '', {'hex': 'on'}))
                .addParm(
                    iDS('ERRC0100_t', {'len': 'errlen'})
                    .addData(iData('errRet', '10i0', ''))
                    .addData(iData('errAvl', '10i0', ''))
                    .addData(iData('errExp', '7A', '', {'setlen': 'errlen'}))
                    .addData(iData('errRsv', '1A', ''))
                )
            )
        itool.call(itransport)
        qsygetph = itool.dict_out('qsygetph')
        if 'success' in qsygetph:
            return qsygetph['handle']
        else:
            return None
Exemplo n.º 9
0
def get_ptf_info(imodule, ptf_id, product_id, release_level):
    conn = imodule.get_connection()
    itransport = DatabaseTransport(conn)
    itool = iToolKit()
    system_release_info, err = imodule.get_ibmi_release()
    ibmi_util.log_debug(
        "get_ibmi_release() return release_info: " + str(system_release_info),
        sys._getframe().f_code.co_name)
    ibmi_util.log_debug("get_ibmi_release() return err: " + str(err),
                        sys._getframe().f_code.co_name)
    # Example output for system_release_info: {'version': 7, 'release': 2, 'version_release': 7.2}
    # Note, version_release is float but not string
    if system_release_info['version_release'] == 7.2:
        itool.add(
            iPgm('qpzrtvfx', 'QPZRTVFX').addParm(
                iDS('PTFR0300_t', {
                    'len': 'rhrlen'
                }).addData(iData('rhrRet', '10i0', '')).addData(
                    iData('rhrAvl', '10i0', '')).addData(
                        iData('rhrOftAddIn', '10i0', '')).addData(
                            iData('rhrPid', '7A', '')).addData(
                                iData('rhrPtfId', '7A', '')).addData(
                                    iData('rhrRlsLvl', '6A', '')).addData(
                                        iData('rhrPrdOpt', '4A', '')).addData(
                                            iData('rhrLodId', '4A', '')).
                addData(iData('rhrLdSts', '1A', '')).addData(
                    iData('rhrCvrLtrSts', '1A',
                          '')).addData(iData('rhrOnOrdSts', '1A', '')).addData(
                              iData('rhrSavfSts', '1A', '')).addData(
                                  iData('rhrFilNam', '10A', '')).addData(
                                      iData('rhrFilLibNam', '10A',
                                            '')).addData(
                                                iData('rhrPtfTyp', '1A',
                                                      '')).addData(
                                                          iData(
                                                              'rhrIplAct',
                                                              '1A', '')).
                addData(iData(
                    'rhrActPnd', '1A',
                    '')).addData(iData(
                        'rhrActReq', '1A',
                        '')).addData(iData('rhrPtfRls', '1A', '')).addData(
                            iData('rhrTgtRls', '6A', '')).addData(
                                iData('rhrSpsPtf', '7A', '')).addData(
                                    iData('rhrIplSid', '1A', '')).addData(
                                        iData('rhrMinLvl', '2A', '')).addData(
                                            iData('rhrMaxLvl', '2A', '')).
                addData(iData('rhrFmtInfAvl', '1A', '')).addData(
                    iData('rhrStsDtaTim', '13A',
                          '')).addData(iData('rhrLicGrp', '7A', '')).addData(
                              iData('rhrSpsByPtf', '7A', '')).addData(
                                  iData('rhrSvrIplSrc', '1A', '')).addData(
                                      iData('rhrSvrIplRad', '1A', '')).addData(
                                          iData('rhrCrtDtaTim', '13A',
                                                '')).addData(
                                                    iData(
                                                        'rhrTecRfsPtf', '1A',
                                                        ''))
                # .addData(iData('rhrTmpApyDtaTim', '13A', '')) # V7R2M0 does not has this field
                .addData(iData('rhrOftPreReqRec', '10i0', '')).addData(
                    iData('rhrNbrPreReq', '10i0', '',
                          {'enddo': 'mycnt'})).addData(
                              iData('rhrLenPreReq', '10i0', '')).
                addData(
                    iDS('rhrReqs', {
                        'dim': '999',
                        'dou': 'mycnt'
                    }).addData(iData(
                        'REQUISITE_PRODUCT_ID',
                        '7A',
                        '')).addData(iData(
                            'REQUISITE_PTF_ID',
                            '7A',
                            '')).addData(
                                iData('RELEASE_OF_REQUISITE', '6A',
                                      '')).addData(
                                          iData('REQUISITE_MIN_LEVLE', '2A',
                                                '')).
                    addData(iData('REQUISITE_MAX_LEVLE', '2A', '')).addData(
                        iData('TYPE_OF_REQUISITE', '1A', '')).addData(
                            iData(
                                'REQUISITE_IS_CONDITIONAL', '1A', '')).addData(
                                    iData('REQUISITE_IS_REQUIRED', '1A',
                                          '')).addData(
                                              iData(
                                                  'REQUISITE_OPTION', '4A',
                                                  '')).addData(
                                                      iData(
                                                          'REQUISITE_LOAD_ID',
                                                          '4A', '')))).
            addParm(iData('rcvlen', '10i0', '', {
                'setlen': 'rhrlen'
            })).addParm(
                iDS('Qpz_Rtv_PTF_Info_t').addData(iData(
                    'PTF_ID', '7A',
                    ptf_id)).addData(iData(
                        'PID', '7A', product_id)).addData(
                            iData('Rls_Lvl', '6A', release_level)).addData(
                                iData('CCSID', '10i0', '')).addData(
                                    iData('Close_Files', '1A', '')).addData(
                                        iData('Reserved', '25A', ''))
            ).addParm(iData('fmtnam', '8A', 'PTFR0300')).addParm(
                iDS('ERRC0100_t', {
                    'len': 'errlen'
                }).addData(iData('errRet', '10i0', '')).addData(
                    iData('errAvl', '10i0', '')).addData(
                        iData('errExp', '7A', '',
                              {'setlen': 'errlen'})).addData(
                                  iData('errRsv', '1A', ''))))
    else:
        itool.add(
            iPgm('qpzrtvfx', 'QPZRTVFX').addParm(
                iDS('PTFR0300_t', {
                    'len': 'rhrlen'
                }).addData(iData('rhrRet', '10i0', '')).addData(
                    iData('rhrAvl', '10i0', '')).addData(
                        iData('rhrOftAddIn', '10i0', '')).addData(
                            iData('rhrPid', '7A', '')).addData(
                                iData('rhrPtfId', '7A', '')).addData(
                                    iData('rhrRlsLvl', '6A', '')).addData(
                                        iData('rhrPrdOpt', '4A', '')).addData(
                                            iData('rhrLodId', '4A', '')).
                addData(iData('rhrLdSts', '1A', '')).addData(
                    iData('rhrCvrLtrSts', '1A',
                          '')).addData(iData('rhrOnOrdSts', '1A', '')).addData(
                              iData('rhrSavfSts', '1A', '')).addData(
                                  iData('rhrFilNam', '10A', '')).addData(
                                      iData('rhrFilLibNam', '10A',
                                            '')).addData(
                                                iData('rhrPtfTyp', '1A',
                                                      '')).addData(
                                                          iData(
                                                              'rhrIplAct',
                                                              '1A', '')).
                addData(iData(
                    'rhrActPnd', '1A',
                    '')).addData(iData(
                        'rhrActReq', '1A',
                        '')).addData(iData('rhrPtfRls', '1A', '')).addData(
                            iData('rhrTgtRls', '6A', '')).addData(
                                iData('rhrSpsPtf', '7A', '')).addData(
                                    iData('rhrIplSid', '1A', '')).addData(
                                        iData('rhrMinLvl', '2A', '')).addData(
                                            iData('rhrMaxLvl', '2A', '')).
                addData(iData('rhrFmtInfAvl', '1A', '')).addData(
                    iData('rhrStsDtaTim', '13A',
                          '')).addData(iData('rhrLicGrp', '7A', '')).addData(
                              iData('rhrSpsByPtf', '7A', '')).addData(
                                  iData('rhrSvrIplSrc', '1A', '')).addData(
                                      iData('rhrSvrIplRad', '1A', '')).addData(
                                          iData('rhrCrtDtaTim', '13A', '')).
                addData(iData(
                    'rhrTecRfsPtf', '1A',
                    '')).addData(iData(
                        'rhrTmpApyDtaTim',
                        '13A', '')).addData(
                            iData('rhrOftPreReqRec', '10i0',
                                  '')).addData(
                                      iData('rhrNbrPreReq', '10i0', '',
                                            {'enddo': 'mycnt'})).addData(
                                                iData('rhrLenPreReq', '10i0',
                                                      '')).
                addData(
                    iDS('rhrReqs', {
                        'dim': '999',
                        'dou': 'mycnt'
                    }).addData(iData(
                        'REQUISITE_PRODUCT_ID',
                        '7A',
                        '')).addData(iData(
                            'REQUISITE_PTF_ID',
                            '7A',
                            '')).addData(
                                iData('RELEASE_OF_REQUISITE', '6A',
                                      '')).addData(
                                          iData('REQUISITE_MIN_LEVLE', '2A',
                                                '')).addData(
                                                    iData(
                                                        'REQUISITE_MAX_LEVLE',
                                                        '2A', '')).
                    addData(iData(
                        'TYPE_OF_REQUISITE',
                        '1A',
                        '')).addData(
                            iData(
                                'REQUISITE_IS_CONDITIONAL', '1A', '')).addData(
                                    iData('REQUISITE_IS_REQUIRED', '1A',
                                          '')).addData(
                                              iData(
                                                  'REQUISITE_OPTION', '4A',
                                                  '')).addData(
                                                      iData(
                                                          'REQUISITE_LOAD_ID',
                                                          '4A', '')))).
            addParm(iData('rcvlen', '10i0', '', {
                'setlen': 'rhrlen'
            })).addParm(
                iDS('Qpz_Rtv_PTF_Info_t').addData(iData(
                    'PTF_ID', '7A',
                    ptf_id)).addData(iData(
                        'PID', '7A', product_id)).addData(
                            iData('Rls_Lvl', '6A', release_level)).addData(
                                iData('CCSID', '10i0', '')).addData(
                                    iData('Close_Files', '1A', '')).addData(
                                        iData('Reserved', '25A', ''))
            ).addParm(iData('fmtnam', '8A', 'PTFR0300')).addParm(
                iDS('ERRC0100_t', {
                    'len': 'errlen'
                }).addData(iData('errRet', '10i0', '')).addData(
                    iData('errAvl', '10i0', '')).addData(
                        iData('errExp', '7A', '',
                              {'setlen': 'errlen'})).addData(
                                  iData('errRsv', '1A', ''))))
    itool.call(itransport)
    qpzrtvfx = itool.dict_out('qpzrtvfx')
    ibmi_util.log_debug(str(qpzrtvfx), sys._getframe().f_code.co_name)
    res_list = []
    if 'success' in qpzrtvfx:
        ptfr0300_t = qpzrtvfx['PTFR0300_t']
        ibmi_util.log_debug(str(ptfr0300_t), sys._getframe().f_code.co_name)
        if int(ptfr0300_t['rhrNbrPreReq']) > 0:
            res = ptfr0300_t['rhrReqs']
            if isinstance(res, dict):
                res_list.append(res)
            elif isinstance(res, list):
                res_list = res
            ibmi_util.log_debug(str(res_list), sys._getframe().f_code.co_name)
        return 0, res_list, qpzrtvfx['success']
    else:
        return -1, res_list, qpzrtvfx['error']
Exemplo n.º 10
0
def getNonconfigureDisk(imodule, time):
    conn = imodule.get_connection()
    itransport = DatabaseTransport(conn)
    itool = iToolKit()
    itool.add(iPgm('qyasrdi', 'QYASRDI')
              .addParm(iDS('DMIN0100_t', {'len': 'dmilen'})
              .addData(iData('dniRet', '10i0', ''))
              .addData(iData('dmiAvl', '10i0', ''))
              .addData(iData('dmiOfset', '10i0', ''))
              .addData(iData('dmiNbr', '10i0', '', {'enddo': 'mycnt'}))
              .addData(iData('dmiLen', '10i0', ''))
              .addData(iData('dmiRes', '10i0', ''))
              .addData(iDS('res_t', {'dim': '999', 'dou': 'mycnt'})
                       .addData(iData('resDurn', '10a', ''))
                       .addData(iData('resDuff', '1a', ''))
                       .addData(iData('resTrnaswdu', '10a', ''))
                       .addData(iData('resTnawdu', '4a', ''))
                       .addData(iData('resDuaindpsf', '1a', ''))
                       .addData(iData('resDuaiedpsf', '1a', ''))
                       .addData(iData('resRes', '5a', ''))
                       .addData(iData('resDpsn', '10i0', ''))
                       .addData(iData('resCaadps', '10i0', ''))
                       )
                       )
              .addParm(iData('rcvlen', '10i0', '', {'setlen': 'dmilen'}))
              .addParm(iData('fmtnam', '10a', 'DMIN0100'))
              .addParm(iData('dmiDurna', '10a', '*UNCONFIG'))
              .addParm(iData('dmiNbr', '10i0', '1'))
              .addParm(iDS('ERRC0100_t', {'len': 'errlen'})
                       .addData(iData('errRet', '10i0', ''))
                       .addData(iData('errAvl', '10i0', ''))
                       .addData(iData('errExp', '7A', '', {'setlen': 'errlen'}))
                       .addData(iData('errRsv', '1A', ''))
                       )
              )
    itool.call(itransport)
    qyasrdi = itool.dict_out('qyasrdi')
    diskList = ''
    if 'success' in qyasrdi:
        DMIN0100_t = qyasrdi['DMIN0100_t']
        if int(DMIN0100_t['dmiNbr']) > 0:
            res_t = DMIN0100_t['res_t']
            if int(DMIN0100_t['dmiNbr']) == 1:
                diskList = res_t['resDurn']
            else:
                for rec in res_t:
                    diskList += rec['resDurn'] + ' '
        if diskList.endswith(' '):
            diskList = diskList[:-1]
    job_log = imodule.itoolkit_get_job_log(time)
    return diskList, job_log
Exemplo n.º 11
0
def list_ethernet_ports_info(imodule):
    conn = imodule.get_connection()
    itransport = DatabaseTransport(conn)
    itool = iToolKit()
    itool.add(
        iSrvPgm('qgyrhr', 'QGYRHR', 'QgyRtvHdwRscList').addParm(
            iDS('RHRL0100_t', {
                'len': 'rhrlen'
            }).addData(iData('rhrRet', '10i0', '')).addData(
                iData('rhrAvl', '10i0', '')).addData(
                    iData('rhrNbr', '10i0', '', {'enddo': 'mycnt'})).addData(
                        iData('rhrLen', '10i0', '')).addData(
                            iDS('res_t', {
                                'dim': '999',
                                'dou': 'mycnt'
                            }).addData(iData('resCat', '10i0', '')).addData(
                                iData('resLvl', '10i0', '')).addData(
                                    iData('resLin', '10i0', '')).addData(
                                        iData('resNam', '10a', '')).addData(
                                            iData('resTyp', '4a', '')).addData(
                                                iData('resMod', '3a', '')).
                            addData(iData('resSts', '1a', '')).addData(
                                iData('resSys', '8a', '')).addData(
                                    iData('resAdp', '12a', '')).addData(
                                        iData('resDsc', '50h', '')).addData(
                                            iData('resKnd', '24b', '')))).
        addParm(iData(
            'rcvlen',
            '10i0', '',
            {'setlen': 'rhrlen'})).addParm(iData(
                'fmtnam', '10a',
                'RHRL0100')).addParm(iData('rescat', '10i0', '2')).addParm(
                    iDS('ERRC0100_t', {
                        'len': 'errlen'
                    }).addData(iData(
                        'errRet', '10i0',
                        '')).addData(iData(
                            'errAvl', '10i0', '')).addData(
                                iData('errExp', '7A', '',
                                      {'setlen': 'errlen'})).addData(
                                          iData('errRsv', '1A', ''))))
    itool.call(itransport)
    qgyrhr = itool.dict_out('qgyrhr')
    ibmi_util.log_debug("qgyrhr output: " + str(qgyrhr),
                        sys._getframe().f_code.co_name)
    res_list = []
    if 'success' in qgyrhr:
        rhrl0100_t = qgyrhr['RHRL0100_t']
        if int(rhrl0100_t['rhrNbr']) > 0:
            res_t = rhrl0100_t['res_t']
            res_info = dict()
            for rec in res_t:
                if rec['resKnd'] == kKindVirtEthernet or rec[
                        'resKnd'] == kKindPhysEthernet:
                    ibmi_util.log_debug("resource name is " + rec['resNam'],
                                        sys._getframe().f_code.co_name)
                    rc, res_info, result = get_info_from_resource_name(
                        imodule, rec['resNam'])
                    ibmi_util.log_debug("resource info is " + str(res_info),
                                        sys._getframe().f_code.co_name)
                    ibmi_util.log_debug(
                        "get resource info result is " + result,
                        sys._getframe().f_code.co_name)
                    if rc == SUCCESS:
                        res_list.append(res_info)
        return SUCCESS, res_list, qgyrhr['success']
    else:
        return ERROR, res_list, qgyrhr['error']
Exemplo n.º 12
0
def get_info_from_resource_name(imodule, resource_name):
    conn = imodule.get_connection()
    itransport = DatabaseTransport(conn)
    itool = iToolKit()
    itool.add(
        iSrvPgm('qgyrhr', 'QGYRHR', 'QgyRtvHdwRscInfo').addParm(
            iDS('RHRI0100_t', {
                'len': 'rhrlen'
            }).addData(iData('rhrRet', '10i0', '')).addData(
                iData('rhrAvl', '10i0',
                      '')).addData(iData('sysBusNum', '10i0', '')).addData(
                          iData('sysBdNum', '10i0', '')).addData(
                              iData('sysCdNum', '10i0', '')).addData(
                                  iData('IOBusAdd', '10i0', '')).addData(
                                      iData('AdaptAdd', '10i0', '')).addData(
                                          iData('PortNum', '10i0', '')).
            addData(iData('srNum', '10a', '')).addData(
                iData('partNum', '12a',
                      '')).addData(iData('frmID', '4a', '')).addData(
                          iData('cdPst', '5a', '')).addData(
                              iData('locCd', '79a', '')).addData(
                                  iData('expSrNum', '15a', '')).addData(
                                      iData('LANSpeed', '8a', '',
                                            {'hex': 'on'})).addData(
                                                iData('LinkAgg', '1a', '',
                                                      {'hex': 'on'})).addData(
                                                          iData(
                                                              'MAC', '6a', '',
                                                              {'hex': 'on'}))).
        addParm(iData('rcvlen', '10i0', '', {'setlen': 'rhrlen'})).addParm(
            iData('fmtnam', '8a', 'RHRI0100')).addParm(
                iData('resnam', '10a', resource_name)).addParm(
                    iDS('ERRC0100_t', {
                        'len': 'errlen'
                    }).addData(iData('errRet', '10i0', '')).addData(
                        iData('errAvl', '10i0', '')).addData(
                            iData('errExp', '7A', '',
                                  {'setlen': 'errlen'})).addData(
                                      iData('errRsv', '1A', ''))))

    resoure_info = dict()
    itool.call(itransport)
    qgyrhr = itool.dict_out('qgyrhr')
    ibmi_util.log_debug("qgyrhr output: " + str(qgyrhr),
                        sys._getframe().f_code.co_name)
    if 'success' in qgyrhr:
        rhri0100_t = qgyrhr['RHRI0100_t']
        if int(rhri0100_t['rhrAvl']) > 0:
            resoure_info = {
                "RESOURCE_NAME": resource_name,
                "SYSTEM_BUS_NUMBER": rhri0100_t['sysBusNum'],
                "SYSTEM_BOARD_NUMBER": rhri0100_t['sysCdNum'],
                "SYSTEM_CARD_NUMBER": rhri0100_t['sysCdNum'],
                "IO_BUS_ADDRESS": rhri0100_t['IOBusAdd'],
                "ADAPTER_ADDRESS": rhri0100_t['AdaptAdd'],
                "PORT_NUMBER": rhri0100_t['PortNum'],
                "SERIAL_NUMBER": rhri0100_t['srNum'],
                "PART_NUMBER": rhri0100_t['partNum'],
                "FRAME_ID": rhri0100_t['frmID'],
                "CARD_POSITION": rhri0100_t['cdPst'],
                "LOCATION_CODE": rhri0100_t['locCd'],
                "EXPANDED_SERIAL_NUMBER": rhri0100_t['expSrNum'],
                "LAN_SPEED": rhri0100_t['LANSpeed'],
                "SUPPORTS_LINK_AGGREGATION": rhri0100_t['LinkAgg'],
                "DEFAULT_MAC_ADDRESS": rhri0100_t['MAC'],
            }
        return SUCCESS, resoure_info, qgyrhr['success']
    else:
        return ERROR, resoure_info, qgyrhr['error']
Exemplo n.º 13
0
def remove_pending_joblog(conn, job_name, user_name, job_number):
    itransport = DatabaseTransport(conn)
    itool = iToolKit()
    itool.add(
        iPgm('qwtrmvjl', 'QWTRMVJL').addParm(
            iDS('RJLS0100_t', {
                'len': 'rhrlen'
            }).addData(iData('length', '10i0', '44')).addData(
                iData('day_since', '10i0', '0')).addData(
                    iData('job_name', '10A', job_name)).addData(
                        iData('user_name', '10A', user_name)).addData(
                            iData('job_number', '6A', job_number)).addData(
                                iData('job_log_output', '10A', '*ALL'))).
        addParm(iData('fmtnam', '8A', 'RJLS0100')).addParm(
            iDS('ERRC0100_t', {
                'len': 'errlen'
            }).addData(iData('errRet', '10i0', '')).addData(
                iData('errAvl', '10i0', '')).addData(
                    iData('errExp', '7A', '', {'setlen': 'errlen'})).addData(
                        iData('errRsv', '1A', ''))))
    itool.call(itransport)
    qwtrmvjl = itool.dict_out('qwtrmvjl')
    if 'success' in qwtrmvjl:
        return 0, qwtrmvjl['success']
    else:
        return -1, qwtrmvjl['error']
Exemplo n.º 14
0
def get_system_value(imodule, sysvaluename, expect=None, check='equal'):
    sysvalue = dict()
    sysvalue['name'] = sysvaluename.strip().upper()
    for value in sysval_array:
        for key in value['key']:
            if (sysvalue['name'] == key):
                sysvalue['type'] = value['type']
                if expect is not None:
                    sysvalue['expect'] = expect
                    if not check:
                        check = 'equal'
                    sysvalue['check'] = check
                break

    if sysvalue.get('type') is None:
        return -1, sysvalue, 'Unknown System Value Name'

    conn = imodule.get_connection()
    itransport = DatabaseTransport(conn)
    itool = iToolKit()
    itool.add(
        iPgm('qwcrsval', 'QWCRSVAL', {
            'lib': 'QSYS'
        }).addParm(
            iDS('QWCRSVAL_t', {
                'len': 'qwcrslen',
                'io': 'out'
            })
            # Number of system values returned
            .addData(iData('count', '10i0', ''))
            # Offset to system value information table
            .addData(iData('offset', '10i0',
                           '')).addData(iData('sysvalue', '10A',
                                              ''))  # System value
            # Type of data(C--character / B--binary / blank--not available.)
            .addData(iData('dataType', '1A', ''))
            # Information status(blank--The information was available.)
            .addData(iData('infoStatus', '1A',
                           '')).addData(iData('length', '10i0',
                                              ''))  # Length of data
            # Returned system value data
            .addData(iData('data', sysvalue['type'], ''))).addParm(
                iData('rcvlen', '10i0', '', {'setlen': 'qwcrslen'})).addParm(
                    iData('count', '10i0', '1')).addParm(
                        iData('valueName', '10A', sysvalue['name'])).addParm(
                            iDS('ERRC0100_t', {
                                'len': 'errlen'
                            }).addData(
                                iData('bytesProvided', '10i0', '',
                                      {'setlen': 'errlen'})).addData(
                                          iData('bytesAvailable', '10i0',
                                                '')).addData(
                                                    iData(
                                                        'messageID', '7A',
                                                        '')).addData(
                                                            iData(
                                                                'reserved',
                                                                '1A', ''))))
    itool.call(itransport)

    qwcrsval = itool.dict_out('qwcrsval')
    ibmi_util.log_debug(str(qwcrsval), sys._getframe().f_code.co_name)

    if 'success' in qwcrsval:
        qwcrsval_t = qwcrsval['QWCRSVAL_t']
        ibmi_util.log_debug(str(qwcrsval_t), sys._getframe().f_code.co_name)
        if int(qwcrsval_t['count']) > 0:
            sysvalue['value'] = qwcrsval_t['data']
            if 'expect' in sysvalue:
                sysvalue['compliant'] = chk_system_value(
                    sysvalue['value'], sysvalue['expect'], check)
            ibmi_util.log_debug(str(sysvalue), sys._getframe().f_code.co_name)
        return 0, sysvalue, qwcrsval['success']
    return -1, sysvalue, qwcrsval['error']
Exemplo n.º 15
0
def test_srvpgm(transport):
    """Test calling ZZARRAY in ZZSSRV
    https://bitbucket.org/inext/xmlservice-rpg/src/master/test.rpg/zzsrv.rpgle
    """

    max_return = 4
    name = 'Ranger'

    transport.set_out("""<?xml version="1.0" ?>
<xmlservice>
<pgm error="fast" func="ZZARRAY" name="ZZSRV" lib="XMLSERVICE" var="zzarray">
    <parm io="both" var="p1">
        <data type="10a" var="myName">{0}</data>
    </parm>
    <parm io="both" var="p2">
        <data type="10i0" var="myMax">{1}</data>
    </parm>
    <parm io="both" var="p3">
        <data enddo="mycnt" type="10i0" var="myCount">{1}</data>
    </parm>
    <return var="r4">
        <ds dim="999" dou="mycnt" var="dcRec_t">
            <data type="10a" var="dcMyName">{0}1</data>
            <data type="4096a" var="dcMyJob">Test 101</data>
            <data type="10i0" var="dcMyRank">11</data>
            <data type="12p2" var="dcMyPay">13.42</data>
        </ds>
        <ds dim="999" dou="mycnt" var="dcRec_t">
            <data type="10a" var="dcMyName">{0}2</data>
            <data type="4096a" var="dcMyJob">Test 102</data>
            <data type="10i0" var="dcMyRank">12</data>
            <data type="12p2" var="dcMyPay">26.84</data>
        </ds>
        <ds dim="999" dou="mycnt" var="dcRec_t">
            <data type="10a" var="dcMyName">{0}3</data>
            <data type="4096a" var="dcMyJob">Test 103</data>
            <data type="10i0" var="dcMyRank">13</data>
            <data type="12p2" var="dcMyPay">40.26</data>
        </ds>
        <ds dim="999" dou="mycnt" var="dcRec_t">
            <data type="10a" var="dcMyName">{0}4</data>
            <data type="4096a" var="dcMyJob">Test 104</data>
            <data type="10i0" var="dcMyRank">14</data>
            <data type="12p2" var="dcMyPay">53.68</data>
        </ds>
    </return>
    <success>+++ success XMLSERVICE ZZSRV ZZARRAY</success>
</pgm>
</xmlservice>""".format(name, max_return))

    tk = iToolKit()
    tk.add(
        iSrvPgm('zzarray', 'ZZSRV', 'ZZARRAY', {
            'lib': 'XMLSERVICE'
        }).addParm(iData('myName', '10a', name)).addParm(
            iData('myMax', '10i0', max_return)).addParm(
                iData('myCount', '10i0', '', {'enddo': 'mycnt'})).addRet(
                    iDS('dcRec_t', {
                        'dim': '999',
                        'dou': 'mycnt'
                    }).addData(iData('dcMyName', '10a', '')).addData(
                        iData('dcMyJob', '4096a', '')).addData(
                            iData('dcMyRank', '10i0',
                                  '')).addData(iData('dcMyPay', '12p2', ''))))
    tk.call(transport)

    zzarray = tk.dict_out('zzarray')
    assert ('success' in zzarray)

    assert (zzarray['myName'] == name)
    assert (zzarray['myMax'] == str(max_return))
    assert (zzarray['myCount'] == str(max_return))

    for i, rec in enumerate(zzarray['dcRec_t'], start=1):
        assert (i <= max_return)

        assert (rec['dcMyName'] == name + str(i))
        assert (rec['dcMyJob'] == "Test 10" + str(i))
        assert (int(rec['dcMyRank']) == 10 + i)
        assert (float(rec['dcMyPay']) == 13.42 * i)