Skip to content

Commit 18c8fd0

Browse files
committed
Add InfrastructureDescription to appropriate places in client and server code and the DB
1 parent 09f2777 commit 18c8fd0

10 files changed

Lines changed: 445 additions & 31 deletions

File tree

apel/db/backends/mysql.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ class ApelMysqlDb(object):
7373
EventRecord : 'CALL ReplaceEventRecord(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)',
7474
JobRecord : "CALL ReplaceJobRecord(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
7575
JobRecord04 : "CALL ReplaceJobRecord(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
76-
SummaryRecord: "CALL ReplaceSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
77-
SummaryRecord04: "CALL ReplaceSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
78-
NormalisedSummaryRecord: "CALL ReplaceNormalisedSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
79-
NormalisedSummaryRecord04: "CALL ReplaceNormalisedSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
76+
SummaryRecord: "CALL ReplaceSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
77+
SummaryRecord04: "CALL ReplaceSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
78+
NormalisedSummaryRecord: "CALL ReplaceNormalisedSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
79+
NormalisedSummaryRecord04: "CALL ReplaceNormalisedSummary(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
8080
SyncRecord : "CALL ReplaceSyncRecord(%s, %s, %s, %s, %s, %s)",
8181
ProcessedRecord : "CALL ReplaceProcessedFile(%s, %s, %s, %s, %s)",
8282
CloudRecord : "CALL ReplaceCloudRecord(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",

