Index: python/install.py
===================================================================
--- python/install.py	(revision 02c8c50da359770adb72a6e9287a59e6be76cb36)
+++ python/install.py	(revision efdb01a8ac2d5cef85c651177aa18ac69dd660db)
@@ -64,15 +64,122 @@
 localpythonpath=os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
 sys.path.append(localpythonpath)
-from UIOTools import UIOFiles
+from UIOFiles import UIOFiles
 from string import strip
 from argparse import ArgumentParser,ArgumentDefaultsHelpFormatter
 from GribTools import GribTools
-from FlexpartTools import ECFlexpart, Control, install_args_and_control
+from Control import Control
 from getMARSdata import getMARSdata
 from prepareFLEXPART import prepareFLEXPART
+from ECFlexpart import ECFlexpart
 
 # ------------------------------------------------------------------------------
 # FUNCTIONS
 # ------------------------------------------------------------------------------
+def install_args_and_control():
+    '''
+    @Description:
+        Assigns the command line arguments for installation and reads
+        control file content. Apply default values for non mentioned arguments.
+
+    @Input:
+        <nothing>
+
+    @Return:
+        args: instance of ArgumentParser
+            Contains the commandline arguments from script/program call.
+
+        c: instance of class Control
+            Contains all necessary information of a control file. The parameters
+            are: DAY1, DAY2, DTIME, MAXSTEP, TYPE, TIME, STEP, CLASS, STREAM,
+            NUMBER, EXPVER, GRID, LEFT, LOWER, UPPER, RIGHT, LEVEL, LEVELIST,
+            RESOL, GAUSS, ACCURACY, OMEGA, OMEGADIFF, ETA, ETADIFF, DPDETA,
+            SMOOTH, FORMAT, ADDPAR, WRF, CWC, PREFIX, ECSTORAGE, ECTRANS,
+            ECFSDIR, MAILOPS, MAILFAIL, GRIB2FLEXPART, FLEXPARTDIR
+            For more information about format and content of the parameter see
+            documentation.
+    '''
+    parser = ArgumentParser(description='Install ECMWFDATA software locally or \
+                            on ECMWF machines',
+                            formatter_class=ArgumentDefaultsHelpFormatter)
+
+    parser.add_argument('--target', dest='install_target',
+                        help="Valid targets: local | ecgate | cca , \
+                        the latter two are at ECMWF")
+    parser.add_argument("--makefile", dest="makefile",
+                        help='Name of Makefile to use for compiling CONVERT2')
+    parser.add_argument("--ecuid", dest="ecuid",
+                        help='user id at ECMWF')
+    parser.add_argument("--ecgid", dest="ecgid",
+                        help='group id at ECMWF')
+    parser.add_argument("--gateway", dest="gateway",
+                        help='name of local gateway server')
+    parser.add_argument("--destination", dest="destination",
+                        help='ecaccess destination, e.g. leo@genericSftp')
+
+    parser.add_argument("--flexpart_root_scripts", dest="flexpart_root_scripts",
+                        help="FLEXPART root directory on ECMWF servers \
+                        (to find grib2flexpart and COMMAND file)\n\
+                        Normally ECMWFDATA resides in the scripts directory \
+                        of the FLEXPART distribution, thus the:")
+
+# arguments for job submission to ECMWF, only needed by submit.py
+    parser.add_argument("--job_template", dest='job_template',
+                        default="job.temp.o",
+                        help="job template file for submission to ECMWF")
+
+    parser.add_argument("--controlfile", dest="controlfile",
+                        default='CONTROL.temp',
+                        help="file with control parameters")
+
+    args = parser.parse_args()
+
+    try:
+        c = Control(args.controlfile)
+    except:
+        print('Could not read control file "' + args.controlfile + '"')
+        print('Either it does not exist or its syntax is wrong.')
+        print('Try "' + sys.argv[0].split('/')[-1] +
+              ' -h" to print usage information')
+        exit(1)
+
+    if args.install_target != 'local':
+        if (args.ecgid is None or args.ecuid is None or args.gateway is None
+            or args.destination is None):
+            print('Please enter your ECMWF user id and group id as well as \
+                   the \nname of the local gateway and the ectrans \
+                   destination ')
+            print('with command line options --ecuid --ecgid \
+                   --gateway --destination')
+            print('Try "' + sys.argv[0].split('/')[-1] +
+                  ' -h" to print usage information')
+            print('Please consult ecaccess documentation or ECMWF user support \
+                   for further details')
+            sys.exit(1)
+        else:
+            c.ecuid = args.ecuid
+            c.ecgid = args.ecgid
+            c.gateway = args.gateway
+            c.destination = args.destination
+
+    try:
+        c.makefile = args.makefile
+    except:
+        pass
+
+    if args.install_target == 'local':
+        if args.flexpart_root_scripts is None:
+            c.flexpart_root_scripts = '../'
+        else:
+            c.flexpart_root_scripts = args.flexpart_root_scripts
+
+    if args.install_target != 'local':
+        if args.flexpart_root_scripts is None:
+            c.ec_flexpart_root_scripts = '${HOME}'
+        else:
+            c.ec_flexpart_root_scripts = args.flexpart_root_scripts
+
+    return args, c
+
+
 def main():
     '''
@@ -139,5 +246,5 @@
                         c.ecuid + 'flex_ecmwf.$Jobname.$Job_ID.out'
             if  'export PATH=${PATH}:' in data:
-                data += c.ec_flexpart_root_scripts + '/ECMWFDATA7.0/python'
+                data += c.ec_flexpart_root_scripts + '/ECMWFDATA7.1/python'
             if 'cat>>' in data or 'cat >>' in data:
                 i = data.index('>')
@@ -171,19 +278,19 @@
                 os.chdir('/')
                 p = subprocess.check_call(['tar', '-cvf',
-                                           ecd + '../ECMWFDATA7.0.tar',
+                                           ecd + '../ECMWFDATA7.1.tar',
                                            ecd + 'python',
                                            ecd + 'grib_templates',
                                            ecd + 'src'])
                 try:
-                    os.makedirs(c.flexpart_root_scripts + '/ECMWFDATA7.0')
+                    os.makedirs(c.flexpart_root_scripts + '/ECMWFDATA7.1')
                 except:
                     pass
-                os.chdir(c.flexpart_root_scripts + '/ECMWFDATA7.0')
+                os.chdir(c.flexpart_root_scripts + '/ECMWFDATA7.1')
                 p = subprocess.check_call(['tar', '-xvf',
-                                           ecd + '../ECMWFDATA7.0.tar'])
-                os.chdir(c.flexpart_root_scripts + '/ECMWFDATA7.0/src')
+                                           ecd + '../ECMWFDATA7.1.tar'])
+                os.chdir(c.flexpart_root_scripts + '/ECMWFDATA7.1/src')
 
         os.chdir('../src')
-        print(('install ECMWFDATA7.0 software on ' + target + ' in directory '
+        print(('install ECMWFDATA7.1 software on ' + target + ' in directory '
                + os.getcwd()))
         if c.makefile is None:
@@ -197,10 +304,10 @@
             print(('Using makefile: ' + makefile))
             p = subprocess.check_call(['make', '-f', makefile])
-            p = subprocess.check_call(['ls', '-l',' CONVERT2'])
+            p = subprocess.check_call(['ls', '-l','CONVERT2'])
         except:
             print('compile failed - please edit ' + makefile +
                   ' or try another Makefile in the src directory.')
-            print('most likely GRIB_API_INCLUDE_DIR, GRIB_API_LIB \
-                    and EMOSLIB must be adapted.')
+            print('most likely GRIB_API_INCLUDE_DIR, GRIB_API_LIB '
+                    'and EMOSLIB must be adapted.')
             print('Available Makefiles:')
             print(glob.glob('Makefile*'))
@@ -209,5 +316,5 @@
         os.chdir('/')
         p = subprocess.check_call(['tar', '-cvf',
-                                   ecd + '../ECMWFDATA7.0.tar',
+                                   ecd + '../ECMWFDATA7.1.tar',
                                    ecd + 'python',
                                    ecd + 'grib_templates',
@@ -215,7 +322,7 @@
         try:
             p = subprocess.check_call(['ecaccess-file-put',
-                                       ecd + '../ECMWFDATA7.0.tar',
-                                       'ecgate:/scratch/ms/' + c.ecgid + '/' +
-                                       c.ecuid + '/ECMWFDATA7.0.tar'])
+                                       ecd + '../ECMWFDATA7.1.tar',
+                                       'ecgate:/home/ms/' + c.ecgid + '/' +
+                                       c.ecuid + '/ECMWFDATA7.1.tar'])
         except:
             print('ecaccess-file-put failed! Probably the eccert key has expired.')
@@ -225,14 +332,14 @@
                                    target,
                                    ecd + 'python/compilejob.ksh'])
-        print('compilejob.ksh has been submitted to ecgate for \
-                installation in ' + c.ec_flexpart_root_scripts +
-                '/ECMWFDATA7.0')
-        print('You should get an email with subject flexcompile within \
-                the next few minutes')
+        print('compilejob.ksh has been submitted to ecgate for '
+                'installation in ' + c.ec_flexpart_root_scripts +
+                '/ECMWFDATA7.1')
+        print('You should get an email with subject flexcompile within '
+                'the next few minutes')
 
     elif target.lower() == 'cca':
         os.chdir('/')
         p = subprocess.check_call(['tar', '-cvf',
-                                   ecd + '../ECMWFDATA7.0.tar',
+                                   ecd + '../ECMWFDATA7.1.tar',
                                    ecd + 'python',
                                    ecd + 'grib_templates',
@@ -240,10 +347,10 @@
         try:
             p = subprocess.check_call(['ecaccess-file-put',
-                                       ecd + '../ECMWFDATA7.0.tar',
-                                       'cca:/scratch/ms/' + c.ecgid + '/' +
-                                       c.ecuid + '/ECMWFDATA7.0.tar'])
+                                       ecd + '../ECMWFDATA7.1.tar',
+                                       'cca:/home/ms/' + c.ecgid + '/' +
+                                       c.ecuid + '/ECMWFDATA7.1.tar'])
         except:
-            print('ecaccess-file-put failed! \
-                    Probably the eccert key has expired.')
+            print('ecaccess-file-put failed! '
+                    'Probably the eccert key has expired.')
             exit(1)
 
@@ -251,9 +358,9 @@
                                 '-queueName',
                                 target,
-                                ecd + 'python/compilejob.ksh']))
+                                ecd + 'python/compilejob.ksh'])
         print('compilejob.ksh has been submitted to cca for installation in ' +
-              c.ec_flexpart_root_scripts + '/ECMWFDATA7.0')
-        print('You should get an email with subject flexcompile \
-                within the next few minutes')
+              c.ec_flexpart_root_scripts + '/ECMWFDATA7.1')
+        print('You should get an email with subject flexcompile '
+                'within the next few minutes')
 
     else:
