Ignore:
Timestamp:
Jan 15, 2019, 1:03:37 AM (5 years ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
master, ctbto, dev
Children:
6f951ca
Parents:
0629ba8
Message:

new build of sphinx for updated api

File:
1 edited

Legend:

Unmodified
Added
Removed
  • documentation/Sphinx/build/html/_modules/submit.html

    r274f9ef r2625ca8  
    171171<span class="c1">#        - changed path names to variables from config file</span>
    172172<span class="c1">#        - added option for writing mars requests to extra file</span>
    173 <span class="c1">#          additionally,as option without submitting the mars jobs</span>
     173<span class="c1">#          additionally, as option without submitting the mars jobs</span>
     174<span class="c1">#        - splitted submit function to use genshi templates for the</span>
     175<span class="c1">#          job script and avoid code duplication</span>
    174176<span class="c1">#</span>
    175177<span class="c1"># @License:</span>
    176 <span class="c1">#    (C) Copyright 2014-2018.</span>
    177 <span class="c1">#</span>
    178 <span class="c1">#    This software is licensed under the terms of the Apache Licence Version 2.0</span>
    179 <span class="c1">#    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span>
    180 <span class="c1">#</span>
    181 <span class="c1"># @Program Functionality:</span>
    182 <span class="c1">#    This program is the main program of flex_extract and controls the</span>
    183 <span class="c1">#    program flow.</span>
    184 <span class="c1">#    If it is supposed to work locally then it works through the necessary</span>
    185 <span class="c1">#    functions get_mars_data and prepareFlexpart. Otherwise it prepares</span>
    186 <span class="c1">#    a shell job script which will do the necessary work on the</span>
    187 <span class="c1">#    ECMWF server and is submitted via ecaccess-job-submit.</span>
    188 <span class="c1">#</span>
    189 <span class="c1"># @Program Content:</span>
    190 <span class="c1">#    - main</span>
    191 <span class="c1">#    - submit</span>
    192 <span class="c1">#</span>
     178<span class="c1">#    (C) Copyright 2014-2019.</span>
     179<span class="c1">#    Anne Philipp, Leopold Haimberger</span>
     180<span class="c1">#</span>
     181<span class="c1">#    This work is licensed under the Creative Commons Attribution 4.0</span>
     182<span class="c1">#    International License. To view a copy of this license, visit</span>
     183<span class="c1">#    http://creativecommons.org/licenses/by/4.0/ or send a letter to</span>
     184<span class="c1">#    Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</span>
    193185<span class="c1">#*******************************************************************************</span>
     186<span class="sd">&#39;&#39;&#39;This script allows the user to extract meteorological fields from the ECMWF.</span>
     187
     188<span class="sd">It prepares the settings for retrieving the data from ECMWF servers and</span>
     189<span class="sd">process the resulting files to prepare them for the use with FLEXPART or</span>
     190<span class="sd">FLEXTRA.</span>
     191
     192<span class="sd">If it is supposed to work locally then it works through the necessary</span>
     193<span class="sd">functions get_mars_data and prepare_flexpart. Otherwise it prepares</span>
     194<span class="sd">a job script (korn shell) which will do the necessary work on the</span>
     195<span class="sd">ECMWF server. This script will de submitted via the ecaccess command</span>
     196<span class="sd">ecaccess-job-submit.</span>
     197
     198<span class="sd">This file can also be imported as a module which then contains the following</span>
     199<span class="sd">functions:</span>
     200
     201<span class="sd">    * main - the main function of the script</span>
     202<span class="sd">    * submit - calls mk_jobscript depending on operation mode and submits its</span>
     203<span class="sd">    * mk_jobscript - creates the job script from a template</span>
     204
     205<span class="sd">Type: submit.py --help</span>
     206<span class="sd">to get information about command line parameters.</span>
     207<span class="sd">Read the documentation for usage instructions.</span>
     208<span class="sd">&#39;&#39;&#39;</span>
    194209
    195210<span class="c1"># ------------------------------------------------------------------------------</span>
     
    201216<span class="kn">import</span> <span class="nn">inspect</span>
    202217<span class="kn">import</span> <span class="nn">collections</span>
     218<span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
    203219
    204220<span class="c1"># software specific classes and modules from flex_extract</span>
    205221<span class="kn">import</span> <span class="nn">_config</span>
    206 <span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_arguments</span><span class="p">,</span>
     222<span class="kn">from</span> <span class="nn">mods.tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span>
    207223                        <span class="n">submit_job_to_ecserver</span><span class="p">,</span> <span class="n">read_ecenv</span><span class="p">)</span>
    208224<span class="kn">from</span> <span class="nn">mods.get_mars_data</span> <span class="k">import</span> <span class="n">get_mars_data</span>
     
    211227
    212228<span class="c1"># ------------------------------------------------------------------------------</span>
    213 <span class="c1"># FUNCTIONS</span>
     229<span class="c1"># METHODS</span>
    214230<span class="c1"># ------------------------------------------------------------------------------</span>
    215231
     
    228244<span class="sd">    &#39;&#39;&#39;</span>
    229245
    230     <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_arguments</span><span class="p">()</span>
     246    <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span>
    231247    <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span>
    232248
     
    247263        <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
    248264            <span class="n">prepare_flexpart</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">ppid</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span>
    249             <span class="n">normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">&#39;FLEX_EXTRACT IS DONE!&#39;</span><span class="p">)</span>
     265            <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">&#39;FLEX_EXTRACT IS DONE!&#39;</span>
    250266        <span class="k">else</span><span class="p">:</span>
    251             <span class="n">normal_exit</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">&#39;PRINTING MARS_REQUESTS DONE!&#39;</span><span class="p">)</span>
    252     <span class="c1"># send files to ECMWF server and install there</span>
     267            <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">&#39;PRINTING MARS_REQUESTS DONE!&#39;</span>
     268    <span class="c1"># send files to ECMWF server</span>
    253269    <span class="k">else</span><span class="p">:</span>
    254270        <span class="n">submit</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">job_template</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span>
     271        <span class="n">exit_message</span> <span class="o">=</span> <span class="s1">&#39;FLEX_EXTRACT JOB SCRIPT IS SUBMITED!&#39;</span>
     272
     273    <span class="n">normal_exit</span><span class="p">(</span><span class="n">exit_message</span><span class="p">)</span>
    255274
    256275    <span class="k">return</span></div>
    257276
    258277<div class="viewcode-block" id="submit"><a class="viewcode-back" href="../api.html#submit.submit">[docs]</a><span class="k">def</span> <span class="nf">submit</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">queue</span><span class="p">):</span>
    259     <span class="sd">&#39;&#39;&#39;Prepares the job script and submit it to the specified queue.</span>
     278    <span class="sd">&#39;&#39;&#39;Prepares the job script and submits it to the specified queue.</span>
    260279
    261280<span class="sd">    Parameters</span>
    262281<span class="sd">    ----------</span>
    263 <span class="sd">    jtemplate : :obj:`string`</span>
     282<span class="sd">    jtemplate : str</span>
    264283<span class="sd">        Job template file from sub-directory &quot;_templates&quot; for</span>
    265284<span class="sd">        submission to ECMWF. It contains all necessary</span>
     
    268287<span class="sd">        Default is &quot;job.temp&quot;.</span>
    269288
    270 <span class="sd">    c : :obj:`ControlFile`</span>
     289<span class="sd">    c : ControlFile</span>
    271290<span class="sd">        Contains all the parameters of CONTROL file and</span>
    272291<span class="sd">        command line.</span>
    273292
    274 <span class="sd">    queue : :obj:`string`</span>
     293<span class="sd">    queue : str</span>
    275294<span class="sd">        Name of queue for submission to ECMWF (e.g. ecgate or cca )</span>
    276295
     
    280299<span class="sd">    &#39;&#39;&#39;</span>
    281300
    282     <span class="c1"># read template file and get index for CONTROL input</span>
    283     <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">jtemplate</span><span class="p">))</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
    284         <span class="n">lftext</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
    285     <span class="n">insert_point</span> <span class="o">=</span> <span class="n">lftext</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;EOF&#39;</span><span class="p">)</span>
    286 
    287301    <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span>
    288302    <span class="c1"># --------- create on demand job script ------------------------------------</span>
    289         <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">&gt;</span> <span class="mi">24</span><span class="p">:</span>
     303        <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span><span class="p">:</span>
    290304            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;---- Pure forecast mode! ----&#39;</span><span class="p">)</span>
    291305        <span class="k">else</span><span class="p">:</span>
    292306            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;---- On-demand mode! ----&#39;</span><span class="p">)</span>
     307
    293308        <span class="n">job_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_JOBSCRIPTS</span><span class="p">,</span>
    294                                 <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;ksh&#39;</span><span class="p">)</span>
    295         <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span>
    296 
    297         <span class="n">lftextondemand</span> <span class="o">=</span> <span class="n">lftext</span><span class="p">[:</span><span class="n">insert_point</span><span class="p">]</span> <span class="o">+</span> <span class="n">clist</span> <span class="o">+</span> <span class="n">lftext</span><span class="p">[</span><span class="n">insert_point</span><span class="p">:]</span>
    298 
    299         <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">job_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
    300             <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lftextondemand</span><span class="p">))</span>
    301 
    302         <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span>
     309                                <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">5</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;.ksh&#39;</span><span class="p">)</span>
     310
     311        <span class="c1"># divide time periode into specified number of job chunks</span>
     312        <span class="c1"># to have multiple job scripts</span>
     313        <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">job_chunk</span><span class="p">:</span>
     314            <span class="n">start</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">start_date</span><span class="p">,</span> <span class="s1">&#39;%Y%m</span><span class="si">%d</span><span class="s1">&#39;</span><span class="p">)</span>
     315            <span class="n">end</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">end_date</span><span class="p">,</span> <span class="s1">&#39;%Y%m</span><span class="si">%d</span><span class="s1">&#39;</span><span class="p">)</span>
     316            <span class="n">chunk</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">job_chunk</span><span class="p">)</span>
     317
     318            <span class="k">while</span> <span class="n">start</span> <span class="o">&lt;=</span> <span class="n">end</span><span class="p">:</span>
     319                <span class="k">if</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="n">end</span><span class="p">:</span>
     320                    <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="p">(</span><span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span><span class="p">)</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span>
     321                <span class="k">else</span><span class="p">:</span>
     322                    <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">end</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span>
     323
     324                <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span>
     325
     326                <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span>
     327
     328                <span class="n">job_id</span> <span class="o">=</span> <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span>
     329                <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;The job id is: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">job_id</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
     330
     331                <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">chunk</span>
     332                <span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="n">start</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y%m</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span>
     333        <span class="c1"># submit a single job script</span>
     334        <span class="k">else</span><span class="p">:</span>
     335            <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span>
     336
     337            <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span>
     338
     339            <span class="n">job_id</span> <span class="o">=</span> <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span>
     340            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;The job id is: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">job_id</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
    303341
    304342    <span class="k">else</span><span class="p">:</span>
    305343    <span class="c1"># --------- create operational job script ----------------------------------</span>
    306344        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;---- Operational mode! ----&#39;</span><span class="p">)</span>
     345
    307346        <span class="n">job_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_JOBSCRIPTS</span><span class="p">,</span>
    308347                                <span class="n">jtemplate</span><span class="p">[:</span><span class="o">-</span><span class="mi">5</span><span class="p">]</span> <span class="o">+</span> <span class="s1">&#39;oper.ksh&#39;</span><span class="p">)</span>
    309 
    310         <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span>
    311             <span class="n">mt</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span>
    312         <span class="k">else</span><span class="p">:</span>
    313             <span class="n">mt</span> <span class="o">=</span> <span class="mi">0</span>
    314348
    315349        <span class="n">c</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">&#39;</span>
    316350        <span class="n">c</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">{MSJ_YEAR}</span><span class="s1">$</span><span class="si">{MSJ_MONTH}</span><span class="s1">$</span><span class="si">{MSJ_DAY}</span><span class="s1">&#39;</span>
    317351        <span class="n">c</span><span class="o">.</span><span class="n">base_time</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">{MSJ_BASETIME}</span><span class="s1">&#39;</span>
    318         <span class="k">if</span> <span class="n">mt</span> <span class="o">&gt;</span> <span class="mi">24</span><span class="p">:</span>
     352        <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">&gt;</span> <span class="mi">24</span><span class="p">:</span>
    319353            <span class="n">c</span><span class="o">.</span><span class="n">time</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">{MSJ_BASETIME}</span><span class="s1"> </span><span class="si">{MSJ_BASETIME}</span><span class="s1">&#39;</span>
    320354
    321         <span class="n">colist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span>
    322 
    323         <span class="n">lftextoper</span> <span class="o">=</span> <span class="n">lftext</span><span class="p">[:</span><span class="n">insert_point</span><span class="p">]</span> <span class="o">+</span> <span class="n">colist</span> <span class="o">+</span> <span class="n">lftext</span><span class="p">[</span><span class="n">insert_point</span> <span class="o">+</span> <span class="mi">2</span><span class="p">:]</span>
    324 
     355        <span class="n">clist</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">to_list</span><span class="p">()</span>
     356
     357        <span class="n">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">)</span>
     358
     359        <span class="n">job_id</span> <span class="o">=</span> <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span>
     360        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;The job id is: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">job_id</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span>
     361
     362    <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;You should get an email per job with subject flex.hostname.pid&#39;</span><span class="p">)</span>
     363
     364    <span class="k">return</span></div>
     365
     366<div class="viewcode-block" id="mk_jobscript"><a class="viewcode-back" href="../api.html#submit.mk_jobscript">[docs]</a><span class="k">def</span> <span class="nf">mk_jobscript</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span> <span class="n">job_file</span><span class="p">,</span> <span class="n">clist</span><span class="p">):</span>
     367    <span class="sd">&#39;&#39;&#39;Creates the job script from template.</span>
     368
     369<span class="sd">    Parameters</span>
     370<span class="sd">    ----------</span>
     371<span class="sd">    jtemplate : str</span>
     372<span class="sd">        Job template file from sub-directory &quot;_templates&quot; for</span>
     373<span class="sd">        submission to ECMWF. It contains all necessary</span>
     374<span class="sd">        module and variable settings for the ECMWF environment as well as</span>
     375<span class="sd">        the job call and mail report instructions.</span>
     376<span class="sd">        Default is &quot;job.temp&quot;.</span>
     377
     378<span class="sd">    job_file : str</span>
     379<span class="sd">        Path to the job script file.</span>
     380
     381<span class="sd">    clist : list of str</span>
     382<span class="sd">        Contains all necessary parameters for ECMWF CONTROL file.</span>
     383
     384<span class="sd">    Return</span>
     385<span class="sd">    ------</span>
     386
     387<span class="sd">    &#39;&#39;&#39;</span>
     388    <span class="kn">from</span> <span class="nn">genshi.template.text</span> <span class="k">import</span> <span class="n">NewTextTemplate</span>
     389    <span class="kn">from</span> <span class="nn">genshi.template</span> <span class="k">import</span>  <span class="n">TemplateLoader</span>
     390    <span class="kn">from</span> <span class="nn">genshi.template.eval</span> <span class="k">import</span> <span class="n">UndefinedError</span>
     391
     392    <span class="c1"># load template and insert control content as list</span>
     393    <span class="k">try</span><span class="p">:</span>
     394        <span class="n">loader</span> <span class="o">=</span> <span class="n">TemplateLoader</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_TEMPLATES</span><span class="p">,</span> <span class="n">auto_reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
     395        <span class="n">control_template</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">jtemplate</span><span class="p">,</span>
     396                                       <span class="bp">cls</span><span class="o">=</span><span class="n">NewTextTemplate</span><span class="p">)</span>
     397
     398        <span class="n">stream</span> <span class="o">=</span> <span class="n">control_template</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">control_content</span><span class="o">=</span><span class="n">clist</span><span class="p">)</span>
     399    <span class="k">except</span> <span class="n">UndefinedError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
     400        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;... ERROR &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
     401
     402        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">... error occured while trying to generate jobscript&#39;</span><span class="p">)</span>
     403    <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
     404        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;... ERROR CODE: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">errno</span><span class="p">))</span>
     405        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;... ERROR MESSAGE:</span><span class="se">\n</span><span class="s1"> </span><span class="se">\t</span><span class="s1"> &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">strerror</span><span class="p">))</span>
     406
     407        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">... error occured while trying to generate jobscript&#39;</span><span class="p">)</span>
     408
     409    <span class="c1"># create jobscript file</span>
     410    <span class="k">try</span><span class="p">:</span>
    325411        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">job_file</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
    326             <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lftextoper</span><span class="p">))</span>
    327 
    328         <span class="n">submit_job_to_ecserver</span><span class="p">(</span><span class="n">queue</span><span class="p">,</span> <span class="n">job_file</span><span class="p">)</span>
    329 
    330     <span class="c1"># --------------------------------------------------------------------------</span>
    331     <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;You should get an email with subject flex.hostname.pid&#39;</span><span class="p">)</span>
     412            <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">stream</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s1">&#39;text&#39;</span><span class="p">))</span>
     413    <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
     414        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;... ERROR CODE: &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">errno</span><span class="p">))</span>
     415        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;... ERROR MESSAGE:</span><span class="se">\n</span><span class="s1"> </span><span class="se">\t</span><span class="s1"> &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">strerror</span><span class="p">))</span>
     416
     417        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">... error occured while trying to write &#39;</span> <span class="o">+</span> <span class="n">job_file</span><span class="p">)</span>
    332418
    333419    <span class="k">return</span></div>
     420
    334421
    335422<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
     
    347434  <div role="contentinfo">
    348435    <p>
    349         &copy; Copyright 2018, Anne Philipp and Leopold Haimberger.
     436        &copy; Copyright 2018, Anne Philipp and Leopold Haimberger
    350437
    351438    </p>
     
    366453 
    367454
    368     <script type="text/javascript">
    369         var DOCUMENTATION_OPTIONS = {
    370             URL_ROOT:'../',
    371             VERSION:'7.1 alpha',
    372             LANGUAGE:'None',
    373             COLLAPSE_INDEX:false,
    374             FILE_SUFFIX:'.html',
    375             HAS_SOURCE:  true,
    376             SOURCELINK_SUFFIX: '.txt'
    377         };
    378     </script>
    379       <script type="text/javascript" src="../_static/jquery.js"></script>
    380       <script type="text/javascript" src="../_static/underscore.js"></script>
    381       <script type="text/javascript" src="../_static/doctools.js"></script>
    382       <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
     455   
     456   
     457      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
     458        <script type="text/javascript" src="../_static/jquery.js"></script>
     459        <script type="text/javascript" src="../_static/underscore.js"></script>
     460        <script type="text/javascript" src="../_static/doctools.js"></script>
     461   
    383462
    384463 
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG