Changeset 0aaeb04 in flex_extract.git for source/python


Ignore:
Timestamp:
Oct 8, 2018, 3:49:02 PM (6 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
0a06607
Parents:
0e576fc
Message:

added writing of compilejob and ECMWF_ENV via templates and added tests

Location:
source/python
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • source/python/_config.py

    r295ff45 r0aaeb04  
    3434FILE_MARS_REQUESTS = 'mars_requests.csv'
    3535FORTRAN_EXECUTABLE = 'CONVERT2'
     36TEMPFILE_USER_ENVVARS = 'ECMWF_ENV.template'
    3637FILE_USER_ENVVARS = 'ECMWF_ENV'
    37 TEMPFILE_INSTALL_COMPILEJOB = 'compilejob.temp'
     38TEMPFILE_INSTALL_COMPILEJOB = 'compilejob.template'
    3839FILE_INSTALL_COMPILEJOB = 'compilejob.ksh'
    3940TEMPFILE_INSTALL_JOB = 'job.temp.o'
  • source/python/install.py

    r27fe969 r0aaeb04  
    320320        Creates a file named ECMWF_ENV which contains the
    321321        necessary environmental variables at ECMWF servers.
     322        It is based on the template ECMWF_ENV.template.
    322323
    323324    @Input:
     
    338339        <nothing>
    339340    '''
    340 
    341     with open(_config.PATH_REL_ECMWF_ENV, 'w') as fo:
    342         fo.write('ECUID ' + ecuid + '\n')
    343         fo.write('ECGID ' + ecgid + '\n')
    344         fo.write('GATEWAY ' + gateway + '\n')
    345         fo.write('DESTINATION ' + destination + '\n')
     341    from genshi.template.text import NewTextTemplate
     342    from genshi.template import  TemplateLoader
     343
     344    loader = TemplateLoader(_config.PATH_TEMPLATES, auto_reload=False)
     345    ecmwfvars_template = loader.load(_config.TEMPFILE_USER_ENVVARS,
     346                                     cls=NewTextTemplate)
     347
     348    stream = ecmwfvars_template.generate(user_name = ecuid,
     349                                       user_group = ecgid,
     350                                       gateway_name = gateway,
     351                                       destination_name = destination
     352                                       )
     353
     354    with open(_config.PATH_ECMWF_ENV, 'w') as f:
     355        f.write(stream.render('text'))
    346356
    347357    return
     
    375385        <nothing>
    376386    '''
    377 
    378     template = os.path.join(_config.PATH_REL_TEMPLATES,
    379                             _config.TEMPFILE_INSTALL_COMPILEJOB)
    380     with open(template) as f:
    381         fdata = f.read().split('\n')
    382 
    383     compilejob = os.path.join(_config.PATH_REL_JOBSCRIPTS,
     387    from genshi.template.text import NewTextTemplate
     388    from genshi.template import  TemplateLoader
     389
     390    loader = TemplateLoader(_config.PATH_TEMPLATES, auto_reload=False)
     391    compile_template = loader.load(_config.TEMPFILE_INSTALL_COMPILEJOB,
     392                                   cls=NewTextTemplate)
     393
     394    if fp_root == '../':
     395        fp_root = '$HOME'
     396
     397    stream = compile_template.generate(
     398        username = ecuid,
     399        usergroup = ecgid,
     400        version_number = _config._VERSION_STR,
     401        fp_root_scripts = fp_root,
     402        makefile = makefile,
     403        fortran_program = _config.FORTRAN_EXECUTABLE
     404    )
     405
     406    compilejob = os.path.join(_config.PATH_JOBSCRIPTS,
    384407                              _config.FILE_INSTALL_COMPILEJOB)
    385     with open(compilejob, 'w') as fo:
    386         for data in fdata:
    387             if 'MAKEFILE=' in data:
    388                 data = 'export MAKEFILE=' + makefile
    389             elif 'FLEXPART_ROOT_SCRIPTS=' in data:
    390                 if fp_root != '../':
    391                     data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root
    392                 else:
    393                     data = 'export FLEXPART_ROOT_SCRIPTS=$HOME'
    394             elif target.lower() != 'local':
    395                 if '--workdir' in data:
    396                     data = '#SBATCH --workdir=/scratch/ms/' + \
    397                             ecgid + '/' + ecuid
    398                 elif '##PBS -o' in data:
    399                     data = '##PBS -o /scratch/ms/' + ecgid + '/' + ecuid + \
    400                            'flex_ecmwf.$Jobname.$Job_ID.out'
    401                 elif 'FLEXPART_ROOT_SCRIPTS=' in data:
    402                     if fp_root != '../':
    403                         data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root
    404                     else:
    405                         data = 'export FLEXPART_ROOT_SCRIPTS=$HOME'
    406             fo.write(data + '\n')
     408
     409    with open(compilejob, 'w') as f:
     410        f.write(stream.render('text'))
     411
     412
     413    # template = os.path.join(_config.PATH_REL_TEMPLATES,
     414                            # _config.TEMPFILE_INSTALL_COMPILEJOB)
     415    # with open(template) as f:
     416        # fdata = f.read().split('\n')
     417
     418
     419    # with open(compilejob, 'w') as fo:
     420        # for data in fdata:
     421            # if 'MAKEFILE=' in data:
     422                # data = 'export MAKEFILE=' + makefile
     423            # elif 'FLEXPART_ROOT_SCRIPTS=' in data:
     424                # if fp_root != '../':
     425                    # data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root
     426                # else:
     427                    # data = 'export FLEXPART_ROOT_SCRIPTS=$HOME'
     428            # elif target.lower() != 'local':
     429                # if '--workdir' in data:
     430                    # data = '#SBATCH --workdir=/scratch/ms/' + \
     431                            # ecgid + '/' + ecuid
     432                # elif '##PBS -o' in data:
     433                    # data = '##PBS -o /scratch/ms/' + ecgid + '/' + ecuid + \
     434                           # 'flex_ecmwf.$Jobname.$Job_ID.out'
     435                # elif 'FLEXPART_ROOT_SCRIPTS=' in data:
     436                    # if fp_root != '../':
     437                        # data = 'export FLEXPART_ROOT_SCRIPTS=' + fp_root
     438                    # else:
     439                        # data = 'export FLEXPART_ROOT_SCRIPTS=$HOME'
     440            # fo.write(data + '\n')
    407441
    408442    return
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG