@include("../commons/styles.html") @include("../commons/images.html") @args() { String client_name List> volume_summary List> volume_per_task_items List> volume_storage_items List BACKUP_TYPES_L2 List BACKUP_TYPES_L3 Map info Locale locale String date_column String fromDate String toDate String defaultDataSize de.sep.sesam.util.RendererUtils rendererUtils } @returnIf(volume_summary == null || volume_summary.isEmpty()) @returnIf(volume_per_task_items == null || volume_per_task_items.isEmpty()) @returnIf(volume_storage_items == null || volume_storage_items.isEmpty()) @*Queries: * [ * { * "paramName" : "client_name", * "query" : [ * "SELECT", * "name", * "FROM", * "clients", * "WHERE", * "client_id = 0" * ], * "converter" : [ * "toString(name)" * ] * }, * { * "paramName" : "volume_summary", * "query" : [ * "SELECT", * "sum(data_size) as data_size,", * "(select value from defaults where key = 'volume_fs_tb') as max_limit", * "FROM", * "(", * "SELECT", * "distinct", * "task,", * "max(data_size) over (partition by task order by data_size desc) as data_size", * "FROM", * "results", * "WHERE", * "fdi_type in ('C','F','D','I')", * "AND", * "original_saveset IS NULL", * "AND", * "data_size is not null", * "ORDER BY", * "data_size desc", * ")", * "AS ds" * ] * }, * { * "paramName" : "volume_per_task_items", * "query" : [ * "SELECT", * "distinct", * "task,", * "backup_type,", * "media_pool,", * "max(data_size) over (partition by task order by data_size desc) as data_size", * "FROM", * "results", * "WHERE", * "fdi_type in ('C','F','D','I')", * "AND", * "original_saveset IS NULL", * "AND", * "data_size IS NOT NULL", * "ORDER BY", * "data_size desc" * ] * }, * { * "paramName" : "volume_storage_items", * "query" : [ * "SELECT", * "r.task,", * "r.media_pool,", * "r.data_size,", * "r.start_time,", * "d.datastore,", * "ds.data_store_type,", * "dt.generic_type", * "FROM", * "results r", * "LEFT OUTER JOIN (SELECT DISTINCT pool, datastore FROM drive_pool) d ON r.media_pool = d.pool", * "LEFT OUTER JOIN data_stores ds ON d.datastore = ds.name", * "LEFT OUTER JOIN data_store_types dt ON ds.data_store_type = dt.name", * "WHERE", * "r.fdi_type in ('C','F','D','I')", * "AND", * "r.data_size IS NOT NULL", * "AND", * "r.state in ('0','1','2')", * "AND", * "r.saveset IN (", * "SELECT saveset FROM result_lbls WHERE pool IN (", * "SELECT DISTINCT pool FROM drive_pool WHERE datastore IN (", * "SELECT name FROM data_stores WHERE data_store_type IN (", * "SELECT name FROM data_store_types WHERE generic_type NOT IN ( 'Archive', 'SnapShot' ) ORDER BY name", * ") ORDER BY name", * ") ORDER BY pool", * ") ORDER BY saveset", * ")", * "ORDER BY", * "r.media_pool,", * "r.data_size DESC" * ] * } * ] *@ @include("../commons/tags.html") @include("../commons/functions.html") @sepReportHeader("SEP Report")

@sepTitleBox("Title", sepFnGetToday(locale), client_name)

@{ Map volume_summary_item = volume_summary.get(0); Object dataSizeSumObj = volume_summary_item.get("data_size"); Long data_size_sum = Long.valueOf(dataSizeSumObj != null ? String.valueOf(dataSizeSumObj) : "0"); Object maxLimitObj = volume_summary_item.get("max_limit"); Long max_limit = Long.valueOf(maxLimitObj != null ? String.valueOf(maxLimitObj) : "0"); long storage_all_total = 0; } @sepTitleLabel("Title.Volume.Summary", ":")

@sepFnFormatBytesInUnit(rendererUtils, data_size_sum, 4, 3, "Decimal") @i18n("Of") @(max_limit) @i18n("TB.FrontSize")

@for (Map volume_storage_item : volume_storage_items) { @{ Object dataSizeObj = volume_storage_item.get("data_size"); if (dataSizeObj != null) { long dataSize = Long.valueOf(String.valueOf(dataSizeObj)); storage_all_total += dataSize; } } } @{ double ratio = Long.valueOf(storage_all_total).doubleValue() / data_size_sum.doubleValue(); }

@i18n("Title.FrontSide.Storage") : @sepFnFormatBytesInUnit(rendererUtils, data_size_sum, 4, 3, "Decimal") / @sepFnFormatBytesInUnit(rendererUtils, storage_all_total, 4, 3, "Decimal") ( 1 : @sepFnFormatDouble(rendererUtils, ratio, 2) )

