Ignore:
Timestamp:
02/10/15 12:25:07 (9 years ago)
Author:
labetoulle
Message:

Move all scripts to the same dir to use common configuration files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TOOLS/ConsoGENCMIP6/bin/conso_gencmip6.py

    r2412 r2413  
    77# standard library imports 
    88from argparse import ArgumentParser 
     9import json 
     10import shutil 
     11import os 
    912import os.path 
    10 import shutil 
    11 import json 
    12  
    13  
    14 ######################################## 
    15 def parse_myproject(filename, project): 
    16  
     13import subprocess 
     14# import datetime as dt 
     15 
     16# Application library imports 
     17from gencmip6 import * 
     18from gencmip6_path import * 
     19 
     20 
     21######################################## 
     22def get_storedir(login): 
     23 
     24  command = ["ccc_home", "-A", "-u", login] 
     25  try : 
     26    res = subprocess.check_output(command) 
     27  except Exception as rc : 
     28    # print(rc) 
     29    res = None 
     30 
     31  return res 
     32 
     33 
     34######################################## 
     35def get_dirsize(dirname): 
     36 
     37  command = ["du", "-sbh", dirname] 
     38  try : 
     39    res = float(subprocess.check_output(command)) 
     40  except Exception as rc : 
     41    print(rc) 
     42    res = None 
     43 
     44  return res 
     45 
     46 
     47# ######################################## 
     48# def get_dirlist(dirname): 
     49 
     50 
     51#   return output 
     52 
     53 
     54######################################## 
     55def parse_myproject(filename): 
     56 
     57  project = {} 
     58  project["project"] = "gencmip6" 
    1759  logins  = {} 
     60 
     61  if where_we_run() == "curie": 
     62    try : 
     63      res = subprocess.check_output("ccc_myproject") 
     64    except Exception as rc : 
     65      print(rc) 
     66      exit() 
     67    with open(os.path.join(DIR["DATA"], OUT_CCCMP), "w") as fileout: 
     68      fileout.write(res) 
    1869 
    1970  with open(filename, "r") as filein: 
     
    2374      if project["project"] in ligne: 
    2475        today = ligne.split()[-1] 
     76        today = string_to_date(today) 
     77 
    2578        break 
    2679 
     
    2982      next(filein) 
    3083 
    31     # Login list 
     84    # Login list, until blank line 
    3285    for ligne in filein: 
    3386      if not ligne.strip(): 
     
    3689      logins[login] = float(conso) 
    3790 
    38     # Skip all the rest until we find total 
     91    # Skip until we find consumed time (hours) 
    3992    for ligne in filein: 
    4093      if "Total" in ligne: 
     
    4295        break 
    4396 
    44     # Skip all the rest until we find deadline 
     97    # Skip until we find allocated time (hours) 
    4598    for ligne in filein: 
    4699      if "Allocated" in ligne: 
     
    48101        break 
    49102 
    50     # Skip all the rest until we find deadline 
     103    # Skip until we find theoratical use (%) 
    51104    for ligne in filein: 
    52105      if "Suggested use at this time" in ligne: 
     
    54107        break 
    55108 
    56     # Skip all the rest until we find deadline 
     109    # Skip until we find real use (%) 
    57110    for ligne in filein: 
    58111      if "Real use at this time" in ligne: 
     
    60113        break 
    61114 
    62     # Skip all the rest until we find deadline 
     115    # Skip until we find deadline 
    63116    for ligne in filein: 
    64117      if "Project deadline" in ligne: 
     
    66119        break 
    67120 
    68   return today, total, utheo, ureal, logins 
     121  return project, logins, today, total, utheo, ureal 
    69122 
    70123 
     
    94147                 "theo_use(%)", 
    95148               ) 
    96   result_str = "{:10s} {:12.2f} {:11.2f} {:11.2f}\n".format( 
     149  result_str = "{:%Y-%m-%d} {:12.2f} {:11.2f} {:11.2f}\n".format( 
    97150                 today, 
    98151                 total, 
     
    124177                 "theo_use(%)", 
    125178               ) 
    126   result_str = "{:10s} {:11.2f}\n".format( 
     179  result_str = "{:%Y-%m-%d} {:11.2f}\n".format( 
    127180                 today, 
    128181                 utheo, 
     
    162215 
    163216    for key in sorted(logins): 
    164       result_str = "{:10s} {:10s} {:12.2f}\n".format( 
     217      result_str = "{:%Y-%m-%d} {:10s} {:12.2f}\n".format( 
    165218                     today, 
    166219                     key, 
     
    174227 
    175228######################################## 
    176 def write_store(filename): 
     229def write_store(filename, logins): 
    177230  """ 
    178231  volume cree sur STORE 
     
    182235  """ 
    183236 
    184   pass 
     237  items = (login for login, conso in logins.iteritems() 
     238                  if conso > 0.) 
     239 
     240  for login in items: 
     241    storedir = get_storedir(login) 
     242    if not storedir: 
     243      break 
     244    igcm_out = os.path.join(storedir, "IGCM_OUT") 
     245 
     246    for dirname in os.listdir(igcm_out): 
     247      print(dirname, get_dirsize(dirname)) 
    185248 
    186249 
     
    207270  if args.verbose: 
    208271    print(os.path.basename(__file__)) 
     272    print(where_we_run()) 
    209273    print(args) 
    210274 
    211   # Files and directories 
    212   # ===================== 
    213   LOCAL_DIR = os.path.join( 
    214     "/ccc", "cont003", "home", "dsm", "p86ipsl", "ConsoGENCMIP6", "output" 
    215     # "/home_local", "slipsl", "ConsoGENCMIP6", "output" 
    216   ) 
    217   SAVE_DIR  = os.path.join( 
    218     "/ccc", "work", "cont003", "dsm", "p86ipsl", "ConsoGENCMIP6", 
    219     # "/home_local", "slipsl", "ConsoGENCMIP6", "save" 
    220   ) 
     275  # # Files and directories 
     276  # # ===================== 
     277  # if where_we_run() == "curie": 
     278  #   LOCAL_DIR = os.path.join( 
     279  #     "/ccc", 
     280  #     "cont003", 
     281  #     "home", 
     282  #     "dsm", 
     283  #     "p86ipsl", 
     284  #     "ConsoGENCMIP6", 
     285  #     "output" 
     286  #   ) 
     287  #   SAVE_DIR  = os.path.join( 
     288  #     "/ccc", 
     289  #     "work", 
     290  #     "cont003", 
     291  #     "dsm", 
     292  #     "p86ipsl", 
     293  #     "ConsoGENCMIP6", 
     294  #   ) 
     295  # # elif where_we_run() == "ipsl": 
     296  # #   LOCAL_DIR = os.path.join( 
     297  # #     "/home_local", 
     298  # #     "slipsl", 
     299  # #     "ConsoGENCMIP6", 
     300  # #     "output" 
     301  # #   ) 
     302  # #   SAVE_DIR  = os.path.join( 
     303  # #     "/home_local", 
     304  # #     "slipsl", 
     305  # #     "ConsoGENCMIP6", 
     306  # #     "save" 
     307  # #   ) 
     308  # else: 
     309  #   LOCAL_DIR = os.path.join( 
     310  #     "..", 
     311  #     "output" 
     312  #   ) 
     313  #   SAVE_DIR  = os.path.join( 
     314  #     "..", 
     315  #     "save" 
     316  #   ) 
     317 
     318  # LOCAL_DIR = os.path.abspath(LOCAL_DIR) 
     319  # SAVE_DIR  = os.path.abspath(SAVE_DIR) 
    221320 
    222321  OUT_PARAM = "OUT_CONSO_PARAM" 
     
    225324  OUT_LOGIN = "OUT_CONSO_LOGIN" 
    226325  OUT_STORE = "OUT_CONSO_STORE" 
     326  OUT_CCCMP = "ccc_myproject.dat" 
    227327 
    228328  if args.verbose: 
    229     print(LOCAL_DIR) 
    230     print(SAVE_DIR) 
    231  
    232   ccc_myproject = "ccc_myproject.dat" 
    233  
    234   project = {} 
    235   project["project"] = "gencmip6" 
    236  
    237   (today, total, utheo, ureal, logins) = \ 
    238       parse_myproject( 
    239         os.path.join(LOCAL_DIR, ccc_myproject), 
    240         project 
    241       ) 
     329    # print(LOCAL_DIR) 
     330    # print(SAVE_DIR) 
     331    print(DIR["DATA"]) 
     332    print(DIR["SAVE"]) 
     333 
     334  (project, logins, today, total, utheo, ureal) = \ 
     335      parse_myproject(os.path.join(DIR["DATA"], OUT_CCCMP)) 
    242336 
    243337  if args.verbose: 
     
    251345  # 1- Parametres du projet 
    252346  # ----------------------- 
    253   write_param(os.path.join(LOCAL_DIR, OUT_PARAM), project) 
     347  write_param(os.path.join(DIR["DATA"], OUT_PARAM), project) 
    254348 
    255349  # 2- Conso totale par jour 
    256350  # ------------------------ 
    257351  write_bilan( 
    258     os.path.join(LOCAL_DIR, OUT_BILAN), 
     352    os.path.join(DIR["DATA"], OUT_BILAN), 
    259353    today, 
    260354    total, 
     
    265359  # 2b- Conso théorique par jour 
    266360  # ---------------------------- 
    267   write_utheo(os.path.join(LOCAL_DIR, OUT_UTHEO), today, utheo) 
     361  write_utheo(os.path.join(DIR["DATA"], OUT_UTHEO), today, utheo) 
    268362 
    269363  # 3- Conso par login (HOME) 
    270364  # ------------------------- 
    271   write_login(os.path.join(LOCAL_DIR, OUT_LOGIN), today, logins) 
     365  write_login(os.path.join(DIR["DATA"], OUT_LOGIN), today, logins) 
    272366 
    273367  # 4- volume cree sur STORE 
    274368  # ------------------------ 
    275   write_store(os.path.join(LOCAL_DIR, OUT_STORE)) 
     369  # if where_we_run() == "curie": 
     370  #   write_store(os.path.join(DIR["DATA"], OUT_STORE)) 
     371  write_store(os.path.join(DIR["DATA"], OUT_STORE), logins) 
    276372 
    277373  # Save files (on WORKDIR) 
    278374  # ======================= 
    279375  if not args.dryrun: 
    280     suffix = today.replace("-", "") 
     376    suffix = "{:%Y%m%d}".format(today) 
    281377    file_list = [ 
    282378      OUT_PARAM, 
     
    287383    ] 
    288384    for filename in file_list: 
    289       filein  = os.path.join(LOCAL_DIR, filename) 
     385      filein  = os.path.join(DIR["DATA"], filename) 
    290386      if os.path.isfile(filein): 
    291         fileout = os.path.join(SAVE_DIR, "_".join((filename, suffix))) 
     387        fileout = os.path.join(DIR["SAVE"], "_".join((filename, suffix))) 
    292388        shutil.copy(filein, fileout) 
Note: See TracChangeset for help on using the changeset viewer.