apel/db/records/normalised_summary.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ def __init__(self):
4848
# used "InfrastructureType"
4949
self._msg_fields = ["Site", "Month", "Year", "GlobalUserName", "VO",
5050
"VOGroup", "VORole", "SubmitHost", "Infrastructure",
51-
"NodeCount", "Processors", "EarliestEndTime",
51+
"InfrastructureDescription", "NodeCount",
52+
"Processors", "EarliestEndTime",
5253
"LatestEndTime", "WallDuration", "CpuDuration",
5354
"NormalisedWallDuration", "NormalisedCpuDuration",
5455
"NumberOfJobs"]
@@ -66,7 +67,8 @@ def __init__(self):
6667
# This list specifies the information that goes in the database. It includes
6768
# the additional ServiceLevelType field.
6869
self._db_fields = ["Site", "Month", "Year", "GlobalUserName", "VO",
69-
"VOGroup", "VORole", "SubmitHost", "Infrastructure",
70+
"VOGroup", "VORole", "SubmitHost",
71+
"Infrastructure", "InfrastructureDescription",
7072
"ServiceLevelType",
7173
"NodeCount", "Processors", "EarliestEndTime",
7274
"LatestEndTime", "WallDuration", "CpuDuration",
@@ -196,6 +198,8 @@ def get_ur(self):
196198

197199
infra = doc.createElement('aur:Infrastructure')
198200
infra.setAttribute('urf:type', self.get_field('Infrastructure'))
201+
if self.get_field('InfrastructureDescription') is not None:
202+
infra.setAttribute('urf:description', self.get_field('InfrastructureDescription'))
199203
ur.appendChild(infra)
200204

201205
earliest = doc.createElement('aur:EarliestEndTime')
@@ -268,7 +272,7 @@ def __init__(self):
268272
# used "InfrastructureType"
269273
self._msg_fields = [
270274
"Site", "Month", "Year", "GlobalUserName", "VO", "VOGroup", "VORole", "SubmitHost",
271-
"Infrastructure", "NodeCount", "Processors", "EarliestEndTime",
275+
"Infrastructure", "InfrastructureDescription", "NodeCount", "Processors", "EarliestEndTime",
272276
"LatestEndTime", "WallDuration", "CpuDuration", "NormalisedWallDuration",
273277
"NormalisedCpuDuration", "NumberOfJobs"
274278
]
@@ -279,8 +283,8 @@ def __init__(self):
279283
# It includes the extra ServiceLevelType field that's extracted from the dict fields.
280284
self._db_fields = [
281285
"Site", "Month", "Year", "GlobalUserName", "VO", "VOGroup", "VORole", "SubmitHost",
282-
"Infrastructure", "ServiceLevelType", "NodeCount", "Processors", "EarliestEndTime",
283-
"LatestEndTime", "WallDuration", "CpuDuration", "NormalisedWallDuration",
286+
"Infrastructure", "InfrastructureDescription", "ServiceLevelType", "NodeCount", "Processors",
287+
"EarliestEndTime", "LatestEndTime", "WallDuration", "CpuDuration", "NormalisedWallDuration",
284288
"NormalisedCpuDuration", "NumberOfJobs"
285289
]
286290
# All allowed fields.

apel/db/records/record.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ def load_from_msg(self, text):
264264
self._check_fields()
265265

266266

267-
def get_msg(self, withhold_dns=False):
267+
def get_msg(self, withhold_dns=False, exclude_fields=None):
268268
'''
269269
Get the information about the record as a string in the format used
270270
for APEL's messages. self._record_content holds the appropriate
@@ -274,7 +274,14 @@ def get_msg(self, withhold_dns=False):
274274
None. In this case, no line is included in the message unless
275275
it is a mandatory field. If the field is mandatory, an
276276
exception is raised.
277+
278+
If exclude_fields is provided, any field in that set will be omitted
279+
from the output message. This is used to conditionally exclude
280+
optional fields like InfrastructureDescription based on configuration.
277281
'''
282+
if exclude_fields is None:
283+
exclude_fields = set()
284+
278285
# Check that the record is consistent.
279286
self._check_fields()
280287
# for certain records, we can replace GlobalUserName with 'withheld'
@@ -285,6 +292,10 @@ def get_msg(self, withhold_dns=False):
285292

286293
msg = ""
287294
for key in self._msg_fields:
295+
# Skip fields that are explicitly excluded by configuration.
296+
if key in exclude_fields:
297+
continue
298+
288299
# reset value each time.
289300
value = None
290301
try:

apel/db/records/summary.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ def __init__(self):
4444
# This list allows us to specify the order of lines when we construct
4545
# records.
4646
self._msg_fields = ["Site", "Month", "Year", "GlobalUserName", "VO",
47-
"VOGroup", "VORole", "SubmitHost", "InfrastructureType", "ServiceLevelType",
48-
"ServiceLevel", "NodeCount", "Processors", "EarliestEndTime", "LatestEndTime",
49-
"WallDuration", "CpuDuration", "NumberOfJobs"]
47+
"VOGroup", "VORole", "SubmitHost", "InfrastructureType", "InfrastructureDescription",
48+
"ServiceLevelType", "ServiceLevel", "NodeCount", "Processors", "EarliestEndTime",
49+
"LatestEndTime", "WallDuration", "CpuDuration", "NumberOfJobs"]
5050