@{ long total = 0; long dataSize = 0; } @sepTitleLabel("Title.FrontSide.BackupTask", "") @for (Map volume_per_task_item : volume_per_task_items) { @{ String task = String.valueOf(volume_per_task_item.get("task")); String pool = String.valueOf(volume_per_task_item.get("media_pool")); Object dataSizeObj = volume_per_task_item.get("data_size"); if (dataSizeObj != null) { dataSize = Long.valueOf(String.valueOf(dataSizeObj)); total += dataSize; } } }
@i18n("Column.Task") @i18n("Column.Pool") @i18n("Column.Size")
@(task) @(pool) @sepFnFormatBytes(rendererUtils, dataSize, "Decimal")
@i18n("Summary.Total"): @sepFnFormatBytes(rendererUtils, total, "Decimal")
@sepTitleLabel("Title.FrontSide.L3.TaskType", "") @{ String backup_type = null; boolean print = false; total = 0; dataSize = 0; } @for (Map volume_per_task_item : volume_per_task_items) { @{ String type = String.valueOf(volume_per_task_item.get("backup_type")); if (!BACKUP_TYPES_L3.contains(type)) { continue; } if (backup_type == null) { backup_type = type; } if (!backup_type.equals(type)) { print = true; } else { Object dataSizeObj = volume_per_task_item.get("data_size"); if (dataSizeObj != null) { dataSize = Long.valueOf(String.valueOf(dataSizeObj)); total += dataSize; } } } @if(print) { @{ print = false; backup_type = type; total = dataSize; dataSize = 0; } } } @if(backup_type != null || print) { }
@i18n("Column.TaskType") @i18n("Column.Size")
@(backup_type) @sepFnFormatBytes(rendererUtils, total, "Decimal")
@(backup_type) @sepFnFormatBytes(rendererUtils, total, "Decimal")
@i18n("Summary.Total"): @sepFnFormatBytes(rendererUtils, total, "Decimal")
@sepTitleLabel("Title.FrontSide.L3.BackupType", "") @for (Map volume_per_task_item : volume_per_task_items) { @{ String task = String.valueOf(volume_per_task_item.get("task")); String type = String.valueOf(volume_per_task_item.get("backup_type")); if (!BACKUP_TYPES_L3.contains(type)) { continue; } Object dataSizeObj = volume_per_task_item.get("data_size"); if (dataSizeObj != null) { dataSize = Long.valueOf(String.valueOf(dataSizeObj)); total += dataSize; } } }
@i18n("Column.Task") @i18n("Column.Size")
@(task) @sepFnFormatBytes(rendererUtils, dataSize, "Decimal")
@i18n("Summary.Total"): @sepFnFormatBytes(rendererUtils, total, "Decimal")
@sepTitleLabel("Title.FrontSide.L2.TaskType", "") @{ backup_type = null; print = false; total = 0; dataSize = 0; } @for (Map volume_per_task_item : volume_per_task_items) { @{ String type = String.valueOf(volume_per_task_item.get("backup_type")); if (!BACKUP_TYPES_L2.contains(type)) { continue; } if (backup_type == null) { backup_type = type; } if (!backup_type.equals(type)) { print = true; } else { Object dataSizeObj = volume_per_task_item.get("data_size"); if (dataSizeObj != null) { dataSize = Long.valueOf(String.valueOf(dataSizeObj)); total += dataSize; } } } @if(print) { @{ print = false; backup_type = type; total = dataSize; dataSize = 0; } } } @if(backup_type != null || print) { }
@i18n("Column.TaskType") @i18n("Column.Size")
@(backup_type) @sepFnFormatBytes(rendererUtils, total, "Decimal")
@(backup_type) @sepFnFormatBytes(rendererUtils, total, "Decimal")
@i18n("Summary.Total"): @sepFnFormatBytes(rendererUtils, total, "Decimal")
@sepTitleLabel("Title.FrontSide.L2.BackupType", "") @for (Map volume_per_task_item : volume_per_task_items) { @{ String task = String.valueOf(volume_per_task_item.get("task")); String type = String.valueOf(volume_per_task_item.get("backup_type")); if (!BACKUP_TYPES_L2.contains(type)) { continue; } Object dataSizeObj = volume_per_task_item.get("data_size"); if (dataSizeObj != null) { dataSize = Long.valueOf(String.valueOf(dataSizeObj)); total += dataSize; } } }
@i18n("Column.Task") @i18n("Column.Size")
@(task) @sepFnFormatBytes(rendererUtils, dataSize, "Decimal")
@i18n("Summary.Total"): @sepFnFormatBytes(rendererUtils, total, "Decimal")
@sepTitleLabel("Title.Storage", "") @{ total = 0; long all_total = 0; List mediaPools = new ArrayList<>(); String dsTypeLast = null; String dsSubTypeLast = null; boolean newDsType = false; boolean newDsSubType = false; } @for (Map volume_storage_item : volume_storage_items) { @{ String pool = String.valueOf(volume_storage_item.get("media_pool")); String ds = String.valueOf(volume_storage_item.get("datastore")); String dsType = String.valueOf(volume_storage_item.get("data_store_type")); String dsSubType = String.valueOf(volume_storage_item.get("generic_type")); if (dsTypeLast == null) { dsTypeLast = dsType; } if (dsSubTypeLast == null) { dsSubTypeLast = dsSubType; } newDsType = dsTypeLast != null && !dsTypeLast.equals(dsType); newDsSubType = dsSubTypeLast != null && !dsSubTypeLast.equals(dsSubType); } @if(newDsType || newDsSubType) { @{ String pools = de.sep.sesam.common.util.Joiner.on(", ").join(mediaPools); String key = "Storage." + dsSubTypeLast; } } @{ if (newDsType || newDsSubType) { all_total += total; total = 0; mediaPools.clear(); dsTypeLast = dsType; dsSubTypeLast = dsSubType; } else { if (!mediaPools.contains(pool)) { mediaPools.add(pool); } } Object dataSizeObj = volume_storage_item.get("data_size"); if (dataSizeObj != null) { dataSize = Long.valueOf(String.valueOf(dataSizeObj)); total += dataSize; } } } @if (dsTypeLast != null && total > 0) { @{ String pools = de.sep.sesam.common.util.Joiner.on(", ").join(mediaPools); String key = "Storage." + dsSubTypeLast; all_total += total; } }
@sepFnFormatBytes(rendererUtils, total, "Decimal") @i18n(key) [@(pools)]
@sepFnFormatBytes(rendererUtils, total, "Decimal") @i18n(key) [@(pools)]
@i18n("Summary.Total"): @sepFnFormatBytes(rendererUtils, all_total, "Decimal")