diff --git a/src/gratia/config/generic_queries.xml b/src/gratia/config/generic_queries.xml index 4df629412e9d1eaf2163032f936585e7ecdea49d..bfa5bf016f92765e179ee0ebb65b328f29968d0e 100644 --- a/src/gratia/config/generic_queries.xml +++ b/src/gratia/config/generic_queries.xml @@ -122,6 +122,76 @@ <attribute name="column_names" /> <attribute name="column_units" /> </query> + + <query name="simple_glidein_master_summary"> + <inputs> + <input name="span" type="int" kind="sql">86400</input> + <input name="starttime" partial="down" type="datetime" kind="sql">time.time()-14*86400</input> + <input name="endtime" partial="up" type="datetime" kind="sql">time.time()</input> + <input name="includeFailed" kind="sql"> true </input> + <input name="includeSuccess" kind="sql"> true </input> + <input name="facility" kind="sql"> .* </input> + <input name="probe" kind="sql"> .* </input> + <input name="user" kind="sql"> .* </input> + <input name="vo" kind="sql"> .* </input> + <input name="role" kind="sql"> .* </input> + <input name="exclude-role" kind="sql"> NONE </input> + <input name="exclude-vo" kind="sql"> unknown|other </input> + <input name="exclude-user" kind="sql"> NONE </input> + <input name="exclude-facility" kind="sql"> NONE </input> + <input name="resource-type" kind="sql"> BatchPilot </input> + <input name="grid" kind="sql"> .* </input> + </inputs> + <sql> + SELECT + <slot name="group"/>, + <slot name="column"/> + FROM + MasterSummaryData R + JOIN + Probe P on R.ProbeName = P.probename + JOIN + Site S on S.siteid = P.siteid + JOIN + VONameCorrection VC ON (VC.corrid=R.VOcorrid) + JOIN + VO on (VC.void = VO.void) + <slot name="join"/> + WHERE + R.EndTime >= :starttime AND + R.EndTime < :endtime AND + R.HostDescription regexp :facility AND + R.Grid regexp :grid AND + VO.VOName regexp :vo AND + VC.VOName regexp :role AND + (NOT (VC.VOName regexp :exclude-role)) AND + (R.ResourceType regexp :resource-type or R.ResourceType = '') AND + R.CommonName regexp :user AND + (:includeFailed='true' OR ApplicationExitCode=0) AND + (:includeSuccess ='true' OR ApplicationExitCode!=0) AND + (NOT (S.SiteName regexp :exclude-facility)) AND + (NOT (R.CommonName regexp :exclude-user)) AND + (NOT (VO.VOName regexp :exclude-vo)) AND + R.WallDuration < 1100000000 AND + R.ProbeName regexp :probe + <slot name="where"/> + GROUP BY + <slot name="group"/> + <slot name="having"/> + </sql> + <results module="graphtool.database.query_handler" function="simple_results_parser"> + <inputs> + <input name="pivots"> 0 </input> + <input name="results"> 1 </input> + </inputs> + </results> + <attribute name="graph_type">GratiaPie</attribute> + <attribute name="pivot_name" /> + <attribute name="title" /> + <attribute name="column_names" /> + <attribute name="column_units" /> + </query> + <query name="glidein_master_summary"> <inputs> <input name="span" type="int" kind="sql">86400</input> diff --git a/src/gratia/config/gratia_glidein_bar_queries.xml b/src/gratia/config/gratia_glidein_bar_queries.xml index 183c1aa6a9d64d0095a6b7b8f20063d06ea9550e..59d5666483481c6b5a055e48f65d7570920b08c7 100644 --- a/src/gratia/config/gratia_glidein_bar_queries.xml +++ b/src/gratia/config/gratia_glidein_bar_queries.xml @@ -96,6 +96,52 @@ <attribute name="graph_type">GratiaStackedBar</attribute> </query> + <query name="glidein_dn_efficiency_summary" base="GratiaGenericQuery.simple_glidein_master_summary"> + <inputs> + <input name="vo" kind="sql">cms</input> + <input name="fixed-height">False</input> + <input name="min_hours" kind="sql" type="eval">0</input> + </inputs> + <sql> + <filler name="group"> COALESCE(R.CommonName, "UNKNOWN") </filler> + <filler name="column"> sum(case when ApplicationExitCode = 0 then CpuUserDuration + CpuSystemDuration else 0 end)/sum(Cores*WallDuration) </filler> + <filler name="where"> AND WallDuration > 0 AND WallDuration > 3600*:min_hours </filler> + </sql> + <results> + <inputs> + <input name="pivot_transform">displayName</input> + </inputs> + </results> + <attribute name="pivot_name">User</attribute> + <attribute name="title">CPU Efficiency Quality Map by User for $vo</attribute> + <attribute name="graph_type">QualityBarGraph</attribute> + </query> + + + <query name="glidein_exitcode_user_bar" base="GratiaGenericQuery.glidein_master_summary"> + <inputs> + <!--<input name="includeSuccessful" type="int" kind="sql">1</input>--> + </inputs> + <sql> + <filler name="group"> R.CommonName, R.ApplicationExitCode, R.HostDescription </filler> + <filler name="column"> sum(Njobs) </filler> + <!--<filler name="where"> AND CASE WHEN :includeSuccessful!=1 THEN R.ApplicationExitCode!=0 ELSE true END </filler>--> + </sql> + <results module="graphtool.database.query_handler" function="results_parser"> + <inputs> + <input name="pivots"> 1, 0, 2 </input> + <input name="grouping"> 3 </input> + <input name="results"> 4 </input> + <input name="pivot_transform">displayNameExitSite</input> + </inputs> + </results> + <attribute name="pivot_name">Exit Code</attribute> + <attribute name="grouping_name">Time</attribute> + <attribute name="title">Exit Code Count by User and Site (Glidein)</attribute> + <attribute name="column_names">Exit Code Count</attribute> + <attribute name="column_units">Jobs</attribute> + <attribute name="graph_type">GratiaStackedBar</attribute> + </query> </class> diff --git a/src/gratia/database/query_handler.py b/src/gratia/database/query_handler.py index 47a760bd9befb925bee240ef26a44954ed0693c6..dfe62724dfce1af5495405eae7ffeab6a43c4a15 100644 --- a/src/gratia/database/query_handler.py +++ b/src/gratia/database/query_handler.py @@ -429,6 +429,14 @@ def displayNameSite(*args, **kw): return return "%s @ %s" % (dn, site) +def displayNameExitSite(*args, **kw): + exitcode = args[1] + site = args[2] + dn = displayName(*args, **kw) + if not dn: + return + return "%s: %s @ %s" % (dn, exitcode, site) + model_re = re.compile("model='(.*)'") def model_parser(pivot, **kw): m = model_re.search(pivot)