|
|
#!PYTHONEXE
|
|
|
|
|
|
#$Id: changeFileStatus.py 7045 2019-10-07 19:56:46Z brideout $
|
|
|
|
|
|
usage = """
|
|
|
changeFileStatus.py is a script used to change the status of an
|
|
|
existing Madrigal file. The file permsiion, the file description,
|
|
|
or the file category can be changed. updateMaster is run at end
|
|
|
of script to push local metadata into summary metadata.
|
|
|
|
|
|
Required arguments:
|
|
|
|
|
|
--filename - basename of existing Madrigal file.
|
|
|
|
|
|
--expDir - full path to experiment directory. Example:
|
|
|
"/opt/madrigal/experiments/1998/mlh/20jan98"
|
|
|
|
|
|
Optional arguments - set these to change a file attribute:
|
|
|
|
|
|
--permission - 0 for public, 1 for private (restricted to certain IP range)
|
|
|
|
|
|
--fileDesc - file decription
|
|
|
|
|
|
--category - 1=default, 2=variant, or 3=history
|
|
|
|
|
|
--fileAnalyst - set file analyst name for this file.
|
|
|
|
|
|
--fileAnalystEmail - set file analyst email for this file.
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
import os, os.path
|
|
|
import getopt
|
|
|
import traceback
|
|
|
|
|
|
import madrigal.admin
|
|
|
|
|
|
|
|
|
|
|
|
# parse command line
|
|
|
arglist = ''
|
|
|
longarglist = ['filename=',
|
|
|
'expDir=',
|
|
|
'permission=',
|
|
|
'fileDesc=',
|
|
|
'category=',
|
|
|
'fileAnalyst=',
|
|
|
'fileAnalystEmail=']
|
|
|
|
|
|
optlist, args = getopt.getopt(sys.argv[1:], arglist, longarglist)
|
|
|
|
|
|
|
|
|
# set default values
|
|
|
filename = None
|
|
|
expDir = None
|
|
|
permission = None
|
|
|
fileDesc = None
|
|
|
category = None
|
|
|
fileAnalyst = None
|
|
|
fileAnalystEmail = None
|
|
|
|
|
|
|
|
|
for opt in optlist:
|
|
|
if opt[0] == '--filename':
|
|
|
filename = opt[1]
|
|
|
elif opt[0] == '--expDir':
|
|
|
expDir = opt[1]
|
|
|
elif opt[0] == '--permission':
|
|
|
permission = int(opt[1])
|
|
|
elif opt[0] == '--fileDesc':
|
|
|
fileDesc = opt[1]
|
|
|
elif opt[0] == '--category':
|
|
|
category = opt[1]
|
|
|
elif opt[0] == '--fileAnalyst':
|
|
|
fileAnalyst = opt[1]
|
|
|
elif opt[0] == '--fileAnalystEmail':
|
|
|
fileAnalystEmail = opt[1]
|
|
|
|
|
|
else:
|
|
|
raise ValueError('Illegal option %s\n%s' % (opt[0], usage))
|
|
|
|
|
|
# check that all required arguments passed in
|
|
|
if filename == None:
|
|
|
print('--filename argument required - must be basename of existing madrigal file')
|
|
|
print(usage)
|
|
|
sys.exit(0)
|
|
|
|
|
|
if expDir == None:
|
|
|
print('--expDir argument required - must be full path to experiment directory')
|
|
|
sys.exit(0)
|
|
|
|
|
|
if permission == None and fileDesc == None and category == None:
|
|
|
print('No file attributes are being changed')
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
adminObj = madrigal.admin.MadrigalDBAdmin()
|
|
|
|
|
|
adminObj.changeFileStatus(expDir,
|
|
|
filename,
|
|
|
category,
|
|
|
fileDesc,
|
|
|
permission,
|
|
|
fileAnalyst=fileAnalyst,
|
|
|
fileAnalystEmail=fileAnalystEmail)
|
|
|
|
|
|
|
|
|
print('Status of file %s changed in local metadata - run updateMaster to register' % (filename))
|
|
|
|