From 1abec5880c1a85a033853338fc68b6d384d25941 Mon Sep 17 00:00:00 2001 From: Brian Bockelman Date: Mon, 10 Oct 2016 19:12:04 -0500 Subject: [PATCH 01/10] Overhaul queue generation to actually utilize the queue names from the collector. Includes first draft of the command-line version of the collector. --- src/collector_to_agis | 28 ++++++ src/htcondorce/agis_compat.py | 12 +++ src/htcondorce/web.py | 162 +++----------------------------- src/htcondorce/web_utils.py | 168 ++++++++++++++++++++++++++++++++++ 4 files changed, 220 insertions(+), 150 deletions(-) create mode 100755 src/collector_to_agis create mode 100644 src/htcondorce/agis_compat.py create mode 100644 src/htcondorce/web_utils.py diff --git a/src/collector_to_agis b/src/collector_to_agis new file mode 100755 index 000000000..83751acfc --- /dev/null +++ b/src/collector_to_agis @@ -0,0 +1,28 @@ +#!/usr/bin/python + +import os +import optparse + +if 'CONDOR_CONFIG' not in os.environ: + os.environ['CONDOR_CONFIG'] = '/etc/condor-ce/condor_config' +import htcondor + +import htcondorce.agis_compat + +def main(): + parser = optparse.OptionParser() + parser.add_option("-p", "--pool", dest="pool", default="collector.opensciencegrid.org") + parser.add_option("-v", "--verbose", dest="verbose", default=False, action="store_true") + opts, args = parser.parse_args() + + if opts.verbose: + if 'TOOL_DEBUG' not in htcondor.param: + htcondor.param['TOOL_DEBUG'] = 'D_FULLDEBUG' + htcondor.enable_debug() + + htcondorce.agis_compat.agis_compat_main(pool=opts.pool) + + +if __name__ == '__main__': + main() + diff --git a/src/htcondorce/agis_compat.py b/src/htcondorce/agis_compat.py new file mode 100644 index 000000000..936373b76 --- /dev/null +++ b/src/htcondorce/agis_compat.py @@ -0,0 +1,12 @@ + +import pprint + +import htcondorce.web_utils + + +def agis_compat_main(pool=None): + environ = {} + if pool: + environ['htcondorce.pool'] = pool + pprint.pprint(htcondorce.web_utils.agis_data(environ)) + diff --git a/src/htcondorce/web.py b/src/htcondorce/web.py index b9515fe18..91fd85a73 100644 --- a/src/htcondorce/web.py +++ b/src/htcondorce/web.py @@ -14,6 +14,7 @@ htcondor = None import htcondorce.rrd +import htcondorce.web_utils _initialized = None _loader = None @@ -32,118 +33,15 @@ def check_initialized(environ): else: _loader = genshi.template.TemplateLoader('/usr/share/condor-ce/templates', auto_reload=True) ce_config = environ.get('htcondorce.config', '/etc/condor-ce/condor_config') - _check_htcondor() + htcondor = htcondorce.web_utils.check_htcondor() _initialized = True -def _check_htcondor(): - global _initialized - global htcondor - if not _initialized and not htcondor: - os.environ.setdefault('CONDOR_CONFIG', "/etc/condor-ce/condor_config") - htcondor = __import__("htcondor") - - -def _get_pool(environ): - environ_pool = None - if environ and 'htcondorce.pool' in environ: - environ_pool = environ['htcondorce.pool'] - if environ_pool: - return environ_pool - _check_htcondor() - if not htcondor: - return None - - return htcondor.param.get("HTCONDORCE_VIEW_POOL") - - -def _get_name(environ): - environ_name = None - if environ and 'htcondorce.name' in environ: - environ_name = environ['htcondorce.name'] - if environ_name: - return environ_name - _check_htcondor() - if not htcondor: - return _get_pool(environ) - - return htcondor.param.get("HTCONDORCE_VIEW_NAME") - - def _headers(content_type): return [('Content-type', content_type), ('Cache-Control', 'max-age=60, public')] -def get_schedd_objs(environ=None): - pool = _get_pool(environ) - if pool: - name = _get_name(environ) - coll = htcondor.Collector(pool) - if name: - schedds = [coll.locate(htcondor.DaemonTypes.Schedd, name)] - else: - schedds = coll.locateAll(htcondor.DaemonTypes.Schedd) - results = [] - for ad in schedds: - if not ad.get("Name"): - continue - results.append((htcondor.Schedd(ad), ad['Name'])) - return results - return [(htcondor.Schedd(), socket.getfqdn())] - - -def get_schedd_ads(environ): - pool = _get_pool(environ) - coll = htcondor.Collector(pool) - if pool: - name = _get_name(environ) - if name: - return [coll.query(htcondor.AdTypes.Schedd, "Name=?=%s" % classad.quote(name))[0]] - else: - return coll.query(htcondor.AdTypes.Schedd, "true") - return [coll.locate(htcondor.DaemonTypes.Schedd)] - - -def get_spooldir(): - _check_htcondor() - spooldir = htcondor.param.get("HTCONDORCE_VIEW_SPOOL") - if not spooldir: - if not os.path.exists("tmp"): - os.mkdir("tmp") - spooldir = "tmp" - return spooldir - - -def get_schedd_statuses(environ={}): - ads = get_schedd_ads(environ) - results = {} - for ad in ads: - if 'Name' not in ad: - continue - - for missing_attr in ['Status', 'IsOK', 'IsWarning', 'IsCritical']: - if missing_attr in ad: - continue - if missing_attr not in htcondor.param: - continue - ad[missing_attr] = classad.ExprTree(htcondor.param[missing_attr]) - - if 'Status' not in ad: - results[ad['Name']] = 'Unknown' - else: - results[ad['Name']] = ad['Status'].eval() - - return results - - -def get_schedd_status(environ={}): - statuses = get_schedd_statuses() - keys = statuses.keys() - keys.sort() - return statuses[keys[0]] - - def ad_to_json(ad): result = {} for key in ad: @@ -160,7 +58,7 @@ def ad_to_json(ad): def schedds(environ, start_response): - ads = get_schedd_ads(environ) + ads = htcondorce.web_utils.get_schedd_ads(environ) results = {} for ad in ads: if 'Name' not in ad: @@ -172,44 +70,8 @@ def schedds(environ, start_response): return [ json.dumps(results) ] def agis_json(environ, start_response): - ads = get_schedd_ads(environ) - results = { "ce_services": {}, "queues": {}, "failed_ces": []} - for ad in ads: - if 'Name' not in ad: - continue - try: - ce_ad = { - "endpoint": ad['CollectorHost'], - "flavour": "HTCONDOR-CE", - "jobmanager": ad['OSG_BatchSystems'].lower(), - "name": "%s-CE-HTCondorCE-%s" % (ad['OSG_ResourceGroup'], ad['CollectorHost'].split(':')[0]), - "site": ad['OSG_ResourceGroup'], - "status": "Production", - "type": "CE", - "version": ad['HTCondorCEVersion'] - } - queue_ad = { - "cms": { - "ce": ad['OSG_Resource'], - "max_cputime": 1440, - "max_wallclocktime": 1440, - "name": "cms", - "status": "Production" - }, - "atlas": { - "ce": ad['OSG_Resource'], - "max_cputime": 1440, - "max_wallclocktime": 1440, - "name": "atlas", - "status": "Production" - } - } - results['ce_services'][ad['OSG_Resource']] = ce_ad - results['queues'][ad['OSG_Resource']] = queue_ad - except KeyError as e: - # No way to log an error, stderr doesn't work, stdout, or logging module - # So, just add it to the json as "failed_ces" - results['failed_ces'].append(ad['Name']) + + results = json.dumps(htcondorce.web_utils.agis_data(environ)) start_response(OK_STATUS, _headers('application/json')) @@ -218,7 +80,7 @@ def agis_json(environ, start_response): def schedd(environ, start_response): - ads = get_schedd_ads(environ) + ads = htcondorce.web_utils.get_schedd_ads(environ) results = {} for ad in ads: if 'Name' not in ad: @@ -233,7 +95,7 @@ def schedd(environ, start_response): def totals_ce_json(environ, start_response): - objs = get_schedd_objs(environ) + objs = htcondorce.web_utils.get_schedd_objs(environ) results = {"Running": 0, "Idle": 0, "Held": 0, "UpdateDate": time.time()} for schedd, name in objs: for job in schedd.xquery("true", ["JobStatus"]): @@ -256,7 +118,7 @@ def totals(environ, start_response): def pilots_ce_json(environ, start_response): - objs = get_schedd_objs(environ) + objs = htcondorce.web_utils.get_schedd_objs(environ) job_count = {} for schedd, name in objs: for job in schedd.xquery('true', ['x509UserProxyVOName', 'x509UserProxyFirstFQAN', 'JobStatus', 'x509userproxysubject']): @@ -287,7 +149,7 @@ def pilots(environ, start_response): def vos_ce_json(environ, start_response): - objs = get_schedd_objs(environ) + objs = htcondorce.web_utils.get_schedd_objs(environ) job_count = {} for schedd, name in objs: for job in schedd.xquery('true', ['x509UserProxyVOName', 'JobStatus']): @@ -315,13 +177,13 @@ def vos_json(environ, start_response): def status_json(environ, start_response): - response = {"status": get_schedd_status(environ)} + response = {"status": htcondorce.web_utils.get_schedd_status(environ)} start_response(OK_STATUS, _headers('application/json')) return [ json.dumps(response) ] def statuses_json(environ, start_response): - result = get_schedd_statuses(environ) + result = htcondorce.web_utils.get_schedd_statuses(environ) response = {} for name, status in result.items(): response[name] = {'status': status} @@ -345,7 +207,7 @@ def jobs_json(environ, start_response): constraint = True # Get the Schedd object - objs = get_schedd_objs(environ) + objs = htcondorce.web_utils.get_schedd_objs(environ) schedd, name = objs[0] # Query the schedd diff --git a/src/htcondorce/web_utils.py b/src/htcondorce/web_utils.py new file mode 100644 index 000000000..1901e41da --- /dev/null +++ b/src/htcondorce/web_utils.py @@ -0,0 +1,168 @@ + +import os +import re +import json +import time +import types +import socket + +import classad +htcondor = None + +def check_htcondor(): + global htcondor + if not htcondor: + os.environ.setdefault('CONDOR_CONFIG', "/etc/condor-ce/condor_config") + htcondor = __import__("htcondor") + return htcondor + + +def _get_pool(environ): + check_htcondor() + environ_pool = None + if environ and 'htcondorce.pool' in environ: + environ_pool = environ['htcondorce.pool'] + if environ_pool: + return environ_pool + if not htcondor: + return None + + return htcondor.param.get("HTCONDORCE_VIEW_POOL") + + +def _get_name(environ): + environ_name = None + if environ and 'htcondorce.name' in environ: + environ_name = environ['htcondorce.name'] + if environ_name: + return environ_name + check_htcondor() + if not htcondor: + return _get_pool(environ) + + return htcondor.param.get("HTCONDORCE_VIEW_NAME") + + +def get_schedd_objs(environ=None): + pool = _get_pool(environ) + if pool: + name = _get_name(environ) + coll = htcondor.Collector(pool) + if name: + schedds = [coll.locate(htcondor.DaemonTypes.Schedd, name)] + else: + schedds = coll.locateAll(htcondor.DaemonTypes.Schedd) + results = [] + for ad in schedds: + if not ad.get("Name"): + continue + results.append((htcondor.Schedd(ad), ad['Name'])) + return results + return [(htcondor.Schedd(), socket.getfqdn())] + + +def get_schedd_ads(environ): + pool = _get_pool(environ) + coll = htcondor.Collector(pool) + if pool: + name = _get_name(environ) + if name: + return [coll.query(htcondor.AdTypes.Schedd, "Name=?=%s" % classad.quote(name))[0]] + else: + return coll.query(htcondor.AdTypes.Schedd, "true") + return [coll.locate(htcondor.DaemonTypes.Schedd)] + + +def get_schedd_statuses(environ={}): + ads = get_schedd_ads(environ) + results = {} + for ad in ads: + if 'Name' not in ad: + continue + + for missing_attr in ['Status', 'IsOK', 'IsWarning', 'IsCritical']: + if missing_attr in ad: + continue + if missing_attr not in htcondor.param: + continue + ad[missing_attr] = classad.ExprTree(htcondor.param[missing_attr]) + + if 'Status' not in ad: + results[ad['Name']] = 'Unknown' + else: + results[ad['Name']] = ad['Status'].eval() + + return results + + +def get_schedd_status(environ={}): + statuses = get_schedd_statuses() + keys = statuses.keys() + keys.sort() + return statuses[keys[0]] + + +def ad_to_json(ad): + result = {} + for key in ad: + val_expr = ad.lookup(key) + if classad.ExprTree("%s =?= UNDEFINED" % key).eval(ad): + result[key] = {"_condor_type": "expr", "expr": val_expr.__repr__()} + else: + val = val_expr.eval() + if isinstance(val, types.ListType) or isinstance(val, types.DictType): + result[key] = {"_condor_type": "expr", "expr": val_expr.__repr__()} + else: + result[key] = val + return result + + +def generate_queue_ad(resource_catalog, ce): + queues = {} + for entry in resource_catalog: + name = entry.get('Name', '') + queue = entry.get('Transform', {}).get('set_remote_queue', 'default') + walltime = int(entry.get('MaxWallTime', 1440)) + ad = {'ce': ce, 'max_wallclocktime': walltime, 'entry': name, 'name': queue, 'status': 'Production'} + queues[queue] = ad + return queues + + +def agis_data(environ): + ads = get_schedd_ads(environ) + results = { "ce_services": {}, "queues": {}, "failed_ces": []} + for ad in ads: + if 'Name' not in ad: + continue + try: + ce_ad = { + "endpoint": ad['CollectorHost'], + "flavour": "HTCONDOR-CE", + "jobmanager": ad['OSG_BatchSystems'].lower(), + "name": "%s-CE-HTCondorCE-%s" % (ad['OSG_ResourceGroup'], ad['CollectorHost'].split(':')[0]), + "site": ad['OSG_ResourceGroup'], + "status": "Production", + "type": "CE", + "version": ad['HTCondorCEVersion'] + } + default_queue_ad = { + "default": { + "ce": ad['OSG_Resource'], + "max_cputime": 1440, + "max_wallclocktime": 1440, + "name": "default", + "status": "Production" + } + } + results['ce_services'][ad['OSG_Resource']] = ce_ad + results['queues'][ad['OSG_Resource']] = default_queue_ad + queue_ad = generate_queue_ad(ad['OSG_ResourceCatalog'], ad['OSG_Resource']) + if queue_ad: + results['queues'][ad['OSG_Resource']] = queue_ad + except KeyError as e: + # No way to log an error, stderr doesn't work, stdout, or logging module + # So, just add it to the json as "failed_ces" + results['failed_ces'].append(ad['Name']) + + return results + From 686f7951aa6057a1cc9115ce17df319929c9da6a Mon Sep 17 00:00:00 2001 From: Brian Bockelman Date: Wed, 26 Oct 2016 11:14:37 -0500 Subject: [PATCH 02/10] Add resource group information to AGIS JSON. --- src/htcondorce/web_utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/htcondorce/web_utils.py b/src/htcondorce/web_utils.py index 1901e41da..739659183 100644 --- a/src/htcondorce/web_utils.py +++ b/src/htcondorce/web_utils.py @@ -130,7 +130,7 @@ def generate_queue_ad(resource_catalog, ce): def agis_data(environ): ads = get_schedd_ads(environ) - results = { "ce_services": {}, "queues": {}, "failed_ces": []} + results = {"ce_services": {}, "queues": {}, "failed_ces": [], "resource_groups": {}} for ad in ads: if 'Name' not in ad: continue @@ -145,6 +145,10 @@ def agis_data(environ): "type": "CE", "version": ad['HTCondorCEVersion'] } + rgroup = ad.get('OSG_ResourceGroup') + if rgroup: + ce_ad['resource_group'] = rgroup + results['resource_groups'][rgroup] = {'name': rgroup} default_queue_ad = { "default": { "ce": ad['OSG_Resource'], From b7f08f5b0bd3820299269969a8d2e4b2fa94108c Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Fri, 28 Oct 2016 17:42:40 +0000 Subject: [PATCH 03/10] No need to json the output twice --- src/htcondorce/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/htcondorce/web.py b/src/htcondorce/web.py index 91fd85a73..1192bd91b 100644 --- a/src/htcondorce/web.py +++ b/src/htcondorce/web.py @@ -71,7 +71,7 @@ def schedds(environ, start_response): def agis_json(environ, start_response): - results = json.dumps(htcondorce.web_utils.agis_data(environ)) + results = htcondorce.web_utils.agis_data(environ) start_response(OK_STATUS, _headers('application/json')) From 526eebd6b409fccc2b8e718ad6281994b9700d96 Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Fri, 28 Oct 2016 17:43:22 +0000 Subject: [PATCH 04/10] Add missing function and change ref to web_utils --- src/condor_ce_jobmetrics | 6 +++--- src/htcondorce/web_utils.py | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/condor_ce_jobmetrics b/src/condor_ce_jobmetrics index 368c8ed8f..41f7da9fe 100755 --- a/src/condor_ce_jobmetrics +++ b/src/condor_ce_jobmetrics @@ -17,7 +17,7 @@ os.environ.setdefault("CONDOR_CONFIG", "/etc/condor-ce/condor_config") # to avoid loading HTCondor code in the parent then forking. Otherwise, issues # arise in the child processes. -from htcondorce import rrd, web +from htcondorce import rrd, web_utils def parse_opts(): parser = optparse.OptionParser() @@ -85,9 +85,9 @@ def process_one_schedd(ad): def get_ads(spooldir): if not spooldir: - spooldir = web.get_spooldir() + spooldir = web_utils.get_spooldir() environ = {'htcondorce.spool': spooldir} - ads = [str(ad) for ad in web.get_schedd_ads({})] + ads = [str(ad) for ad in web_utils.get_schedd_ads({})] return [ads, environ] diff --git a/src/htcondorce/web_utils.py b/src/htcondorce/web_utils.py index 739659183..2ab980e9b 100644 --- a/src/htcondorce/web_utils.py +++ b/src/htcondorce/web_utils.py @@ -170,3 +170,12 @@ def agis_data(environ): return results +def get_spooldir(): + check_htcondor() + spooldir = htcondor.param.get("HTCONDORCE_VIEW_SPOOL") + if not spooldir: + if not os.path.exists("tmp"): + os.mkdir("tmp") + spooldir = "tmp" + return spooldir + From 97f1e7a484819db247ef73d601fa56d6a8d7790e Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Wed, 2 Nov 2016 13:17:37 -0700 Subject: [PATCH 05/10] Adding testing of the CEView --- tests/test_inside_docker.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_inside_docker.sh b/tests/test_inside_docker.sh index 411d5bb1d..50d08aa62 100644 --- a/tests/test_inside_docker.sh +++ b/tests/test_inside_docker.sh @@ -79,6 +79,7 @@ set +e # don't exit immediately if osg-test fails echo "------------ OSG Test --------------" osg-test -vad --hostcert --no-cleanup test_exit=$? +/usr/share/condor-ce/condor_ce_view set -e # Some simple debug files for failures. @@ -88,6 +89,7 @@ cat /var/log/condor-ce/MasterLog cat /var/log/condor-ce/CollectorLog cat /var/log/condor-ce/SchedLog cat /var/log/condor-ce/JobRouterLog +cat /var/log/condor-ce/CEViewLog echo "------------ HTCondor Logs --------------" cat /var/log/condor/MasterLog cat /var/log/condor/CollectorLog From 19f1e90fd1e51860aef620af6188387c736761b9 Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Wed, 2 Nov 2016 13:27:19 -0700 Subject: [PATCH 06/10] Reverting changes --- tests/test_inside_docker.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_inside_docker.sh b/tests/test_inside_docker.sh index 50d08aa62..411d5bb1d 100644 --- a/tests/test_inside_docker.sh +++ b/tests/test_inside_docker.sh @@ -79,7 +79,6 @@ set +e # don't exit immediately if osg-test fails echo "------------ OSG Test --------------" osg-test -vad --hostcert --no-cleanup test_exit=$? -/usr/share/condor-ce/condor_ce_view set -e # Some simple debug files for failures. @@ -89,7 +88,6 @@ cat /var/log/condor-ce/MasterLog cat /var/log/condor-ce/CollectorLog cat /var/log/condor-ce/SchedLog cat /var/log/condor-ce/JobRouterLog -cat /var/log/condor-ce/CEViewLog echo "------------ HTCondor Logs --------------" cat /var/log/condor/MasterLog cat /var/log/condor/CollectorLog From c06bdb877bc11a6ce7723de3d70ae83e5d00a457 Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Wed, 2 Nov 2016 13:44:17 -0700 Subject: [PATCH 07/10] Adding packaging of web_utils.py --- CMakeLists.txt | 2 +- config/htcondor-ce.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bf81551d4..bd1c71863 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ configure_file ( install(PROGRAMS src/condor-ce src/condor-ce-collector DESTINATION ${SYSCONF_INSTALL_DIR}/rc.d/init.d) install(PROGRAMS src/condor_ce_startup src/condor_ce_startup_internal src/condor_ce_env_bootstrap src/condor_ce_client_env_bootstrap src/condor_ce_router_defaults src/osg-wrapper src/condor_ce_jobmetrics src/condor_ce_metric src/condor_ce_view src/bdii/condor_ce_bdii_generate_glue1.py src/bdii/condor_ce_bdii_generate_glue2.py src/gratia_cleanup.py DESTINATION ${SHARE_INSTALL_PREFIX}/condor-ce) install(PROGRAMS src/condor_ce_config_generator src/condor_ce_config_val src/condor_ce_history src/condor_ce_hold src/condor_ce_info_status src/condor_ce_q src/condor_ce_qedit src/condor_ce_release src/condor_ce_rm src/condor_ce_submit src/condor_ce_version src/condor_ce_reconfig src/condor_ce_router_q src/condor_ce_status src/condor_ce_reschedule src/condor_ce_run src/condor_ce_trace src/condor_ce_ping src/condor_ce_off src/condor_ce_on src/condor_ce_restart src/condor_ce_job_router_info src/condor_ce_host_network_check DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) -install(FILES src/htcondorce/__init__.py src/htcondorce/web.py src/htcondorce/rrd.py src/htcondorce/tools.py src/htcondorce/info_query.py DESTINATION ${PYTHON_SITELIB}/htcondorce) +install(FILES src/htcondorce/__init__.py src/htcondorce/web_utils.py src/htcondorce/rrd.py src/htcondorce/tools.py src/htcondorce/info_query.py DESTINATION ${PYTHON_SITELIB}/htcondorce) install(FILES config/condor_config config/condor_mapfile DESTINATION ${SYSCONF_INSTALL_DIR}/condor-ce) install(FILES config/metrics.d/00-metrics-defaults.conf config/metrics.d/00-example-metrics.conf DESTINATION ${SYSCONF_INSTALL_DIR}/condor-ce/metrics.d) diff --git a/config/htcondor-ce.spec b/config/htcondor-ce.spec index 2d145eb09..2140717c8 100644 --- a/config/htcondor-ce.spec +++ b/config/htcondor-ce.spec @@ -342,7 +342,7 @@ fi %defattr(-,root,root,-) # Web package -%{python_sitelib}/htcondorce/web.py* +%{python_sitelib}/htcondorce/web_utils.py* %{python_sitelib}/htcondorce/rrd.py* %{_datadir}/condor-ce/templates/index.html From ee2648d4f61ad5f6df114aa839d7eb50cbc99b0a Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Wed, 2 Nov 2016 13:53:34 -0700 Subject: [PATCH 08/10] Adding ceview test --- tests/test_inside_docker.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_inside_docker.sh b/tests/test_inside_docker.sh index 411d5bb1d..61d3a5088 100644 --- a/tests/test_inside_docker.sh +++ b/tests/test_inside_docker.sh @@ -79,6 +79,7 @@ set +e # don't exit immediately if osg-test fails echo "------------ OSG Test --------------" osg-test -vad --hostcert --no-cleanup test_exit=$? +/usr/share/condor-ce/condor_ce_view & set -e # Some simple debug files for failures. From b9e42582a04e2cbc7b2426c149764c0c4d34bafd Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Wed, 2 Nov 2016 13:57:07 -0700 Subject: [PATCH 09/10] Adding back web.py --- CMakeLists.txt | 2 +- config/htcondor-ce.spec | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bd1c71863..e87ae8ebd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ configure_file ( install(PROGRAMS src/condor-ce src/condor-ce-collector DESTINATION ${SYSCONF_INSTALL_DIR}/rc.d/init.d) install(PROGRAMS src/condor_ce_startup src/condor_ce_startup_internal src/condor_ce_env_bootstrap src/condor_ce_client_env_bootstrap src/condor_ce_router_defaults src/osg-wrapper src/condor_ce_jobmetrics src/condor_ce_metric src/condor_ce_view src/bdii/condor_ce_bdii_generate_glue1.py src/bdii/condor_ce_bdii_generate_glue2.py src/gratia_cleanup.py DESTINATION ${SHARE_INSTALL_PREFIX}/condor-ce) install(PROGRAMS src/condor_ce_config_generator src/condor_ce_config_val src/condor_ce_history src/condor_ce_hold src/condor_ce_info_status src/condor_ce_q src/condor_ce_qedit src/condor_ce_release src/condor_ce_rm src/condor_ce_submit src/condor_ce_version src/condor_ce_reconfig src/condor_ce_router_q src/condor_ce_status src/condor_ce_reschedule src/condor_ce_run src/condor_ce_trace src/condor_ce_ping src/condor_ce_off src/condor_ce_on src/condor_ce_restart src/condor_ce_job_router_info src/condor_ce_host_network_check DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) -install(FILES src/htcondorce/__init__.py src/htcondorce/web_utils.py src/htcondorce/rrd.py src/htcondorce/tools.py src/htcondorce/info_query.py DESTINATION ${PYTHON_SITELIB}/htcondorce) +install(FILES src/htcondorce/__init__.py src/htcondorce/web_utils.py src/htcondorce/web.py src/htcondorce/rrd.py src/htcondorce/tools.py src/htcondorce/info_query.py DESTINATION ${PYTHON_SITELIB}/htcondorce) install(FILES config/condor_config config/condor_mapfile DESTINATION ${SYSCONF_INSTALL_DIR}/condor-ce) install(FILES config/metrics.d/00-metrics-defaults.conf config/metrics.d/00-example-metrics.conf DESTINATION ${SYSCONF_INSTALL_DIR}/condor-ce/metrics.d) diff --git a/config/htcondor-ce.spec b/config/htcondor-ce.spec index 2140717c8..8a0eddb86 100644 --- a/config/htcondor-ce.spec +++ b/config/htcondor-ce.spec @@ -342,6 +342,7 @@ fi %defattr(-,root,root,-) # Web package +%{python_sitelib}/htcondorce/web.py* %{python_sitelib}/htcondorce/web_utils.py* %{python_sitelib}/htcondorce/rrd.py* From 0b240dba211bcf9a5526150346adaa60307e62d8 Mon Sep 17 00:00:00 2001 From: Derek Weitzel Date: Wed, 2 Nov 2016 14:05:19 -0700 Subject: [PATCH 10/10] Revert "Adding ceview test" This reverts commit ee2648d4f61ad5f6df114aa839d7eb50cbc99b0a. --- tests/test_inside_docker.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_inside_docker.sh b/tests/test_inside_docker.sh index 61d3a5088..411d5bb1d 100644 --- a/tests/test_inside_docker.sh +++ b/tests/test_inside_docker.sh @@ -79,7 +79,6 @@ set +e # don't exit immediately if osg-test fails echo "------------ OSG Test --------------" osg-test -vad --hostcert --no-cleanup test_exit=$? -/usr/share/condor-ce/condor_ce_view & set -e # Some simple debug files for failures.