5151
# Fields which will have an integer stored in them
5252
self._int_fields = ["Month", "Year", "NodeCount", "Processors",
@@ -186,6 +186,8 @@ def get_ur(self):
186186

187187
infra = doc.createElement('aur:Infrastructure')
188188
infra.setAttribute('urf:type', self.get_field('InfrastructureType'))
189+
if self.get_field('InfrastructureDescription') is not None:
190+
infra.setAttribute('urf:description', self.get_field('InfrastructureDescription'))
189191
ur.appendChild(infra)
190192

191193
earliest = doc.createElement('aur:EarliestEndTime')
@@ -253,15 +255,15 @@ def __init__(self):
253255
# as this is included in the dict for ServiceLevel.
254256
self._msg_fields = [
255257
"Site", "Month", "Year", "GlobalUserName", "VO", "VOGroup", "VORole", "SubmitHost",
256-
"InfrastructureType", "ServiceLevel", "NodeCount", "Processors",
258+
"InfrastructureType", "InfrastructureDescription", "ServiceLevel", "NodeCount", "Processors",
257259
"EarliestEndTime", "LatestEndTime", "WallDuration", "CpuDuration", "NumberOfJobs"
258260
]
259261

260262
# This list specifies the information that goes in the database.
261263
self._db_fields = [
262264
"Site", "Month", "Year", "GlobalUserName", "VO", "VOGroup", "VORole", "SubmitHost",
263-
"InfrastructureType", "ServiceLevelType", "ServiceLevel", "NodeCount", "Processors",
264-
"EarliestEndTime", "LatestEndTime", "WallDuration", "CpuDuration", "NumberOfJobs"
265+
"InfrastructureType", "InfrastructureDescription", "ServiceLevelType", "ServiceLevel", "NodeCount",
266+
"Processors", "EarliestEndTime", "LatestEndTime", "WallDuration", "CpuDuration", "NumberOfJobs"
265267
]
266268

267269
self._ignored_fields = ["UpdateTime"]

apel/db/unloader.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def __init__(self, db, qpath, inc_vos=None, exc_vos=None, local=False, withhold_
8989
self._local = local
9090
self._withhold_dns = withhold_dns
9191
self.records_per_message = 1000
92+
self.include_infrastructure_description = False
9293
if dict_records:
9394
# If dict_records is True, then we only handle the subset of v0.4 records
9495
self.RECORD_TYPES = self.DICT_RECORD_TYPES
@@ -292,9 +293,16 @@ def _write_apel(self, records):
292293
'''
293294
record_type = type(records[0])
294295

296+
# Build the set of fields to exclude based on configuration.
297+
exclude_fields = set()
298+
if not self.include_infrastructure_description:
299+
exclude_fields.add('InfrastructureDescription')
300+
295301
buf = StringIO.StringIO()
296302
buf.write(self.APEL_HEADERS[record_type] + '\n')
297-
buf.write('%%\n'.join( [ record.get_msg(self._withhold_dns) for record in records ] ))
303+
buf.write('%%\n'.join( [ record.get_msg(self._withhold_dns,
304+
exclude_fields=exclude_fields)
305+
for record in records ] ))
298306
buf.write('%%\n')
299307

300308
self._msgq.add(buf.getvalue())

bin/client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,9 @@ def run_client(ccp):
239239

240240
unloader = DbUnloader(db, unload_dir, include_vos, exclude_vos,
241241
local_jobs, withhold_dns, dict_records)
242+
# Preserve existing client behaviour: Ensures to include `infrastructureDescription` in outgoing messages.
243+
unloader.include_infrastructure_description = True
244+
242245
try:
243246
if interval == 'latest':
244247
msgs, recs = unloader.unload_latest(table_name, send_ur)

bin/dbunloader.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,11 @@ def _bounded_records_per_message(config_object, logger):
158158
except ConfigParser.NoOptionError:
159159
withhold_dns = False
160160

161+
try:
162+
include_infrastructure_description = cp.getboolean('unloader', 'include_infrastructure_description')
163+
except ConfigParser.NoOptionError:
164+
include_infrastructure_description = False
165+
161166
include_vos = None
162167
exclude_vos = None
163168
try:
@@ -176,6 +181,7 @@ def _bounded_records_per_message(config_object, logger):
176181
unloader = DbUnloader(db, unload_dir, include_vos, exclude_vos, local_jobs, withhold_dns, dict_records)
177182

178183
unloader.records_per_message = _bounded_records_per_message(cp, log)
184+
unloader.include_infrastructure_description = include_infrastructure_description
179185

180186
try:
181187
if interval == 'latest':

conf/unloader.cfg

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ table_name = VJobRecords
2222
# - VNormalisedSuperSummaries
2323
dict_benchmark_type = false
2424

25+
# Set to true to include the InfrastructureDescription field in outgoing
26+
# messages. When false (the default), this field is excluded from unloaded
27+
# records. This applies to the following:
28+
# - VSummaries
29+
# - VSuperSummaries
30+
# - VNormalisedSummaries
31+
# - VNormalisedSuperSummaries
32+
include_infrastructure_description = false
33+
2534
# Only used when sending job records, job summaries or storage records.
2635
# - for grid accounting, if send_ur is true, records and summaries will be sent
2736
# in the OGF Usage Record format.

schemas/server.sql

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ CREATE TABLE Summaries (
100100
VORoleID INT NOT NULL, -- Foreign key
101101
SubmitHostId INT NOT NULL,
102102
InfrastructureType VARCHAR(20),
103+
InfrastructureDescription VARCHAR(100),
103104
ServiceLevelType VARCHAR(50) NOT NULL,
104105
ServiceLevel DECIMAL(10,3) NOT NULL,
105106
NodeCount INT NOT NULL,
@@ -122,18 +123,18 @@ DELIMITER //
122123
CREATE PROCEDURE ReplaceSummary(
123124
site VARCHAR(255), month INT, year INT,
124125
globalUserName VARCHAR(255), vo VARCHAR(255), voGroup VARCHAR(255), voRole VARCHAR(255),
125-
submitHost VARCHAR(255), infrastructureType VARCHAR(50), serviceLevelType VARCHAR(50), serviceLevel DECIMAL(10,3),
126-
nodeCount INT, processors INT, earliestEndTime DATETIME, latestEndTime DATETIME, wallDuration BIGINT, cpuDuration BIGINT,
127-
numberOfJobs INT, publisherDN VARCHAR(255))
126+
submitHost VARCHAR(255), infrastructureType VARCHAR(50), infrastructureDescription VARCHAR(100), serviceLevelType VARCHAR(50),
127+
serviceLevel DECIMAL(10,3), nodeCount INT, processors INT, earliestEndTime DATETIME, latestEndTime DATETIME, wallDuration BIGINT,
128+
cpuDuration BIGINT, numberOfJobs INT, publisherDN VARCHAR(255))
128129
BEGIN
129130
REPLACE INTO Summaries(SiteID, Month, Year, GlobalUserNameID, VOID,
130-
VOGroupID, VORoleID, SubmitHostId, InfrastructureType, ServiceLevelType, ServiceLevel,
131-
NodeCount, Processors, EarliestEndTime, LatestEndTime, WallDuration,
131+
VOGroupID, VORoleID, SubmitHostId, InfrastructureType, InfrastructureDescription, ServiceLevelType,
132+
ServiceLevel, NodeCount, Processors, EarliestEndTime, LatestEndTime, WallDuration,
132133
CpuDuration, NumberOfJobs, PublisherDNID)
133134
VALUES (
134135
SiteLookup(site), month, year, DNLookup(globalUserName), VOLookup(vo),
135136
VOGroupLookup(voGroup), VORoleLookup(voRole), SubmitHostLookup(submitHost),
136-
infrastructureType, serviceLevelType, serviceLevel, nodeCount, processors, earliestEndTime,
137+
infrastructureType, infrastructureDescription, serviceLevelType, serviceLevel, nodeCount, processors, earliestEndTime,
137138
latestEndTime, wallDuration, cpuDuration, numberOfJobs, DNLookup(publisherDN));
138139
END //
139140
DELIMITER ;
@@ -153,6 +154,7 @@ CREATE TABLE NormalisedSummaries (
153154
VORoleID INT NOT NULL, -- Foreign key
154155
SubmitHostId INT NOT NULL,
155156
Infrastructure VARCHAR(20),
157+
InfrastructureDescription VARCHAR(100),
156158
ServiceLevelType VARCHAR(50) NOT NULL DEFAULT '',
157159
NodeCount INT NOT NULL,
158160
Processors INT NOT NULL,
@@ -176,19 +178,19 @@ DELIMITER //
176178
CREATE PROCEDURE ReplaceNormalisedSummary(
177179
site VARCHAR(255), month INT, year INT,
178180
globalUserName VARCHAR(255), vo VARCHAR(255), voGroup VARCHAR(255), voRole VARCHAR(255),
179-
submitHost VARCHAR(255), infrastructure VARCHAR(50), serviceLevelType VARCHAR(50),
181+
submitHost VARCHAR(255), infrastructure VARCHAR(50), infrastructureDescription VARCHAR(100), serviceLevelType VARCHAR(50),
180182
nodeCount INT, processors INT, earliestEndTime DATETIME, latestEndTime DATETIME, wallDuration BIGINT, cpuDuration BIGINT,
181183
normalisedWallDuration BIGINT, normalisedCpuDuration BIGINT, numberOfJobs INT, publisherDN VARCHAR(255))
182184
BEGIN
183185
REPLACE INTO NormalisedSummaries(SiteID, Month, Year, GlobalUserNameID, VOID,
184-
VOGroupID, VORoleID, SubmitHostId, Infrastructure, ServiceLevelType,
186+
VOGroupID, VORoleID, SubmitHostId, Infrastructure, InfrastructureDescription, ServiceLevelType,
185187
NodeCount, Processors, EarliestEndTime, LatestEndTime, WallDuration,
186188
CpuDuration, NormalisedWallDuration, NormalisedCpuDuration,
187189
NumberOfJobs, PublisherDNID)
188190
VALUES (
189191
SiteLookup(site), month, year, DNLookup(globalUserName), VOLookup(vo),
190192
VOGroupLookup(voGroup), VORoleLookup(voRole), SubmitHostLookup(submitHost),
191-
infrastructure, serviceLevelType, nodeCount, processors, earliestEndTime,
193+
infrastructure, infrastructureDescription, serviceLevelType, nodeCount, processors, earliestEndTime,
192194
latestEndTime, wallDuration, cpuDuration, normalisedWallDuration, normalisedCpuDuration,
193195
numberOfJobs, DNLookup(publisherDN));
194196
END //
@@ -210,6 +212,7 @@ CREATE TABLE SuperSummaries (
210212
VORoleID INT NOT NULL, -- Foreign key
211213
SubmitHostId INT NOT NULL,
212214
InfrastructureType VARCHAR(20),
215+
InfrastructureDescription VARCHAR(100),
213216
ServiceLevelType VARCHAR(50) NOT NULL,
214217
ServiceLevel DECIMAL(10,3) NOT NULL,
215218
NodeCount INT NOT NULL,
@@ -242,6 +245,7 @@ CREATE TABLE HybridSuperSummaries (
242245
VORoleID INT NOT NULL, -- ID for lookup table
243246
SubmitHostId INT NOT NULL, -- ID for lookup table
244247
Infrastructure VARCHAR(20) NOT NULL,
248+
InfrastructureDescription VARCHAR(100),
245249
ServiceLevelType VARCHAR(50) NOT NULL,
246250
/* Defaults for service level set so that warnings are not raised when
247251
normalised summaries (which lack service level value) are copied in.*/
@@ -268,8 +272,8 @@ DELIMITER //
268272
CREATE PROCEDURE SummariseJobs()
269273
BEGIN
270274
REPLACE INTO HybridSuperSummaries(SiteID, Month, Year, GlobalUserNameID, VOID,
271-
VOGroupID, VORoleID, SubmitHostID, Infrastructure, ServiceLevelType,
272-
ServiceLevel, NodeCount, Processors, EarliestEndTime, LatestEndTime,
275+
VOGroupID, VORoleID, SubmitHostID, Infrastructure, InfrastructureDescription,
276+
ServiceLevelType, ServiceLevel, NodeCount, Processors, EarliestEndTime, LatestEndTime,
273277
WallDuration, CpuDuration, NormalisedWallDuration, NormalisedCpuDuration,
274278
NumberOfJobs)
275279
SELECT SiteID,
@@ -281,6 +285,7 @@ BEGIN
281285
VORoleID,
282286
SubmitHostID,
283287
InfrastructureType,
288+
InfrastructureDescription,
284289
ServiceLevelType,
285290
ServiceLevel,
286291
NodeCount,
@@ -306,8 +311,8 @@ DELIMITER //
306311
CREATE PROCEDURE NormaliseSummaries()
307312
BEGIN
308313
REPLACE INTO HybridSuperSummaries(SiteID, Month, Year, GlobalUserNameID, VOID,
309-
VOGroupID, VORoleID, SubmitHostID, Infrastructure, ServiceLevelType,
310-
ServiceLevel, NodeCount, Processors, EarliestEndTime, LatestEndTime,
314+
VOGroupID, VORoleID, SubmitHostID, Infrastructure, InfrastructureDescription,
315+
ServiceLevelType, ServiceLevel, NodeCount, Processors, EarliestEndTime, LatestEndTime,
311316
WallDuration, CpuDuration, NormalisedWallDuration, NormalisedCpuDuration,
312317
NumberOfJobs)
313318
SELECT SiteID,
@@ -319,6 +324,7 @@ BEGIN
319324
VORoleID,
320325
SubmitHostID,
321326
InfrastructureType,
327+
InfrastructureDescription,
322328
ServiceLevelType,
323329
ServiceLevel,
324330
NodeCount,
@@ -341,7 +347,8 @@ DELIMITER //
341347
CREATE PROCEDURE CopyNormalisedSummaries()
342348
BEGIN
343349
REPLACE INTO HybridSuperSummaries(SiteID, Month, Year, GlobalUserNameID, VOID,
344-
VOGroupID, VORoleID, SubmitHostID, Infrastructure, ServiceLevelType, NodeCount, Processors,
350+
VOGroupID, VORoleID, SubmitHostID, Infrastructure, InfrastructureDescription,
351+
ServiceLevelType, NodeCount, Processors,
345352
EarliestEndTime, LatestEndTime, WallDuration, CpuDuration,
346353
NormalisedWallDuration, NormalisedCpuDuration, NumberOfJobs)
347354
SELECT SiteID,
@@ -353,6 +360,7 @@ BEGIN
353360
VORoleID,
354361
SubmitHostID,
355362
Infrastructure,
363+
InfrastructureDescription,
356364
ServiceLevelType,
357365
NodeCount,
358366
Processors,
@@ -639,6 +647,7 @@ CREATE VIEW VSummaries AS
639647
vorole.name VORole,
640648
submithost.name SubmitHost,
641649
InfrastructureType,
650+
InfrastructureDescription,
642651
ServiceLevelType,
643652
ServiceLevel,
644653
NodeCount,
@@ -679,6 +688,7 @@ CREATE VIEW VNormalisedSummaries AS
679688
vorole.name VORole,
680689
submithost.name SubmitHost,
681690
Infrastructure,
691+
InfrastructureDescription,
682692
ServiceLevelType,
683693
NodeCount,
684694
Processors,
@@ -723,6 +733,7 @@ CREATE VIEW VSuperSummaries AS
723733
vorole.name VORole,
724734
submithost.name SubmitHost,
725735
Infrastructure AS InfrastructureType,
736+
InfrastructureDescription,
726737
ServiceLevelType,
727738
ServiceLevel,
728739
NodeCount,
@@ -765,6 +776,7 @@ CREATE VIEW VNormalisedSuperSummaries AS
765776
vorole.name VORole,
766777
submithost.name SubmitHost,
767778
Infrastructure,
779+
InfrastructureDescription,
768780
ServiceLevelType,
769781
NodeCount,
770782
Processors,

0 commit comments

Comments
 (0)