本文整理汇总了Python中vsc.utils.generaloption.simple_option函数的典型用法代码示例。如果您正苦于以下问题:Python simple_option函数的具体用法?Python simple_option怎么用?Python simple_option使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了simple_option函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
def main():
"""
Main script.
"""
options = {
"jobid": ("The PBS_JOBID of the job for which we want information", None, "store", None),
"information": (
"Comma-separated list of the job info to print. " "Entries of the format input_key:output_key",
None,
"store",
None,
),
}
opts = simple_option(options)
if not opts.options.jobid:
logger.error("jobid is a required option. Bailing.")
sys.exit(1)
pquery = PBSQuery()
current_job = pquery.getjob(opts.options.jobid)
s = transform_info(current_job, opts.options.information)
print "\n".join(s)
示例2: main
def main():
opts = {
'github-account': ("GitHub account where repository is located", None, 'store', 'hpcugent', 'a'),
'github-user': ("GitHub user to use (for authenticated access)", None, 'store', 'boegel', 'u'),
'repository': ("Repository to use", None, 'store', 'easybuild-easyconfigs', 'r'),
}
go = simple_option(go_dict=opts, descr="Script to print overview of pull requests for a GitHub repository")
pickle_file = None
if go.args:
pickle_file = go.args[0]
prs = fetch_pr_data(pickle_file, go.options.github_user, go.options.github_account, go.options.repository)
html_file = HTML_FILE % go.options.repository
print("Generating %s..." % html_file)
handle = open(html_file, 'w')
handle.write(HTML_HEADER)
handle.write(gen_table_header())
pr_cnt, table_rows, merged_today, last_update = gen_table_rows(prs)
handle.write(table_rows)
handle.write(HTML_FOOTER % {
'merged_today': merged_today,
'pr_cnt': pr_cnt,
'repo': '%s/%s' % (go.options.github_account, go.options.repository),
'timestamp': last_update, #datetime.now().strftime(format='%d %B %Y %H:%M:%S'),
})
handle.close()
示例3: main
def main():
options = {
'storage': ('the VSC filesystems that are checked by this script', 'strlist', 'store', []),
'threshold': ('allowed the time difference between the cached quota and the time of running', None, 'store',
DEFAULT_ALLOWED_TIME_THRESHOLD),
'fileset_prefixes': ('the filesets that we allow for showing QuotaUser', 'strlist', 'store', []),
'vo': ('provide storage details for the VO you belong to', None, 'store_true', False)
}
opts = simple_option(options, config_files=['/etc/quota_information.conf'])
storage = VscStorage()
vsc = VSC(False)
user_name = getpwuid(os.getuid())[0]
vos = [g.gr_name for g in grp.getgrall()
if user_name in g.gr_mem
and g.gr_name.startswith('gvo')
and g.gr_name != vsc.default_vo] # default VO has no quota associated with it
opts.options.vo = opts.options.vo and vos
now = time.time()
print_user_quota(opts, storage, user_name, now)
if opts.options.vo:
print_vo_quota(opts, storage, vos, now)
示例4: main
def main():
""" Builds a zookeeper tree with ACLS on from a config file"""
options = {
'servers':('list of zk servers', 'strlist', 'store', None)
}
go = simple_option(options)
rpasswd, rpath = get_rootinfo(go.configfile_remainder)
znodes, users = parse_zkconfig(go.configfile_remainder)
logger.debug("znodes: %s" % znodes)
logger.debug("users: %s" % users)
# Connect to zookeeper
# initial authentication credentials and acl for admin on root level
acreds = [('digest', 'root:' + rpasswd)]
root_acl = make_digest_acl('root', rpasswd, all=True)
# Create kazoo/zookeeper connection with root credentials
servers = go.options.servers
zkclient = VscKazooClient(servers, auth_data=acreds)
# Iterate paths
for path, attrs in znodes.iteritems():
logger.debug("path %s attribs %s" % (path, attrs))
acls = dict((arg, attrs[arg]) for arg in attrs if arg not in ('value', 'ephemeral', 'sequence', 'makepath'))
acl_list = parse_acls(acls, users, root_acl)
kwargs = dict((arg, attrs[arg]) for arg in attrs if arg in ('ephemeral', 'sequence', 'makepath'))
if not zkclient.exists_znode(path):
zkclient.make_znode(path, value=attrs.get('value', ''), acl=acl_list, **kwargs)
else:
logger.warning('node %s already exists' % path)
zkclient.znode_acls(path, acl_list)
zkclient.exit()
示例5: main
def main():
options = {
'storage': ('the VSC filesystems that are checked by this script', None, 'extend', []),
'threshold': ('allowed the time difference between the cached quota and the time of running', None, 'store',
DEFAULT_ALLOWED_TIME_THRESHOLD),
}
opts = simple_option(options, config_files='/etc/quota_information.conf')
storage = VscStorage()
user_name = getpwuid(os.getuid())[0]
now = time.time()
for storage_name in opts.options.storage:
mount_point = storage[storage_name].login_mount_point
path_template = storage.path_templates[storage_name]['user']
path = os.path.join(mount_point, path_template[0], path_template(user_name))
cache = FileCache(path)
(timestamp, quota) = cache.load('quota')
if now - timestamp > opts.options.threshold:
print "%s: WARNING: no recent quota information (age of data is %d minutes)" % (storage_name,
(now-timestamp)/60)
else:
for (fileset, qi) in quota.quota_map.items():
print "%s: used %d MiB (%d%%) quota %d MiB in fileset %d" % (storage_name,
quota)
if __name__ == '__main__':
main()
示例6: main
def main():
""" Start a new rsync client (destination or source) in a specified session """
options = {
# Zookeeper connection options:
'servers' : ('list of zk servers', 'strlist', 'store', None),
'user' : ('user with creation rights on zookeeper', None, 'store', 'root', 'u'),
'passwd' : ('password for user with creation rights', None, 'store', 'admin', 'p'),
# Role options, define exactly one of these:
'source' : ('rsync source', None, 'store_true', False, 'S'),
'destination' : ('rsync destination', None, 'store_true', False, 'D'),
'pathsonly' : ('Only do a test run of the pathlist building', None, 'store_true', False),
'state' : ('Only do the state', None, 'store_true', False),
# Session options; should be the same on all clients of the session!
'session' : ('session name', None, 'store', 'default', 'N'),
'netcat' : ('run netcat test instead of rsync', None, 'store_true', False),
'dryrun' : ('run rsync in dry run mode', None, 'store_true', False, 'n'),
'rsyncpath' : ('rsync basepath', None, 'store', None, 'r'), # May differ between sources and dests
# Pathbuilding (Source clients and pathsonly ) specific options:
'excludere' : ('Exclude from pathbuilding', None, 'regex', re.compile('/\.snapshots(/.*|$)')),
'depth' : ('queue depth', "int", 'store', 3),
# Source clients options; should be the same on all clients of the session!:
'delete' : ('run rsync with --delete', None, 'store_true', False),
# Individual client options
'daemon' : ('daemonize client', None, 'store_true', False),
'domain' : ('substitute domain', None, 'store', None),
'logfile' : ('Output to logfile', None, 'store', '/tmp/zkrsync/%(session)s-%(rstype)s-%(pid)s.log'),
'pidfile' : ('Pidfile template', None, 'store', '/tmp/zkrsync/%(session)s-%(rstype)s-%(pid)s.pid'),
# Individual Destination client specific options
'rsyncport' : ('force port on which rsyncd binds', "int", 'store', None),
'startport' : ('offset to look for rsyncd ports', "int", 'store', 4444)
}
go = simple_option(options)
acreds, admin_acl, rstype = zkrsync_parse(go.options)
if go.options.logfile:
init_logging(go.options.logfile, go.options.session, rstype)
kwargs = {
'session' : go.options.session,
'default_acl' : [admin_acl],
'auth_data' : acreds,
'rsyncpath' : go.options.rsyncpath,
'netcat' : go.options.netcat,
}
if go.options.daemon:
pidfile = init_pidfile(go.options.pidfile, go.options.session, rstype)
zkrsdaemon = ZkrsDaemon(pidfile, rstype, go.options, kwargs)
zkrsdaemon.start()
else:
start_zkrs(rstype, go.options, kwargs)
示例7: main
def main(args):
"""Main script."""
options = {
'nagios': ('print out nagion information', None, 'store_true', False, 'n'),
'nagios_check_filename': ('filename of where the nagios check data is stored', str, 'store', NAGIOS_CHECK_FILENAME),
'nagios_check_interval_threshold': ('threshold of nagios checks timing out', None, 'store', NAGIOS_CHECK_INTERVAL_THRESHOLD),
'mail-report': ('mail a report to the hpc-admin list with job list for gracing or inactive users',
None, 'store_true', False),
'ha': ('high-availability master IP address', None, 'store', None),
'dry-run': ('do not make any updates whatsoever', None, 'store_true', False),
}
opts = simple_option(options)
nagios_reporter = NagiosReporter(NAGIOS_HEADER, NAGIOS_CHECK_FILENAME, NAGIOS_CHECK_INTERVAL_THRESHOLD)
if opts.options.nagios:
nagios_reporter.report_and_exit()
sys.exit(0) # not reached
if not proceed_on_ha_service(opts.options.ha):
logger.warning("Not running on the target host in the HA setup. Stopping.")
nagios_reporter(NAGIOS_EXIT_WARNING,
NagiosResult("Not running on the HA master."))
sys.exit(NAGIOS_EXIT_WARNING)
try:
vsc_config = VscConfiguration()
LdapQuery(vsc_config)
grace_users = get_user_with_status('grace')
inactive_users = get_user_with_status('inactive')
pbs_query = PBSQuery()
t = time.ctime()
jobs = pbs_query.getjobs() # we just get them all
removed_queued = remove_queued_jobs(jobs, grace_users, inactive_users, opts.options.dry_run)
removed_running = remove_running_jobs(jobs, inactive_users, opts.options.dry_run)
if opts.options.mail_report and not opts.options.dry_run:
if len(removed_queued) > 0 or len(removed_running) > 0:
mail_report(t, removed_queued, removed_running)
except Exception, err:
logger.exception("Something went wrong: {err}".format(err=err))
nagios_reporter.cache(NAGIOS_EXIT_CRITICAL,
NagiosResult("Script failed, check log file ({logfile})".format(logfile=PBS_CHECK_LOG_FILE)))
sys.exit(NAGIOS_EXIT_CRITICAL)
示例8: main
def main():
"""Yeah, so, erm. The main function and such."""
options = {
"summary": ("Give the summary", None, "store_true", False, "s"),
"detail": ("Detailed information", None, "store_true", False),
"virtualorganisation": ("Give VO details if available", None, "store_true", False, "v"),
"running": ("Display running job information", None, "store_true", False, "r"),
"idle": ("Display idle job information", None, "store_true", False, "i"),
"blocked": ("Dispay blocked job information", None, "store_true", False, "b"),
"hosts": ("Hosts/clusters to check", None, "extend", []),
"location_environment": (
"the location for storing the pickle file depending on the cluster",
str,
"store",
"VSC_HOME",
),
}
opts = simple_option(options, config_files=["/etc/myshowq.conf"])
if not (opts.options.running or opts.options.idle or opts.options.blocked):
opts.options.running = True
opts.options.idle = True
opts.options.blocked = True
my_uid = os.geteuid()
my_name = pwd.getpwuid(my_uid)[0]
(res, user_map) = readbuffer(
my_name,
opts.options.virtualorganisation,
opts.options.running,
opts.options.idle,
opts.options.blocked,
opts.options.location_environment,
)
if not res or len(res) == 0:
print "no data"
sys.exit(0)
if opts.options.summary:
showsummary(opts.options.hosts, res, user_map, my_name, opts.options.virtualorganisation)
if opts.options.detail:
showdetail(opts.options.hosts, res, user_map, my_name, opts.options.virtualorganisation)
示例9: main
def main():
options = {
'jobid': ('Fully qualified identification of the job', None, 'store', None),
'location_environment': ('the location for storing the pickle file depending on the cluster', str, 'store', 'VSC_SCRATCH_DELCATTY'),
}
opts = simple_option(options, config_files=['/etc/mycheckjob.conf'])
storage = VscStorage()
user_name = getpwuid(os.getuid())[0]
mount_point = storage[opts.options.location_environment].login_mount_point
path_template = storage.path_templates[opts.options.location_environment]['user']
path = os.path.join(mount_point, path_template[0], path_template[1](user_name), ".checkjob.json.gz")
checkjob_info = read_cache(path)
print checkjob_info.display(opts.options.jobid)
示例10: main
def main():
opts = {
'github-account': ("GitHub account where repository is located", None, 'store', 'hpcugent', 'a'),
'github-user': ("GitHub user to use (for authenticated access)", None, 'store', 'boegel', 'u'),
'repository': ("Repository to use", None, 'store', 'easybuild-easyconfigs', 'r'),
}
go = simple_option(go_dict=opts, descr="Script to print overview of pull requests for a GitHub repository")
github_token = fetch_github_token(go.options.github_user)
github = RestClient(GITHUB_API_URL, username=go.options.github_user, token=github_token, user_agent='eb-pr-overview')
downloading_msg = "Downloading PR data for %s/%s repo..." % (go.options.github_account, go.options.repository)
print(downloading_msg)
prs_data = fetch_prs_data(github, go.options.github_account, go.options.repository, downloading_msg)
gh_repo = github.repos[go.options.github_account][go.options.repository]
create_pr_overview(prs_data, gh_repo)
示例11: main
def main():
"""Yeah, so, erm. The main function and such."""
options = {
"summary": ("Give the summary", None, "store_true", False, 's'),
"detail": ("Detailed information", None, "store_true", False,),
"virtualorganisation": ("Give VO details if available", None, "store_true", False, 'v'),
"running": ("Display running job information", None, "store_true", False, 'r'),
"idle": ("Display idle job information", None, "store_true", False, 'i'),
"blocked": ("Dispay blocked job information", None, "store_true", False, 'b'),
'hosts': ("Hosts/clusters to check", None, 'extend', []),
'location_environment': ('the location for storing the pickle file depending on the cluster', str, 'store', 'VSC_SCRATCH_DELCATTY'),
}
opts = simple_option(options, config_files=['/etc/myshowq.conf'])
if not (opts.options.running or opts.options.idle or opts.options.blocked):
opts.options.running = True
opts.options.idle = True
opts.options.blocked = True
storage = VscStorage()
user_name = getpwuid(os.getuid())[0]
now = time.time()
mount_point = storage[opts.options.location_environment].login_mount_point
path_template = storage.path_templates[opts.options.location_environment]['user']
path = os.path.join(mount_point, path_template[0], path_template[1](user_name), ".showq.json.gz")
(res, user_map) = read_cache(user_name,
opts.options.virtualorganisation,
opts.options.running,
opts.options.idle,
opts.options.blocked,
path)
if not res or len(res) == 0:
print "no data"
sys.exit(0)
if opts.options.summary:
showsummary(opts.options.hosts, res, user_map, user_name, opts.options.virtualorganisation)
if opts.options.detail:
showdetail(opts.options.hosts, res, user_map, user_name, opts.options.virtualorganisation)
示例12: main
def main():
opts = {
"github-account": ("GitHub account where repository is located", None, "store", "hpcugent", "a"),
"github-user": ("GitHub user to use (for authenticated access)", None, "store", "boegel", "u"),
"repository": ("Repository to use", None, "store", "easybuild-easyconfigs", "r"),
}
go = simple_option(go_dict=opts, descr="Script to print overview of pull requests for a GitHub repository")
pickle_file = None
if go.args:
pickle_file = go.args[0]
prs = fetch_pr_data(pickle_file, go.options.github_user, go.options.github_account, go.options.repository)
created_ats = [datetime_parser(pr["created_at"].split("T")[0]) for pr in prs]
closed_ats = [datetime_parser((pr["closed_at"] or "T").split("T")[0] or "ENDNEXTMONTH") for pr in prs]
print("Plotting...")
plot_historic_PR_ages(created_ats, closed_ats, go.options.repository)
plot_open_closed_PRs(created_ats, closed_ats, go.options.repository)
示例13: main
def main():
options = {
'jobid': ('Fully qualified identification of the job', None, 'store', None),
'location_environment': ('the location for storing the pickle file depending on the cluster', str, 'store', 'VSC_HOME'),
}
opts = simple_option(options, config_files=['/etc/mycheckjob.conf'])
my_uid = os.geteuid()
my_name = pwd.getpwuid(my_uid)[0]
path = checkjob_data_location(my_name, opts.options.location_environment)
(timeinfo, checkjob) = read_checkjob_data(path)
age = time.time() - timeinfo
if age > MAXIMAL_AGE:
print "Job information is older than %d minutes (%f hours). Information may not be relevant any longer" % (age / 60, age / 60.0 / 60.0)
print checkjob.display(opts.options.jobid)
示例14: main
def main():
"""Main function"""
options = {
'nagios_check_filename': ('filename of where the nagios check data is stored', str, 'store', NAGIOS_CHECK_FILENAME),
'nagios_check_interval_threshold': ('threshold of nagios checks timing out', None, 'store', NAGIOS_CHECK_INTERVAL_THRESHOLD),
'hosts': ('the hosts/clusters that should be contacted for job information', None, 'extend', []),
'location': ('the location for storing the pickle file: gengar, muk', str, 'store', 'gengar'),
'ha': ('high-availability master IP address', None, 'store', None),
'dry-run': ('do not make any updates whatsoever', None, 'store_true', False),
}
opts = simple_option(options)
nag = SimpleNagios(_cache=NAGIOS_CHECK_FILENAME)
if opts.options.ha and not proceed_on_ha_service(opts.options.ha):
_log.info("Not running on the target host in the HA setup. Stopping.")
nag.ok("Not running on the HA master.")
else:
# parse config file
clusters = {}
for host in opts.options.hosts:
master = opts.configfile_parser.get(host, "master")
showq_path = opts.configfile_parser.get(host, "showq_path")
mjobctl_path = opts.configfile_parser.get(host, "mjobctl_path")
clusters[host] = {
'master': master,
'spath': showq_path,
'mpath': mjobctl_path,
}
# process the new and previous data
released_jobids, stats = process_hold(clusters, dry_run=opts.options.dry_run)
# nagios state
stats.update(RELEASEJOB_LIMITS)
stats['message'] = "released %s jobs in hold" % len(released_jobids)
nag._eval_and_exit(**stats)
_log.info("Cached nagios state: %s %s" % (nag._final_state[0][1], nag._final_state[1]))
示例15: main
def main():
options = {
"jobid": ("Fully qualified identification of the job", None, "store", None),
"location_environment": (
"the location for storing the pickle file depending on the cluster",
str,
"store",
"VSC_SCRATCH_DELCATTY",
),
}
opts = simple_option(options, config_files=["/etc/mycheckjob.conf"])
storage = VscStorage()
user_name = getpwuid(os.getuid())[0]
mount_point = storage[opts.options.location_environment].login_mount_point
path_template = storage.path_templates[opts.options.location_environment]["user"]
path = os.path.join(mount_point, path_template[0], path_template[1](user_name), ".checkjob.json.gz")
checkjob_info = read_cache(path)
print checkjob_info.display(opts.options.jobid)