ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/LFNBaseName.py
Revision: 1.26
Committed: Mon Apr 15 15:20:23 2013 UTC (12 years ago) by fanzago
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_2_9_1, CRAB_2_9_1_pre2, CRAB_2_9_1_pre1, CRAB_2_9_0, CRAB_2_9_0_pre2, CRAB_2_9_0_pre1, CRAB_2_8_8, CRAB_2_8_8_pre1, CRAB_2_8_7_patch3, CRAB_2_8_7_patch2, CRAB_2_8_7_patch1, CRAB_2_8_7, CRAB_2_8_7_pre2, HEAD
Changes since 1.25: +7 -2 lines
Log Message:
fix for bug #100424: check of allowed characters in publish_data_name

File Contents

# User Rev Content
1 afanfani 1.2 #!/usr/bin/env python
2     """
3     _LFNBaseName_
4     """
5    
6     from crab_exceptions import *
7 spiga 1.21 from crab_util import runCommand, getUserName
8 afanfani 1.2 import common
9 afanfani 1.12 import os, string, time
10 afanfani 1.2
11    
12 spiga 1.21 def LFNBase(forced_path, PrimaryDataset='',ProcessedDataset='',merged=True,publish=False):
13 afanfani 1.2 """
14     """
15 fanzago 1.10 if (PrimaryDataset == 'null'):
16     PrimaryDataset = ProcessedDataset
17 spiga 1.20 if PrimaryDataset != '':
18     if ( PrimaryDataset[0] == '/' ): PrimaryDataset=PrimaryDataset[1:]
19 spiga 1.24 if forced_path.find('store/group')>0:
20     lfnbase = os.path.join(forced_path, PrimaryDataset, ProcessedDataset)
21     else:
22     lfnbase = os.path.join(forced_path, getUserName(), PrimaryDataset, ProcessedDataset)
23 fanzago 1.23 if (publish == True):
24 fanzago 1.25 checkSlash(ProcessedDataset)
25 fanzago 1.23 checkLength(lfnbase, forced_path, PrimaryDataset, ProcessedDataset)
26     return lfnbase
27 ewv 1.9
28 fanzago 1.25 def checkSlash(ProcessedDataset):
29     """
30     check if [USER].publish_data_name contains not allowed slash
31     """
32 fanzago 1.26 import re
33 fanzago 1.25
34 fanzago 1.26 #if (str(ProcessedDataset).find("/") > -1):
35     # raise CrabException("Warning: [USER] publication_data_name contains a '/' characters that is not allowed. Please change the publication_data_name value")
36     m = re.findall("[^-\w_\.%]+", str(ProcessedDataset))
37     if (m != []):
38     common.logger.debug("check not allowed characters in the publication_data_name = " + str(m))
39     raise CrabException("Warning: [USER] publication_data_name contains not allowed characters %s . Please change the publication_data_name value" % str(m))
40 fanzago 1.25
41 fanzago 1.23 def checkLength(lfnbase, forced_path, PrimaryDataset, ProcessedDataset):
42     """
43     """
44    
45     len_primary = len(PrimaryDataset)
46    
47     common.logger.debug("CheckLength of LFN and User DatasetName")
48     common.logger.debug("max length for complete LFN is 500 characters, max length for primary dataset is 100 characters")
49     common.logger.debug("PrimaryDataset = " + PrimaryDataset)
50     common.logger.debug("len_primary = " + str(len_primary))
51    
52     if (len_primary > 100):
53     raise CrabException("Warning: you required user_data_publication. The PrimaryDatasetName has to be < 100 characters")
54    
55     if (PrimaryDataset != ProcessedDataset):
56     common.logger.debug("ProcessedDataset = " + ProcessedDataset)
57     common.logger.debug("len(ProcessedDataset) = " + str(len(ProcessedDataset)))
58 afanfani 1.2
59 fanzago 1.23 common.logger.debug("forced_path = " + forced_path)
60     common.logger.debug("len(forced_path) = " + str(len(forced_path)))
61    
62     user = getUserName()
63     len_user_name = len(user)
64     common.logger.debug("user = " + user)
65     common.logger.debug("len_user_name = " + str(len_user_name))
66    
67     common.logger.debug("lfnbase = " + lfnbase)
68     common.logger.debug("len(lfnbase) = " + str(len(lfnbase)))
69    
70     ### we suppose a output_file_name of 50 characters ###
71     if len(lfnbase)>450:
72     if (PrimaryDataset != ProcessedDataset):
73     #500 - len_user_name - len_primary - len(forced) - len(PSETHASH = 32) - 4(/) - output(50)
74     #~400 - len_user_name - len_primary - len(forced)
75     if (len(ProcessedDataset) > (400 - len_user_name - len_primary - len(forced_path))):
76     raise CrabException("Warning: publication name too long. USER.publish_data_name has to be < " + str(400 - len_user_name - len_primary - len(forced_path)) + " characters")
77     else:
78     raise CrabException("Warning: LFN > 500 characters")
79     else:
80     if (len(ProcessedDataset) > (400 - len_user_name - len(forced_path)) / 2):
81     raise CrabException("Warning: publication name too long. USER.publish_data_name has to be < " + str((400 - len_user_name - len(forced_path)) / 2) + " characters")
82     else:
83     raise CrabException("Warning: LFN > 500 characters")
84    
85 afanfani 1.4
86 afanfani 1.2 if __name__ == '__main__' :
87     """
88     """
89 spiga 1.22 import logging
90     common.logger = logging
91 afanfani 1.2
92 ewv 1.9 print "xx %s xx"%getUserName()
93 afanfani 1.2 baselfn = LFNBase("datasetstring")
94 ewv 1.9 print baselfn
95 afanfani 1.2
96     unmergedlfn = LFNBase("datasetstring",merged=False)
97 ewv 1.9 print unmergedlfn
98 afanfani 1.2 print PFNportion("datasetstring")