From 41fa3e75d65b8f3a8a1f4fcff298933c60644cd0 Mon Sep 17 00:00:00 2001 From: Andrew Stoltman <60742416+aestoltm@users.noreply.github.com> Date: Thu, 23 Oct 2025 14:50:28 -0400 Subject: [PATCH 01/11] Have area plots only show tooltip when hovering on markers (#2077) Co-authored-by: Joe White --- classes/DataWarehouse/Visualization/AggregateChart.php | 2 +- classes/DataWarehouse/Visualization/TimeseriesChart.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/DataWarehouse/Visualization/AggregateChart.php b/classes/DataWarehouse/Visualization/AggregateChart.php index 1d89f082bf..e602a3f2cc 100644 --- a/classes/DataWarehouse/Visualization/AggregateChart.php +++ b/classes/DataWarehouse/Visualization/AggregateChart.php @@ -1121,7 +1121,7 @@ public function configure( 'type' => $data_description->display_type == 'h_bar' || $data_description->display_type == 'column' ? 'bar' : $data_description->display_type, 'mode' => $data_description->display_type == 'scatter' ? 'markers' : 'lines+markers', 'hovertext' => $xValues, - 'hoveron'=> $data_description->display_type == 'area' || $data_description->display_type == 'areaspline' ? 'points+fills' : 'points', + 'hoveron'=> 'points', 'hovertemplate' => $tooltip, 'showlegend' => true, 'text' => $data_description->display_type == 'pie' && $data_description->value_labels ? $text : array(), diff --git a/classes/DataWarehouse/Visualization/TimeseriesChart.php b/classes/DataWarehouse/Visualization/TimeseriesChart.php index 5a043c635b..2ee5042749 100644 --- a/classes/DataWarehouse/Visualization/TimeseriesChart.php +++ b/classes/DataWarehouse/Visualization/TimeseriesChart.php @@ -597,7 +597,7 @@ public function configure( 'shape' => ($data_description->display_type == 'spline' || $data_description->display_type == 'areaspline') ? 'spline' : 'linear' ), 'mode' => $data_description->display_type == 'scatter' ? 'markers' : 'lines+markers', - 'hoveron' => $data_description->display_type == 'area' || $data_description->display_type == 'areaspline' ? 'points+fills' : 'points', + 'hoveron' => 'points', 'yaxis' => "y{$yIndex}", 'showlegend' => $data_description->display_type != 'pie', 'hovertext' => $text, From 5d4d963f13d8fa30b9027083720868ea06876c2a Mon Sep 17 00:00:00 2001 From: Aaron Weeden <31246768+aaronweeden@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:06:41 -0400 Subject: [PATCH 02/11] Backport PRs for ACCESS 11.0.2 p4. (#2182) * Merge pull request #2072 from eiffel777/add-memory-instance-state-machine Add memory to cloud instance type ingestor sorting to prevent unique key errors * Merge pull request #2084 from eiffel777/add-straight-join-metrics-explorer Adding STRAIGHT_JOIN to metrics explorer/usage tab queries to improve performance * Merge pull request #2160 from eiffel777/remove-groupby-cloud-staging Update cloud instance type history ingestion process. --------- Co-authored-by: Greg Dean --- classes/DataWarehouse/Query/Query.php | 4 +- .../DataWarehouse/Query/TimeseriesQuery.php | 2 +- .../CloudInstanceTypeStateIngestor.php | 156 ---------- .../etl/etl.d/jobs_cloud_openstack.json | 25 +- .../cloud_generic/staging_event.json | 11 - .../instance_type_change_flag.json | 31 ++ .../instance_type_config_group.json | 31 ++ .../instance_type_grouped.json | 38 +++ .../instance_type_staging.json | 9 +- .../cloud_openstack/staging_event.json | 13 +- .../staging_raw_instance_type.json | 5 +- .../instance_type_change_flag.json | 83 +++++ .../instance_type_config_group.json | 91 ++++++ .../cloud_common/instance_type_grouped.json | 76 +++++ .../cloud_common/instance_type_staging.json | 3 +- .../cloud_common/instance_type_union.json | 12 +- .../avg_cpu_hours/aggregate-Day-reference.csv | 2 +- .../aggregate-Month-reference.csv | 2 +- .../aggregate-Quarter-reference.csv | 2 +- .../aggregate-Year-reference.csv | 2 +- .../avg_cpu_hours/aggregate-Day-reference.csv | 12 + .../aggregate-Month-reference.csv | 12 + .../aggregate-Quarter-reference.csv | 12 + .../aggregate-Year-reference.csv | 12 + .../avg_cpu_hours/aggregate-Day-reference.csv | 2 +- .../aggregate-Month-reference.csv | 2 +- .../aggregate-Quarter-reference.csv | 2 +- .../aggregate-Year-reference.csv | 2 +- .../avg_cpu_hours/aggregate-Day-reference.csv | 2 +- .../aggregate-Month-reference.csv | 2 +- .../aggregate-Quarter-reference.csv | 2 +- .../aggregate-Year-reference.csv | 2 +- .../aggregate-Month-reference.csv | 2 +- .../aggregate-Quarter-reference.csv | 2 +- .../aggregate-Year-reference.csv | 2 +- .../aggregate-Month-reference.csv | 11 + .../aggregate-Quarter-reference.csv | 11 + .../aggregate-Year-reference.csv | 11 + .../aggregate-Month-reference.csv | 2 +- .../aggregate-Quarter-reference.csv | 2 +- .../aggregate-Year-reference.csv | 2 +- .../avg_cpu_hours/aggregate-Day-reference.csv | 2 +- .../aggregate-Month-reference.csv | 2 +- .../aggregate-Quarter-reference.csv | 2 +- .../aggregate-Year-reference.csv | 2 +- .../aggregate-Day-reference.csv | 8 +- .../aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../aggregate-Year-reference.csv | 8 +- .../timeseries-Day-reference.csv | 8 +- .../timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../timeseries-Year-reference.csv | 8 +- .../aggregate-Day-reference.csv | 8 +- .../aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../aggregate-Year-reference.csv | 8 +- .../timeseries-Day-reference.csv | 8 +- .../timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../timeseries-Year-reference.csv | 8 +- .../aggregate-Day-reference.csv | 8 +- .../aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../aggregate-Year-reference.csv | 8 +- .../timeseries-Day-reference.csv | 8 +- .../timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../timeseries-Year-reference.csv | 8 +- .../aggregate-Day-reference.csv | 8 +- .../aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../aggregate-Year-reference.csv | 8 +- .../timeseries-Day-reference.csv | 8 +- .../timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../timeseries-Year-reference.csv | 8 +- .../aggregate-Day-reference.csv | 8 +- .../aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../aggregate-Year-reference.csv | 8 +- .../timeseries-Day-reference.csv | 8 +- .../timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../timeseries-Year-reference.csv | 8 +- .../aggregate-Day-reference.csv | 8 +- .../aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../aggregate-Year-reference.csv | 8 +- .../timeseries-Day-reference.csv | 8 +- .../timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../timeseries-Year-reference.csv | 8 +- .../user_count/aggregate-Day-reference.csv | 8 +- .../user_count/aggregate-Month-reference.csv | 8 +- .../aggregate-Quarter-reference.csv | 8 +- .../user_count/aggregate-Year-reference.csv | 8 +- .../user_count/timeseries-Day-reference.csv | 8 +- .../user_count/timeseries-Month-reference.csv | 8 +- .../timeseries-Quarter-reference.csv | 8 +- .../user_count/timeseries-Year-reference.csv | 8 +- .../xdmod/rest/output/get_statistics-cd.json | 4 +- .../xdmod/rest/output/get_statistics-cs.json | 4 +- .../xdmod/rest/output/get_statistics-pi.json | 4 +- .../xdmod/rest/output/get_statistics-pub.json | 4 +- .../xdmod/rest/output/get_statistics-usr.json | 4 +- .../CloudInstanceTypeStateIngestorTest.php | 294 ------------------ .../lib/Query/AggregateQueryTest.php | 22 +- .../lib/Query/TimeseriesQueryTest.php | 4 +- 109 files changed, 631 insertions(+), 872 deletions(-) delete mode 100644 classes/ETL/Ingestor/CloudInstanceTypeStateIngestor.php create mode 100644 configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_change_flag.json create mode 100644 configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_config_group.json create mode 100644 configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_grouped.json create mode 100644 configuration/etl/etl_tables.d/cloud_common/instance_type_change_flag.json create mode 100644 configuration/etl/etl_tables.d/cloud_common/instance_type_config_group.json create mode 100644 configuration/etl/etl_tables.d/cloud_common/instance_type_grouped.json create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Day-reference.csv create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Month-reference.csv create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Quarter-reference.csv create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Year-reference.csv create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Month-reference.csv create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Quarter-reference.csv create mode 100644 tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Year-reference.csv delete mode 100644 tests/component/lib/ETL/CloudInstanceTypeStateIngestorTest.php diff --git a/classes/DataWarehouse/Query/Query.php b/classes/DataWarehouse/Query/Query.php index 6a020c89f9..eb78bc13eb 100644 --- a/classes/DataWarehouse/Query/Query.php +++ b/classes/DataWarehouse/Query/Query.php @@ -728,7 +728,7 @@ public function getQueryString($limit = null, $offset = null, $extraHavingClause $select_order_by = $this->getSelectOrderBy(); $format = << - * @date 2022-06-15 - */ - -namespace ETL\Ingestor; - -use ETL\aOptions; -use ETL\iAction; -use ETL\aAction; -use ETL\Configuration\EtlConfiguration; -use ETL\EtlOverseerOptions; - -use Psr\Log\LoggerInterface; - -class CloudInstanceTypeStateIngestor extends pdoIngestor implements iAction -{ - - private $_instance_type_state; - - /** - * @see ETL\Ingestor\pdoIngestor::__construct() - */ - public function __construct(aOptions $options, EtlConfiguration $etlConfig, LoggerInterface $logger = null) - { - parent::__construct($options, $etlConfig, $logger); - - $this->_end_time = $etlConfig->getVariableStore()->endDate ? date('Y-m-d H:i:s', strtotime($etlConfig->getVariableStore()->endDate)) : null; - - $this->resetInstance(); - } - - private function initInstance($srcRecord) - { - // Since we only get information for when a configuration changes we assume a configuration has an end date - // of today unless we have a row that tells us otherwise - $default_end_time = isset($this->_end_time) ? $this->_end_time : date('Y-m-d') . ' 23:59:59'; - - $this->_instance_type_state = array( - 'resource_id' => $srcRecord['resource_id'], - 'instance_type_id' => $srcRecord['instance_type_id'], - 'instance_type' => $srcRecord['instance_type'], - 'display' => $srcRecord['display'], - 'description' => $srcRecord['description'], - 'memory_mb' => $srcRecord['memory_mb'], - 'num_cores' => $srcRecord['num_cores'], - 'disk_gb' => $srcRecord['disk_gb'], - 'start_time' => $srcRecord['start_time'], - 'end_time' => strtotime($default_end_time) - ); - } - - private function resetInstance() - { - $this->_instance_state = null; - } - - private function setInstanceTypeEndTime($srcRecord) - { - $end_date_timestamp = $srcRecord['start_time'] - 1; - $this->_instance_type_state['end_time'] = $end_date_timestamp; - } - - private function setInstanceTypeId($srcRecord) - { - $this->_instance_type_state['instance_type_id'] = $srcRecord['instance_type_id']; - } - - /** - * @see ETL\Ingestor\pdoIngestor::transform() - */ - protected function transform(array $srcRecord, &$orderId) - { - // We want to just flush when we hit the dummy row - if ($srcRecord['start_time'] === 0) { - if (isset($this->_instance_type_state)) { - return array($this->_instance_type_state); - } else { - return array(); - } - } - - if ($this->_instance_type_state === null) { - $this->initInstance($srcRecord); - } - - $transformedRecord = array(); - - if (($this->_instance_type_state['instance_type'] != $srcRecord['instance_type']) || ($this->_instance_type_state['resource_id'] != $srcRecord['resource_id'])) { - // When the instance type or resource ID changes the existing data in $this->_instance_type_state is saved in a - // multidimensional array and a $this->_instance_type_state is reset to null and data for a new record is added to it. - $transformedRecord[] = $this->_instance_type_state; - $this->resetInstance(); - $this->initInstance($srcRecord); - } - elseif ( - (($this->_instance_type_state['instance_type'] == $srcRecord['instance_type']) && - ($this->_instance_type_state['resource_id'] == $srcRecord['resource_id'])) && - (($this->_instance_type_state['num_cores'] != $srcRecord['num_cores']) || - ($this->_instance_type_state['memory_mb'] != $srcRecord['memory_mb']) || - ($this->_instance_type_state['disk_gb'] != $srcRecord['disk_gb'])) - ) { - // When the details of a specific instance change, such as the number of cores, memory or disk size changes - // set the correct end time, save the existing record, and start a new one. - $this->setInstanceTypeEndTime($srcRecord); - $transformedRecord[] = $this->_instance_type_state; - $this->resetInstance(); - $this->initInstance($srcRecord); - - } - elseif ( - ($this->_instance_type_state['instance_type'] == $srcRecord['instance_type']) && - ($this->_instance_type_state['resource_id'] == $srcRecord['resource_id']) && - ($this->_instance_type_state['num_cores'] == $srcRecord['num_cores']) && - ($this->_instance_type_state['memory_mb'] == $srcRecord['memory_mb']) && - ($this->_instance_type_state['disk_gb'] == $srcRecord['disk_gb']) && - ($this->_instance_type_state['start_time'] < $srcRecord['start_time']) && - ($this->_instance_type_state['instance_type_id'] == '0' && $srcRecord['instance_type_id'] != '0') - ) { - // When a record with earlier start time for an existing instance type is found update - // the record with the instance_type_id of the existing record. As the instance_type_id is - // the primary key this will update the existing row in the database with the new start time. - $this->setInstanceTypeId($srcRecord); - } - - return $transformedRecord; - } - - protected function getSourceQueryString() - { - $sql = parent::getSourceQueryString(); - - // Due to the way the Finite State Machine handles the rows in event reconstruction, the last row - // is lost. To work around this we add a dummy row filled with zeroes. - $colCount = count($this->etlSourceQuery->records); - $unionValues = array_fill(0, $colCount, 0); - $sql .= "\nUNION ALL\nSELECT " . implode(',', $unionValues) . "\nORDER BY 1 DESC, 3 ASC, 9 ASC, 8 ASC, 2 DESC"; - - return $sql; - } - - public function transformHelper(array $srcRecord) - { - $orderId = 0; - return $this->transform($srcRecord, $orderId); - } -} diff --git a/configuration/etl/etl.d/jobs_cloud_openstack.json b/configuration/etl/etl.d/jobs_cloud_openstack.json index 35c4a26fae..d64bf94a96 100644 --- a/configuration/etl/etl.d/jobs_cloud_openstack.json +++ b/configuration/etl/etl.d/jobs_cloud_openstack.json @@ -255,10 +255,31 @@ "class": "DatabaseIngestor", "definition_file": "cloud_openstack/staging_existing_instance_type.json" }, + { + "name": "OpenStackCloudInstanceTypeChangeFlagIngestor", + "description": "Calculate is_change flag for instance type observations", + "class": "DatabaseIngestor", + "truncate_destination": true, + "definition_file": "cloud_openstack/instance_type_change_flag.json" + }, + { + "name": "OpenStackCloudInstanceTypeConfigGroupIngestor", + "description": "Calculate config_group for instance type observations", + "class": "DatabaseIngestor", + "truncate_destination": true, + "definition_file": "cloud_openstack/instance_type_config_group.json" + }, + { + "name": "OpenStackCloudInstanceTypeGroupedIngestor", + "description": "Group consecutive same-config instance type observations", + "class": "DatabaseIngestor", + "truncate_destination": true, + "definition_file": "cloud_openstack/instance_type_grouped.json" + }, { "name": "OpenStackCloudInstanceTypeStagingIngestor", - "description": "Sets end times for instance type configurations", - "class": "CloudInstanceTypeStateIngestor", + "description": "Calculate end times for instance type configurations", + "class": "DatabaseIngestor", "truncate_destination": true, "definition_file": "cloud_openstack/instance_type_staging.json" }, diff --git a/configuration/etl/etl_action_defs.d/cloud_generic/staging_event.json b/configuration/etl/etl_action_defs.d/cloud_generic/staging_event.json index c8384f3f3f..573cbaed50 100644 --- a/configuration/etl/etl_action_defs.d/cloud_generic/staging_event.json +++ b/configuration/etl/etl_action_defs.d/cloud_generic/staging_event.json @@ -112,17 +112,6 @@ "on": "atype.asset_type = CONCAT('vol-', raw.root_volume_type)", "type": "LEFT OUTER" } - ], - - "groupby": [ - "raw.resource_id", - "i.instance_id", - "raw.event_time_utc", - "etype.event_type_id", - "rtype.record_type_id", - "acct.account_id", - "sa.person_id", - "h.host_id" ] } } diff --git a/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_change_flag.json b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_change_flag.json new file mode 100644 index 0000000000..1449653bc3 --- /dev/null +++ b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_change_flag.json @@ -0,0 +1,31 @@ +{ + "#": "Calculate is_change flag to detect when instance type configuration changes", + + "table_definition": [ + { + "$ref": "${table_definition_dir}/cloud_common/instance_type_change_flag.json#/table_definition" + } + ], + + "source_query": { + "records": { + "resource_id": "u.resource_id", + "instance_type_id": "u.instance_type_id", + "instance_type": "u.instance_type", + "display": "u.display", + "description": "u.description", + "num_cores": "u.num_cores", + "memory_mb": "u.memory_mb", + "disk_gb": "u.disk_gb", + "start_time": "u.start_time", + "is_change": "CASE WHEN LAG(u.num_cores) OVER (PARTITION BY u.resource_id, u.instance_type ORDER BY u.start_time) IS NULL THEN 1 WHEN u.num_cores != LAG(u.num_cores) OVER (PARTITION BY u.resource_id, u.instance_type ORDER BY u.start_time) THEN 1 WHEN u.memory_mb != LAG(u.memory_mb) OVER (PARTITION BY u.resource_id, u.instance_type ORDER BY u.start_time) THEN 1 WHEN u.disk_gb != LAG(u.disk_gb) OVER (PARTITION BY u.resource_id, u.instance_type ORDER BY u.start_time) THEN 1 ELSE 0 END" + }, + "joins": [ + { + "name": "instance_type_union", + "schema": "${SOURCE_SCHEMA}", + "alias": "u" + } + ] + } +} diff --git a/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_config_group.json b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_config_group.json new file mode 100644 index 0000000000..90899f1e5b --- /dev/null +++ b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_config_group.json @@ -0,0 +1,31 @@ +{ + "#": "Calculate config_group by computing running sum of is_change", + + "table_definition": [ + { + "$ref": "${table_definition_dir}/cloud_common/instance_type_config_group.json#/table_definition" + } + ], + + "source_query": { + "records": { + "resource_id": "cf.resource_id", + "instance_type_id": "cf.instance_type_id", + "instance_type": "cf.instance_type", + "display": "cf.display", + "description": "cf.description", + "num_cores": "cf.num_cores", + "memory_mb": "cf.memory_mb", + "disk_gb": "cf.disk_gb", + "start_time": "cf.start_time", + "config_group": "SUM(cf.is_change) OVER (PARTITION BY cf.resource_id, cf.instance_type ORDER BY cf.start_time)" + }, + "joins": [ + { + "name": "instance_type_change_flag", + "schema": "${SOURCE_SCHEMA}", + "alias": "cf" + } + ] + } +} diff --git a/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_grouped.json b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_grouped.json new file mode 100644 index 0000000000..c2d4003860 --- /dev/null +++ b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_grouped.json @@ -0,0 +1,38 @@ +{ + "#": "Group consecutive same-config observations, taking MIN(start_time) and MAX(instance_type_id)", + + "table_definition": [ + { + "$ref": "${table_definition_dir}/cloud_common/instance_type_grouped.json#/table_definition" + } + ], + + "source_query": { + "records": { + "resource_id": "cg.resource_id", + "instance_type_id": "MAX(cg.instance_type_id)", + "instance_type": "cg.instance_type", + "display": "MAX(cg.display)", + "description": "MAX(cg.description)", + "num_cores": "cg.num_cores", + "memory_mb": "cg.memory_mb", + "disk_gb": "cg.disk_gb", + "start_time": "MIN(cg.start_time)" + }, + "joins": [ + { + "name": "instance_type_config_group", + "schema": "${SOURCE_SCHEMA}", + "alias": "cg" + } + ], + "groupby": [ + "cg.resource_id", + "cg.instance_type", + "cg.num_cores", + "cg.memory_mb", + "cg.disk_gb", + "cg.config_group" + ] + } +} diff --git a/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_staging.json b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_staging.json index bda7053f42..25211e6073 100644 --- a/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_staging.json +++ b/configuration/etl/etl_action_defs.d/cloud_openstack/instance_type_staging.json @@ -1,12 +1,12 @@ { - "#": "Load unique instance types into the dimension table. Do not load unknown types as these are", - "#": "loaded by a separate action", + "#": "Calculate end_time for each instance type configuration period using LEAD()", "table_definition": [ { "$ref": "${table_definition_dir}/cloud_common/instance_type_staging.json#/table_definition" } ], + "source_query": { "records": { "resource_id": "staging.resource_id", @@ -18,12 +18,11 @@ "memory_mb": "staging.memory_mb", "disk_gb": "staging.disk_gb", "start_time": "staging.start_time", - "end_time": -1 + "end_time": "CASE WHEN LEAD(staging.start_time) OVER (PARTITION BY staging.resource_id, staging.instance_type ORDER BY staging.start_time) IS NOT NULL THEN LEAD(staging.start_time) OVER (PARTITION BY staging.resource_id, staging.instance_type ORDER BY staging.start_time) - 0.000001 ELSE (UNIX_TIMESTAMP(DATE_ADD(TIMESTAMP(CURDATE()), INTERVAL '23:59:59' HOUR_SECOND)) + .999999) END" }, - "joins": [ { - "name": "instance_type_union", + "name": "instance_type_grouped", "schema": "${SOURCE_SCHEMA}", "alias": "staging" } diff --git a/configuration/etl/etl_action_defs.d/cloud_openstack/staging_event.json b/configuration/etl/etl_action_defs.d/cloud_openstack/staging_event.json index 566c58bf14..e6205a8898 100644 --- a/configuration/etl/etl_action_defs.d/cloud_openstack/staging_event.json +++ b/configuration/etl/etl_action_defs.d/cloud_openstack/staging_event.json @@ -79,7 +79,7 @@ "name": "instance_type", "schema": "${SOURCE_SCHEMA}", "alias": "itype", - "on": "itype.instance_type = raw.instance_type AND itype.resource_id = raw.resource_id AND itype.num_cores = raw.num_cores AND itype.memory_mb = raw.memory_mb AND itype.disk_gb = raw.disk_gb", + "on": "itype.instance_type = raw.instance_type AND itype.resource_id = raw.resource_id AND itype.num_cores = raw.num_cores AND itype.memory_mb = raw.memory_mb AND itype.disk_gb = raw.disk_gb AND (UNIX_TIMESTAMP(CONVERT_TZ(raw.event_time_utc,'+00:00', @@session.time_zone)) between itype.start_time and itype.end_time)", "type": "LEFT OUTER" }, { @@ -107,17 +107,6 @@ "where": [ "NOT (state != 'active' AND event_type = 'compute.instance.exists')" - ], - - "groupby": [ - "raw.resource_id", - "i.instance_id", - "raw.event_time_utc", - "etype.event_type_id", - "rtype.record_type_id", - "acct.account_id", - "sa.person_id", - "h.host_id" ] } } diff --git a/configuration/etl/etl_action_defs.d/cloud_openstack/staging_raw_instance_type.json b/configuration/etl/etl_action_defs.d/cloud_openstack/staging_raw_instance_type.json index 3d38006f54..7cc5729ee9 100644 --- a/configuration/etl/etl_action_defs.d/cloud_openstack/staging_raw_instance_type.json +++ b/configuration/etl/etl_action_defs.d/cloud_openstack/staging_raw_instance_type.json @@ -14,7 +14,7 @@ "num_cores": "raw.num_cores", "memory_mb": "raw.memory_mb", "disk_gb": "raw.disk_gb", - "start_time": "UNIX_TIMESTAMP(CONVERT_TZ(min(raw.start_time),'+00:00', @@session.time_zone))" + "start_time": "UNIX_TIMESTAMP(CONVERT_TZ(raw.start_time, '+00:00', @@session.time_zone))" }, "joins": [ { @@ -23,9 +23,6 @@ "alias": "raw" } ], - "groupby": [ - "raw.resource_id", "raw.instance_type", "raw.num_cores", "raw.memory_mb", "raw.disk_gb" - ], "where": [ "display != 'Unknown' AND display != ''" ] diff --git a/configuration/etl/etl_tables.d/cloud_common/instance_type_change_flag.json b/configuration/etl/etl_tables.d/cloud_common/instance_type_change_flag.json new file mode 100644 index 0000000000..9383a3f722 --- /dev/null +++ b/configuration/etl/etl_tables.d/cloud_common/instance_type_change_flag.json @@ -0,0 +1,83 @@ +{ + "#": "Instance type observations with change detection flag", + + "table_definition": { + "name": "instance_type_change_flag", + "engine": "InnoDB", + "comment": "Instance type observations with change detection flag", + "columns": [ + { + "name": "resource_id", + "type": "int(11)", + "nullable": false, + "comment": "Resource to which this type belongs" + }, + { + "name": "instance_type_id", + "type": "int(11)", + "nullable": true, + "default": null + }, + { + "name": "instance_type", + "type": "varchar(64)", + "nullable": false, + "comment": "Short version or abbrev" + }, + { + "name": "display", + "type": "varchar(256)", + "nullable": false, + "comment": "What to show the user" + }, + { + "name": "description", + "type": "varchar(1024)", + "nullable": true, + "default": null + }, + { + "name": "num_cores", + "type": "int(11)", + "nullable": false, + "default": 0 + }, + { + "name": "memory_mb", + "type": "int(11)", + "nullable": false, + "default": 0 + }, + { + "name": "disk_gb", + "type": "int(11)", + "nullable": false, + "default": 0, + "comment": "Disk size configured in image" + }, + { + "name": "start_time", + "type": "decimal(16,6)", + "nullable": false + }, + { + "name": "is_change", + "type": "tinyint(1)", + "nullable": false, + "default": 0, + "comment": "1 if this row represents a configuration change from previous observation" + } + ], + "indexes": [ + { + "name": "PRIMARY", + "columns": [ + "resource_id", + "instance_type", + "start_time" + ], + "is_unique": true + } + ] + } +} diff --git a/configuration/etl/etl_tables.d/cloud_common/instance_type_config_group.json b/configuration/etl/etl_tables.d/cloud_common/instance_type_config_group.json new file mode 100644 index 0000000000..9648aec1c3 --- /dev/null +++ b/configuration/etl/etl_tables.d/cloud_common/instance_type_config_group.json @@ -0,0 +1,91 @@ +{ + "#": "Instance type observations with config group assignment", + + "table_definition": { + "name": "instance_type_config_group", + "engine": "InnoDB", + "comment": "Instance type observations with config group assignment", + "columns": [ + { + "name": "resource_id", + "type": "int(11)", + "nullable": false, + "comment": "Resource to which this type belongs" + }, + { + "name": "instance_type_id", + "type": "int(11)", + "nullable": true, + "default": null + }, + { + "name": "instance_type", + "type": "varchar(64)", + "nullable": false, + "comment": "Short version or abbrev" + }, + { + "name": "display", + "type": "varchar(256)", + "nullable": false, + "comment": "What to show the user" + }, + { + "name": "description", + "type": "varchar(1024)", + "nullable": true, + "default": null + }, + { + "name": "num_cores", + "type": "int(11)", + "nullable": false, + "default": 0 + }, + { + "name": "memory_mb", + "type": "int(11)", + "nullable": false, + "default": 0 + }, + { + "name": "disk_gb", + "type": "int(11)", + "nullable": false, + "default": 0, + "comment": "Disk size configured in image" + }, + { + "name": "start_time", + "type": "decimal(16,6)", + "nullable": false + }, + { + "name": "config_group", + "type": "int(11)", + "nullable": false, + "default": 0, + "comment": "Group number that increments on each config change" + } + ], + "indexes": [ + { + "name": "PRIMARY", + "columns": [ + "resource_id", + "instance_type", + "start_time" + ], + "is_unique": true + }, + { + "name": "idx_grouping", + "columns": [ + "resource_id", + "instance_type", + "config_group" + ] + } + ] + } +} diff --git a/configuration/etl/etl_tables.d/cloud_common/instance_type_grouped.json b/configuration/etl/etl_tables.d/cloud_common/instance_type_grouped.json new file mode 100644 index 0000000000..4ee36a997f --- /dev/null +++ b/configuration/etl/etl_tables.d/cloud_common/instance_type_grouped.json @@ -0,0 +1,76 @@ +{ + "#": "Merged instance type configurations per config period", + + "table_definition": { + "name": "instance_type_grouped", + "engine": "InnoDB", + "comment": "Merged instance type configurations per config period", + "columns": [ + { + "name": "resource_id", + "type": "int(11)", + "nullable": false, + "comment": "Resource to which this type belongs" + }, + { + "name": "instance_type_id", + "type": "int(11)", + "nullable": true, + "default": null + }, + { + "name": "instance_type", + "type": "varchar(64)", + "nullable": false, + "comment": "Short version or abbrev" + }, + { + "name": "display", + "type": "varchar(256)", + "nullable": false, + "comment": "What to show the user" + }, + { + "name": "description", + "type": "varchar(1024)", + "nullable": true, + "default": null + }, + { + "name": "num_cores", + "type": "int(11)", + "nullable": false, + "default": 0 + }, + { + "name": "memory_mb", + "type": "int(11)", + "nullable": false, + "default": 0 + }, + { + "name": "disk_gb", + "type": "int(11)", + "nullable": false, + "default": 0, + "comment": "Disk size configured in image" + }, + { + "name": "start_time", + "type": "decimal(16,6)", + "nullable": false + } + ], + "indexes": [ + { + "name": "PRIMARY", + "columns": [ + "resource_id", + "instance_type", + "start_time" + ], + "is_unique": true + } + ] + } +} diff --git a/configuration/etl/etl_tables.d/cloud_common/instance_type_staging.json b/configuration/etl/etl_tables.d/cloud_common/instance_type_staging.json index 1c0d88bc00..f6092eac8c 100644 --- a/configuration/etl/etl_tables.d/cloud_common/instance_type_staging.json +++ b/configuration/etl/etl_tables.d/cloud_common/instance_type_staging.json @@ -15,7 +15,8 @@ { "name": "instance_type_id", "type": "int(11)", - "nullable": false + "nullable": true, + "default": null }, { "name": "instance_type", diff --git a/configuration/etl/etl_tables.d/cloud_common/instance_type_union.json b/configuration/etl/etl_tables.d/cloud_common/instance_type_union.json index 63eb769d6a..a6ddee5252 100644 --- a/configuration/etl/etl_tables.d/cloud_common/instance_type_union.json +++ b/configuration/etl/etl_tables.d/cloud_common/instance_type_union.json @@ -18,7 +18,7 @@ "type": "int(11)", "default": null, "nullable": true, - "comment": "Resource to which this type belongs" + "comment": "ID from existing modw_cloud.instance_type table, NULL for new raw data" }, { "name": "instance_type", @@ -72,13 +72,19 @@ "name": "PRIMARY", "columns": [ "resource_id", - "instance_type_id", "instance_type", "num_cores", "memory_mb", - "disk_gb" + "disk_gb", + "start_time" ], "is_unique": true + }, + { + "name": "idx_instance_type_id", + "columns": [ + "instance_type_id" + ] } ] } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Day-reference.csv index d46fefda96..ed19739863 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Day-reference.csv @@ -6,6 +6,6 @@ start,end 2016-12-22,2017-01-01 --------- "GPU Count","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -0,11.74453254,0.45334655825879255 +0,11.74453254,0.4533465582587928 2,1520.73833333, --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Month-reference.csv index 09525e7d53..efad6727e2 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Month-reference.csv @@ -6,6 +6,6 @@ start,end 2016-12-22,2017-01-01 --------- "GPU Count","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -0,11.74453254,0.7927749973468059 +0,11.74453254,0.7927749973468063 2,1520.73833333,899.5902978802504 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Quarter-reference.csv index 09525e7d53..efad6727e2 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -6,6 +6,6 @@ start,end 2016-12-22,2017-01-01 --------- "GPU Count","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -0,11.74453254,0.7927749973468059 +0,11.74453254,0.7927749973468063 2,1520.73833333,899.5902978802504 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Year-reference.csv index 09525e7d53..efad6727e2 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/gpucount/avg_cpu_hours/aggregate-Year-reference.csv @@ -6,6 +6,6 @@ start,end 2016-12-22,2017-01-01 --------- "GPU Count","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -0,11.74453254,0.7927749973468059 +0,11.74453254,0.7927749973468063 2,1520.73833333,899.5902978802504 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Day-reference.csv new file mode 100644 index 0000000000..cca5318d13 --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Day-reference.csv @@ -0,0 +1,12 @@ +title +"CPU Hours: Per Job: by User Institution" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"User Institution","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +"Unknown - Unknown Organization",786.94978663, +"screw - Screwdriver",28.55610080,1.6482026044407678 +"wrench - Wrench",5.92502157,0.31777203052917663 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Month-reference.csv new file mode 100644 index 0000000000..94ddfb7add --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Month-reference.csv @@ -0,0 +1,12 @@ +title +"CPU Hours: Per Job: by User Institution" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"User Institution","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +"Unknown - Unknown Organization",786.94978663,49.52677870651827 +"screw - Screwdriver",28.55610080,2.8980680381420907 +"wrench - Wrench",5.92502157,0.5646676923859103 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Quarter-reference.csv new file mode 100644 index 0000000000..94ddfb7add --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -0,0 +1,12 @@ +title +"CPU Hours: Per Job: by User Institution" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"User Institution","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +"Unknown - Unknown Organization",786.94978663,49.52677870651827 +"screw - Screwdriver",28.55610080,2.8980680381420907 +"wrench - Wrench",5.92502157,0.5646676923859103 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Year-reference.csv new file mode 100644 index 0000000000..94ddfb7add --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/institution/avg_cpu_hours/aggregate-Year-reference.csv @@ -0,0 +1,12 @@ +title +"CPU Hours: Per Job: by User Institution" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"User Institution","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +"Unknown - Unknown Organization",786.94978663,49.52677870651827 +"screw - Screwdriver",28.55610080,2.8980680381420907 +"wrench - Wrench",5.92502157,0.5646676923859103 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Day-reference.csv index f55c7a006d..1b78156c88 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Day-reference.csv @@ -13,5 +13,5 @@ start,end "1 - 5hr",15.35199200,0.14055187769510497 "5 - 10hr",15.64643256,1.3567541768245959 "10 - 18hr",146.57418184,16.68786432652335 -18+hr,219.97624222,11.381246695013603 +18+hr,219.97624222,11.381246695013605 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Month-reference.csv index dc9d1b8bb1..09909929a8 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Month-reference.csv @@ -13,5 +13,5 @@ start,end "1 - 5hr",15.35199200,0.14828397955629916 "5 - 10hr",15.64643256,1.6155090784877295 "10 - 18hr",146.57418184,19.833940313987615 -18+hr,219.97624222,21.001641212085453 +18+hr,219.97624222,21.001641212085456 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Quarter-reference.csv index dc9d1b8bb1..09909929a8 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -13,5 +13,5 @@ start,end "1 - 5hr",15.35199200,0.14828397955629916 "5 - 10hr",15.64643256,1.6155090784877295 "10 - 18hr",146.57418184,19.833940313987615 -18+hr,219.97624222,21.001641212085453 +18+hr,219.97624222,21.001641212085456 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Year-reference.csv index dc9d1b8bb1..09909929a8 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/jobwalltime/avg_cpu_hours/aggregate-Year-reference.csv @@ -13,5 +13,5 @@ start,end "1 - 5hr",15.35199200,0.14828397955629916 "5 - 10hr",15.64643256,1.6155090784877295 "10 - 18hr",146.57418184,19.833940313987615 -18+hr,219.97624222,21.001641212085453 +18+hr,219.97624222,21.001641212085456 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Day-reference.csv index b14424beec..9f1c422ead 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Day-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- Summary,"CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Screwdriver,11.78685285,0.45350239591639724 +Screwdriver,11.78685285,0.45350239591639746 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Month-reference.csv index dcda9ec49c..8df3a840c9 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Month-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- Summary,"CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Screwdriver,11.78685285,0.7937184281551048 +Screwdriver,11.78685285,0.7937184281551052 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Quarter-reference.csv index dcda9ec49c..8df3a840c9 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- Summary,"CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Screwdriver,11.78685285,0.7937184281551048 +Screwdriver,11.78685285,0.7937184281551052 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Year-reference.csv index dcda9ec49c..8df3a840c9 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/none/avg_cpu_hours/aggregate-Year-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- Summary,"CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Screwdriver,11.78685285,0.7937184281551048 +Screwdriver,11.78685285,0.7937184281551052 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Month-reference.csv index 228915657c..23602e3e93 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Month-reference.csv @@ -6,7 +6,7 @@ start,end 2016-12-22,2017-01-01 --------- "Decanal Unit","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Engineering,378.41627884,57.328177197170056 +Engineering,378.41627884,57.32817719717006 Humanities/Arts,188.13274411,16.44278594480015 "Biological Sciences",61.98054777,20.50229784028209 "Mathematical and Physical Sciences",39.82065205,5.553821375301377 diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Quarter-reference.csv index 228915657c..23602e3e93 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -6,7 +6,7 @@ start,end 2016-12-22,2017-01-01 --------- "Decanal Unit","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Engineering,378.41627884,57.328177197170056 +Engineering,378.41627884,57.32817719717006 Humanities/Arts,188.13274411,16.44278594480015 "Biological Sciences",61.98054777,20.50229784028209 "Mathematical and Physical Sciences",39.82065205,5.553821375301377 diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Year-reference.csv index 228915657c..23602e3e93 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/nsfdirectorate/avg_cpu_hours/aggregate-Year-reference.csv @@ -6,7 +6,7 @@ start,end 2016-12-22,2017-01-01 --------- "Decanal Unit","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -Engineering,378.41627884,57.328177197170056 +Engineering,378.41627884,57.32817719717006 Humanities/Arts,188.13274411,16.44278594480015 "Biological Sciences",61.98054777,20.50229784028209 "Mathematical and Physical Sciences",39.82065205,5.553821375301377 diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Month-reference.csv new file mode 100644 index 0000000000..4237d4a3ce --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Month-reference.csv @@ -0,0 +1,11 @@ +title +"CPU Hours: Per Job: by Service Provider" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"Service Provider","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +screw,12.80355102,0.935350319867614 +wrench,6.37875732,0.6324232167493075 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Quarter-reference.csv new file mode 100644 index 0000000000..4237d4a3ce --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -0,0 +1,11 @@ +title +"CPU Hours: Per Job: by Service Provider" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"Service Provider","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +screw,12.80355102,0.935350319867614 +wrench,6.37875732,0.6324232167493075 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Year-reference.csv new file mode 100644 index 0000000000..4237d4a3ce --- /dev/null +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/provider/avg_cpu_hours/aggregate-Year-reference.csv @@ -0,0 +1,11 @@ +title +"CPU Hours: Per Job: by Service Provider" +parameters + +start,end +2016-12-22,2017-01-01 +--------- +"Service Provider","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" +screw,12.80355102,0.935350319867614 +wrench,6.37875732,0.6324232167493075 +--------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Month-reference.csv index b104ac07c1..83696bb97c 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Month-reference.csv @@ -19,7 +19,7 @@ panettone,65.51148148,61.73618026540957 bannock,56.47858025,13.419997925806559 pumpernickel,41.59687500,23.13876312144338 pita,39.76185185,6.954023834196349 -white,30.72319343,2.6204061416160993 +white,30.72319343,2.6204061416161 croutons,22.13566106,4.758147308851854 nann,13.85848617,0.21603874775956594 black,4.96075667,0.7230367811264875 diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Quarter-reference.csv index b104ac07c1..83696bb97c 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -19,7 +19,7 @@ panettone,65.51148148,61.73618026540957 bannock,56.47858025,13.419997925806559 pumpernickel,41.59687500,23.13876312144338 pita,39.76185185,6.954023834196349 -white,30.72319343,2.6204061416160993 +white,30.72319343,2.6204061416161 croutons,22.13566106,4.758147308851854 nann,13.85848617,0.21603874775956594 black,4.96075667,0.7230367811264875 diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Year-reference.csv index b104ac07c1..83696bb97c 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/queue/avg_cpu_hours/aggregate-Year-reference.csv @@ -19,7 +19,7 @@ panettone,65.51148148,61.73618026540957 bannock,56.47858025,13.419997925806559 pumpernickel,41.59687500,23.13876312144338 pita,39.76185185,6.954023834196349 -white,30.72319343,2.6204061416160993 +white,30.72319343,2.6204061416161 croutons,22.13566106,4.758147308851854 nann,13.85848617,0.21603874775956594 black,4.96075667,0.7230367811264875 diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Day-reference.csv index 2961eff9f8..13a93a74cd 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Day-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- "Resource Type","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -"High-performance computing",11.78685285,0.45350239591639724 +"High-performance computing",11.78685285,0.45350239591639746 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Month-reference.csv index f74d75fe59..d365be345e 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Month-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- "Resource Type","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -"High-performance computing",11.78685285,0.7937184281551048 +"High-performance computing",11.78685285,0.7937184281551052 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Quarter-reference.csv index f74d75fe59..d365be345e 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Quarter-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- "Resource Type","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -"High-performance computing",11.78685285,0.7937184281551048 +"High-performance computing",11.78685285,0.7937184281551052 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Year-reference.csv index f74d75fe59..d365be345e 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Jobs/resource_type/avg_cpu_hours/aggregate-Year-reference.csv @@ -6,5 +6,5 @@ start,end 2016-12-22,2017-01-01 --------- "Resource Type","CPU Hours: Per Job","Std Dev: CPU Hours: Per Job" -"High-performance computing",11.78685285,0.7937184281551048 +"High-performance computing",11.78685285,0.7937184281551052 --------- diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_file_count/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_hard_threshold/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_usage/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_logical_utilization/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_physical_usage/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/avg_soft_threshold/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/aggregate-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Day-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Day-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Day-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Day-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Month-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Month-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Month-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Month-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Quarter-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Quarter-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Quarter-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Quarter-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Year-reference.csv b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Year-reference.csv index 9ed245d5c0..60537a19f3 100644 --- a/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Year-reference.csv +++ b/tests/artifacts/xdmod/regression/current/expected/reference/Storage/username/user_count/timeseries-Year-reference.csv @@ -3,12 +3,8 @@ "count": 0, "total": 0, "totalCount": 0, - "results": [ - - ], - "data": [ - - ], + "results": [], + "data": [], "message": "Your user account does not have permission to view the requested data. If you\nbelieve that you should be able to see this information, then please select\n\"Submit Support Request\" in the \"Contact Us\" menu to request access.", "code": 103 } diff --git a/tests/artifacts/xdmod/rest/output/get_statistics-cd.json b/tests/artifacts/xdmod/rest/output/get_statistics-cd.json index f4929fc3d0..3ce9f24827 100644 --- a/tests/artifacts/xdmod/rest/output/get_statistics-cd.json +++ b/tests/artifacts/xdmod/rest/output/get_statistics-cd.json @@ -194,7 +194,7 @@ "11.78685285" ], "sem_avg_cpu_hours": [ - "0.45350239591639724" + "0.45350239591639746" ], "avg_node_hours": [ "2.19179880" @@ -233,7 +233,7 @@ "3.1031" ], "normalized_avg_processors": [ - "0.043672753" + "0.072787921" ], "avg_job_size_weighted_by_cpu_hours": [ "65.6161" diff --git a/tests/artifacts/xdmod/rest/output/get_statistics-cs.json b/tests/artifacts/xdmod/rest/output/get_statistics-cs.json index f4929fc3d0..3ce9f24827 100644 --- a/tests/artifacts/xdmod/rest/output/get_statistics-cs.json +++ b/tests/artifacts/xdmod/rest/output/get_statistics-cs.json @@ -194,7 +194,7 @@ "11.78685285" ], "sem_avg_cpu_hours": [ - "0.45350239591639724" + "0.45350239591639746" ], "avg_node_hours": [ "2.19179880" @@ -233,7 +233,7 @@ "3.1031" ], "normalized_avg_processors": [ - "0.043672753" + "0.072787921" ], "avg_job_size_weighted_by_cpu_hours": [ "65.6161" diff --git a/tests/artifacts/xdmod/rest/output/get_statistics-pi.json b/tests/artifacts/xdmod/rest/output/get_statistics-pi.json index f4929fc3d0..3ce9f24827 100644 --- a/tests/artifacts/xdmod/rest/output/get_statistics-pi.json +++ b/tests/artifacts/xdmod/rest/output/get_statistics-pi.json @@ -194,7 +194,7 @@ "11.78685285" ], "sem_avg_cpu_hours": [ - "0.45350239591639724" + "0.45350239591639746" ], "avg_node_hours": [ "2.19179880" @@ -233,7 +233,7 @@ "3.1031" ], "normalized_avg_processors": [ - "0.043672753" + "0.072787921" ], "avg_job_size_weighted_by_cpu_hours": [ "65.6161" diff --git a/tests/artifacts/xdmod/rest/output/get_statistics-pub.json b/tests/artifacts/xdmod/rest/output/get_statistics-pub.json index f4929fc3d0..3ce9f24827 100644 --- a/tests/artifacts/xdmod/rest/output/get_statistics-pub.json +++ b/tests/artifacts/xdmod/rest/output/get_statistics-pub.json @@ -194,7 +194,7 @@ "11.78685285" ], "sem_avg_cpu_hours": [ - "0.45350239591639724" + "0.45350239591639746" ], "avg_node_hours": [ "2.19179880" @@ -233,7 +233,7 @@ "3.1031" ], "normalized_avg_processors": [ - "0.043672753" + "0.072787921" ], "avg_job_size_weighted_by_cpu_hours": [ "65.6161" diff --git a/tests/artifacts/xdmod/rest/output/get_statistics-usr.json b/tests/artifacts/xdmod/rest/output/get_statistics-usr.json index f4929fc3d0..3ce9f24827 100644 --- a/tests/artifacts/xdmod/rest/output/get_statistics-usr.json +++ b/tests/artifacts/xdmod/rest/output/get_statistics-usr.json @@ -194,7 +194,7 @@ "11.78685285" ], "sem_avg_cpu_hours": [ - "0.45350239591639724" + "0.45350239591639746" ], "avg_node_hours": [ "2.19179880" @@ -233,7 +233,7 @@ "3.1031" ], "normalized_avg_processors": [ - "0.043672753" + "0.072787921" ], "avg_job_size_weighted_by_cpu_hours": [ "65.6161" diff --git a/tests/component/lib/ETL/CloudInstanceTypeStateIngestorTest.php b/tests/component/lib/ETL/CloudInstanceTypeStateIngestorTest.php deleted file mode 100644 index b61210f58a..0000000000 --- a/tests/component/lib/ETL/CloudInstanceTypeStateIngestorTest.php +++ /dev/null @@ -1,294 +0,0 @@ - - */ - -namespace ComponentTests\ETL; - -use ETL\Ingestor\CloudInstanceTypeStateIngestor; -use ETL\Ingestor\IngestorOptions; -use ETL\Configuration\EtlConfiguration; - -/** - * Test Cloud Resource Specifications State FSM - */ - -class CloudInstanceTypeStateIngestorTest extends \PHPUnit\Framework\TestCase -{ - private $instance_type_state_first_record = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063518 - ); - - private $instance_type_state_existing_record = array( - "resource_id" => 8, - "instance_type_id" => 2, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063601 - ); - - private $instance_type_state_change_num_cores = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 2, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063549 - ); - - private $instance_type_state_change_memory = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 8192, - "disk_gb" => 20, - "start_time" => 1524063549 - ); - - private $instance_type_state_change_disk_gb = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 40, - "start_time" => 1524063549 - ); - - private $instance_type_state_change_resource_id = array( - "resource_id" => 9, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063549 - ); - - private $instance_type_state_change_instance_type = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c2.m4', - "display" => 'c2.m4', - "description" => '', - "num_cores" => 2, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063549 - ); - - private $instance_type_state_original = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524243485 - ); - - private $instance_type_state_original2 = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 2, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524243500 - ); - - private $instance_type_state_zero = array( - "resource_id" => 0, - "instance_type_id" => 0, - "instance_type" => 0, - "display" => 0, - "description" => 0, - "num_cores" => 0, - "memory_mb" => 0, - "disk_gb" => 0, - "start_time" => 0 - ); - - private $instance_state_no_change_result = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063518, - "end_time" => 1524063548 - ); - - private $instance_state_change_cores_result = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 2, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063549, - "end_time" => 1524243484 - ); - - private $instance_state_change_mem_result = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 8192, - "disk_gb" => 20, - "start_time" => 1524063549, - "end_time" => 1524243484 - ); - - private $instance_state_change_disk_gb_result = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 40, - "start_time" => 1524063549, - "end_time" => 1524243484 - ); - - private $instance_state_change_to_previous_result = array( - "resource_id" => 8, - "instance_type_id" => 0, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524243485, - "end_time" => 1524243499 - ); - - private $instance_state_update_existing = array( - "resource_id" => 8, - "instance_type_id" => 2, - "instance_type" => 'c1.m4', - "display" => 'c1.m4', - "description" => '', - "num_cores" => 1, - "memory_mb" => 4096, - "disk_gb" => 20, - "start_time" => 1524063518, - "end_time" => 1524063548 - ); - - private $options_array = array( - "name" => "jobs-cloud-extract-openstack", - "class" => "CloudInstanceTypeStateIngestorTest", - "destination" => "modw_test", - "definition_file" => "" - ); - - private $fsm; - - public function __construct(?string $name = null, array $data = [], $dataName = '') - { - $configFile = realpath(BASE_DIR . '/tests/artifacts/xdmod/etlv2/configuration/input/xdmod_etl_config_8.0.0.json'); - - // This needs to be explicitly defined here so PHP 5.4 doesn't complain - $this->options_array["definition_file"] = BASE_DIR . "/tests/artifacts/xdmod/etlv2/configuration/input/etl_action_defs_8.0.0.d/cloud_state.json"; - - $options = new IngestorOptions($this->options_array); - $conf = EtlConfiguration::factory($configFile); - - $this->fsm = new CloudInstanceTypeStateIngestor($options, $conf); - parent::__construct($name, $data, $dataName); - } - - // Test for when the number of cores for an instance changes - public function testChangeNumCores() - { - $this->fsm->transformHelper($this->instance_type_state_first_record); - $instance_state = $this->fsm->transformHelper($this->instance_type_state_change_num_cores); - $instance_state2 = $this->fsm->transformHelper($this->instance_type_state_original); - - $this->assertEquals($this->instance_state_no_change_result, $instance_state[0]); - $this->assertEquals($this->instance_state_change_cores_result, $instance_state2[0]); - } - - // Test for when the amount of memory for an instance changes - public function testChangeMem() - { - $this->fsm->transformHelper($this->instance_type_state_first_record); - $instance_state = $this->fsm->transformHelper($this->instance_type_state_change_memory); - $instance_state2 = $this->fsm->transformHelper($this->instance_type_state_original); - - $this->assertEquals($this->instance_state_no_change_result, $instance_state[0]); - $this->assertEquals($this->instance_state_change_mem_result, $instance_state2[0]); - } - - // Test for when the disk size for an instance changes - public function testChangeDisk() - { - $this->fsm->transformHelper($this->instance_type_state_first_record); - $instance_state = $this->fsm->transformHelper($this->instance_type_state_change_disk_gb); - $instance_state2 = $this->fsm->transformHelper($this->instance_type_state_original); - - $this->assertEquals($this->instance_state_no_change_result, $instance_state[0]); - $this->assertEquals($this->instance_state_change_disk_gb_result, $instance_state2[0]); - } - - // Test when a instance configuration changes back to a previous configuration - public function testChangeInstanceToPrevious() - { - $this->fsm->transformHelper($this->instance_type_state_first_record); - $instance_state = $this->fsm->transformHelper($this->instance_type_state_change_num_cores); - $instance_state2 = $this->fsm->transformHelper($this->instance_type_state_original); - $instance_state3 = $this->fsm->transformHelper($this->instance_type_state_original2); - - $this->assertEquals($this->instance_state_no_change_result, $instance_state[0]); - $this->assertEquals($this->instance_state_change_cores_result, $instance_state2[0]); - $this->assertEquals($this->instance_state_change_to_previous_result, $instance_state3[0]); - } - - // Test updating an existing record with a new start time. - public function testUpdateExisting() - { - $this->fsm->transformHelper($this->instance_type_state_first_record); - $this->fsm->transformHelper($this->instance_type_state_existing_record); - $instance_state2 = $this->fsm->transformHelper($this->instance_type_state_change_num_cores); - - $this->assertEquals($this->instance_state_update_existing, $instance_state2[0]); - } -} diff --git a/tests/component/lib/Query/AggregateQueryTest.php b/tests/component/lib/Query/AggregateQueryTest.php index cea04a5602..c29da6e2c3 100644 --- a/tests/component/lib/Query/AggregateQueryTest.php +++ b/tests/component/lib/Query/AggregateQueryTest.php @@ -77,7 +77,7 @@ public function testAggregateQueryNoStatistic() $generated = $query->getQueryString(); $expected =<<getQueryString(); $expected =<<getQueryString(); $expected =<<getQueryString(); $expected =<<getQueryString(10, 0); // Also test limit=10 and offset=0 $expected =<<getQueryString(); $expected =<<addOrderByAndSetSortInfo($data_description); $generated = $query->getQueryString(); $expected =<<getQueryString(10, 0, 'person_id = 82'); $expected =<<getQueryString(10, 0); $expectedAgg =<< Date: Tue, 7 Apr 2026 11:56:20 -0400 Subject: [PATCH 03/11] Update support window for 11.0. (#2186) --- docs/support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/support.md b/docs/support.md index 27e05b4f10..2e89d9de6b 100644 --- a/docs/support.md +++ b/docs/support.md @@ -14,7 +14,7 @@ for 11.5. | Version | Release Date | End of Support | |---------|--------------------|-------------------| -| 11.0 | October 23, 2024 | April 30, 2026 | +| 11.0 | October 23, 2024 | October 31, 2026 | Supported Operating Systems --------------------------- From e31635a37cc8f3358c437c51c46909450b374b30 Mon Sep 17 00:00:00 2001 From: Joseph White Date: Mon, 13 Apr 2026 14:27:28 -0400 Subject: [PATCH 04/11] Remove unused code in sab controller. This is not used anymore. --- html/controllers/sab_user.php | 6 +-- .../sab_user/assign_assumed_person.php | 38 ------------------- html/controllers/sab_user/get_mapping.php | 36 ------------------ .../lib/Controllers/ControllerTest.php | 23 +++++++++++ 4 files changed, 24 insertions(+), 79 deletions(-) delete mode 100644 html/controllers/sab_user/assign_assumed_person.php delete mode 100644 html/controllers/sab_user/get_mapping.php diff --git a/html/controllers/sab_user.php b/html/controllers/sab_user.php index 5821a70760..8b6331b996 100644 --- a/html/controllers/sab_user.php +++ b/html/controllers/sab_user.php @@ -4,19 +4,15 @@ * * operation: params ----- * enum_tg_users: start, limit, [query], pi_only - * assign_assumed_person: person_id - * get_mapping: use_default */ require_once __DIR__ . '/../../configuration/linker.php'; \xd_security\start_session(); -$controller = new XDController(array(STATUS_LOGGED_IN)); +$controller = new XDController(array(STATUS_LOGGED_IN, STATUS_MANAGER_ROLE)); $controller->registerOperation('enum_tg_users'); -$controller->registerOperation('assign_assumed_person'); -$controller->registerOperation('get_mapping'); $session_variable = (isset($_POST['dashboard_mode'])) diff --git a/html/controllers/sab_user/assign_assumed_person.php b/html/controllers/sab_user/assign_assumed_person.php deleted file mode 100644 index 3a63c7a88d..0000000000 --- a/html/controllers/sab_user/assign_assumed_person.php +++ /dev/null @@ -1,38 +0,0 @@ -assign_assumed_person - -$params = array('person_id' => RESTRICTION_ASSIGNMENT); - -$isValid = xd_security\secureCheck($params, 'POST'); - -if (!$isValid) { - $returnData = array( - 'success' => false, - 'status' => 'invalid_id_specified', - 'message' => 'invalid_id_specified', - ); - xd_controller\returnJSON($returnData); -}; - -$xdw = new XDWarehouse(); - -if ($xdw->resolveName($_POST['person_id']) == NO_MAPPING) { - $returnData = array( - 'success' => false, - 'status' => 'no_person_mapping', - 'message' => 'no_person_mapping', - ); - xd_controller\returnJSON($returnData); -} - -$_SESSION['assumed_person_id'] = $_POST['person_id']; - -$returnData = array( - 'success' => true, - 'status' => 'success', - 'message' => 'success', -); - -xd_controller\returnJSON($returnData); - diff --git a/html/controllers/sab_user/get_mapping.php b/html/controllers/sab_user/get_mapping.php deleted file mode 100644 index 27b174f7fc..0000000000 --- a/html/controllers/sab_user/get_mapping.php +++ /dev/null @@ -1,36 +0,0 @@ -get_mapping - -$params = array( - 'use_default' => RESTRICTION_YES_NO -); - -$isValid = xd_security\secureCheck($params, 'POST'); - -if (!$isValid) { - $returnData = array( - 'success' => false, - 'status' => 'invalid_params_specified', - 'message' => 'invalid_params_specified', - ); - xd_controller\returnJSON($returnData); -}; - -$logged_in_user = \xd_security\getLoggedInUser(); - -$mapped_person_id = $logged_in_user->getPersonID($_POST['use_default'] == 'y'); - -$xdw = new XDWarehouse(); -$mapped_person_name = $xdw->resolveName($mapped_person_id); - -$returnData = array( - 'success' => true, - 'status' => 'success', - 'message' => 'success', - 'mapped_person_id' => $mapped_person_id, - 'mapped_person_name' => $mapped_person_name, -); - -xd_controller\returnJSON($returnData); - diff --git a/tests/integration/lib/Controllers/ControllerTest.php b/tests/integration/lib/Controllers/ControllerTest.php index 86dffd076f..36830a043e 100644 --- a/tests/integration/lib/Controllers/ControllerTest.php +++ b/tests/integration/lib/Controllers/ControllerTest.php @@ -240,6 +240,29 @@ public function testEnumUserTypesAndRoles() $this->helper->logoutDashboard(); } + public function testSabRejectsNonMgr() + { + $this->helper->authenticate('usr'); + + $response = $this->helper->post('controllers/sab_user.php', null, ['operation' => 'enum_tg_users']); + + $this->assertEquals($response[1]['content_type'], 'application/json'); + $this->assertEquals(200, $response[1]['http_code']); + + $this->assertFalse($response[0]['success']); + $this->assertEquals('not_a_manager', $response[0]['message']); + + $this->helper->logout(); + } + + public function testSabRejectsPublic() + { + $response = $this->helper->post('controllers/sab_user.php', null, ['operation' => 'enum_tg_users']); + + $this->assertEquals($response[1]['content_type'], 'application/json'); + $this->assertEquals(401, $response[1]['http_code']); + } + public function testSabUserEnumTgUsers() { From e2a4138112c6f647e929f8aa7af5727e8dfea04e Mon Sep 17 00:00:00 2001 From: ryanrath Date: Wed, 15 Apr 2026 14:00:18 -0400 Subject: [PATCH 05/11] Adding helper functions (#2195) --- tests/integration/lib/BaseTest.php | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/integration/lib/BaseTest.php b/tests/integration/lib/BaseTest.php index 2258ecbe98..7aebd9d823 100644 --- a/tests/integration/lib/BaseTest.php +++ b/tests/integration/lib/BaseTest.php @@ -891,4 +891,45 @@ private static function truncateStr($str, $numChars) : $str ); } + + + /** + * Retrieve the User information for the user that's authenticated with the provided $helper. + * + * @param XdmodTestHelper $helper the helper to use when making requests. + * @return mixed|void + */ + protected function getUserProfile(XdmodTestHelper $helper) + { + // Retrieve the user profile information and make sure that the last_name was updated. + $response = $helper->get('rest/v1/users/current'); + + // make sure that the request was successful + $this->assertEquals(200, $response[1]['http_code']); + + $responseData = $response[0]; + + // Make sure that the response is as expected. + $this->assertArrayHasKey('success', $responseData); + $this->assertTrue($responseData['success']); + $this->assertArrayHasKey('results', $responseData); + + return $responseData['results']; + } + + /** + * Retrieve a particular User Profile property for the user who is authentiated with the provided $helper. + * + * @param XdmodTestHelper $helper the helper to use in when making requests. + * @param string $property the property to retrieve + * @return mixed + */ + protected function getPropertyFromUserProfile(XdmodTestHelper $helper, string $property) + { + $userProfile = $this->getUserProfile($helper); + + $this->assertArrayHasKey($property, $userProfile); + + return $userProfile[$property]; + } } From 6afbd3389ace214fa84c7190278334bb9be9c21d Mon Sep 17 00:00:00 2001 From: ryanrath Date: Wed, 15 Apr 2026 16:37:27 -0400 Subject: [PATCH 06/11] Update to escaping function (#2194) * Update to escaping function used This commit ensures that information is correctly escaped for user consumption. * Updates per code review by @jpwhite4 --- html/password_reset.php | 2 +- .../lib/Controllers/UserAdminTest.php | 91 +++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/html/password_reset.php b/html/password_reset.php index d87fae054c..1bbd8acd37 100644 --- a/html/password_reset.php +++ b/html/password_reset.php @@ -75,7 +75,7 @@ }//if (INVALID) - $first_name = $validationCheck['user_first_name']; + $first_name = htmlspecialchars($validationCheck['user_first_name'], ENT_QUOTES, 'UTF-8'); $mode = ( isset($_GET['mode']) && ($_GET['mode'] == 'new') ) ? 'create' : 'reset'; diff --git a/tests/integration/lib/Controllers/UserAdminTest.php b/tests/integration/lib/Controllers/UserAdminTest.php index 3ba31abf08..c3dc99aaaa 100644 --- a/tests/integration/lib/Controllers/UserAdminTest.php +++ b/tests/integration/lib/Controllers/UserAdminTest.php @@ -866,6 +866,97 @@ protected function getUserVisits(array $options) return (int)$results; } + public function testPasswordResetWorks() + { + // We need an adminHelper to trigger the password reset via the internal dashboard. + $adminHelper = new XdmodTestHelper(); + + // We need an unauthenticated helper to simulate retrieving of the password reset page. + $publicHelper = new XdmodTestHelper(); + + // First, login as center director + $this->helper->authenticate('cd'); + + // Next, snag the original first name so we can revert the changes after the test is done. + $originalFirstName = $this->getPropertyFromUserProfile($this->helper, 'first_name'); + try { + // Update cd's first_name + $newFirstName = ''; + $updateResponse = $this->helper->patch('rest/v1/users/current', null, ['first_name' => $newFirstName]); + + // Make sure that the update was successful. + $this->assertEquals(200, $updateResponse[1]['http_code'], "Unable to update cd's first_name."); + $this->assertSame( + [ + 'success' => true, + 'message' => 'User profile updated successfully' + ], + $updateResponse[0] + ); + + // Now we can trigger a password reset. + $adminHelper->authenticateDashboard('mgr'); + $passwordResetResponse = $adminHelper->post('controllers/user_admin.php', null, ["operation" => 'pass_reset', 'uid' => '3']); + $this->assertEquals(200, $passwordResetResponse[1]['http_code'], "Unable to trigger a password reset."); + + // Make sure that the default docker location for emails is present. + $emailFile = '/var/spool/mail/root'; + if (!is_file($emailFile)) { + throw new \Exception('Unable to locate email file.'); + } + // retrieve the password reset email. + $email = file_get_contents($emailFile); + $this->assertNotEmpty($email, "Unable to continue, no emails found"); + + // Find any / all password reset emails. There should be only one, but this should allow us to deal with + // tests being added in the future that generate emails. + $lines = explode(PHP_EOL, $email); + $resetUrls = array_reduce( + $lines, + function ($carry, $line) { + if (str_contains($line, 'password_reset.php')) { + $carry[] = trim($line); + } + return $carry; + }, + [] + ); + $this->assertNotEmpty($resetUrls, "Unable to continue, no emails retrieved."); + + // The url we're after is the last one ( the most recent ). + $resetUrl = array_pop($resetUrls); + + // Now request the password reset page as + $response = $publicHelper->get($resetUrl, null, true); + $this->assertEquals(200, $response[1]['http_code'], "Unable to retrieve the password reset page."); + $resetPage = $response[0]; + + // We shouldn't find the new first_name value since it should be escaped now. + $this->assertFalse(strpos($resetPage, $newFirstName), "Expected the new first_name to be escaped properly."); + } finally { + // Make sure we logout our other helpers first on the off chance that the reverting of cd's first_name is unsucessful. + $adminHelper->logout(); + $publicHelper->logout(); + + // Revert cd's first_name back to what it was prior to this test. + $updateResponse = $this->helper->patch('rest/v1/users/current', [], ['first_name' => $originalFirstName]); + + // Make sure that the update was successful. + $updateResponseCode = $updateResponse[1]['http_code']; + $this->assertEquals(200, $updateResponseCode, sprintf("Unable to revert cd's first_name. Expected HTTP Code: 200, Received: %s", $updateResponseCode)); + $this->assertSame( + [ + 'success' => true, + 'message' => 'User profile updated successfully' + ], + $updateResponse[0], + "Unable to revert cd's first_name. Response contents is not as expected." + ); + } + + $this->helper->logout(); + } + /** * Attempt to determine if an entry exists in the provided $source based on * the return value of $predicate. If $predicate returns false for all From 33165a712325602d2646f1ff9c2655750ba3375f Mon Sep 17 00:00:00 2001 From: ryanrath Date: Fri, 17 Apr 2026 11:44:35 -0400 Subject: [PATCH 07/11] Charting Export Fixes for XDMoD 11.0 (#2192) * Charting Export Fixes for XDMoD 11.0 --- libraries/charting.php | 12 +- .../lib/Export/ChartExportTest.php | 161 ++++++++++++++++++ 2 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 tests/integration/lib/Export/ChartExportTest.php diff --git a/libraries/charting.php b/libraries/charting.php index 777c3e3b80..b022e5fc01 100644 --- a/libraries/charting.php +++ b/libraries/charting.php @@ -145,17 +145,17 @@ function getSvgViaChromiumHelper($html, $width, $height){ */ function convertSvg($svgData, $format, $width, $height, $docmeta){ - $author = isset($docmeta['author']) ? addcslashes($docmeta['author'], "()\n\\") : 'XDMoD'; - $subject = isset($docmeta['subject']) ? addcslashes($docmeta['subject'], "()\n\\") : 'XDMoD chart'; - $title = isset($docmeta['title']) ? addcslashes($docmeta['title'], "()\n\\") :'XDMoD PDF chart export'; - $creator = addcslashes('XDMoD ' . OPEN_XDMOD_VERSION, "()\n\\"); + $author = isset($docmeta['author']) ? escapeshellarg($docmeta['author']) : "'XDMoD'"; + $subject = isset($docmeta['subject']) ? escapeshellarg($docmeta['subject']) : "'XDMoD chart'"; + $title = isset($docmeta['title']) ? escapeshellarg($docmeta['title']) : "'XDMoD PDF chart export'"; + $creator = escapeshellarg('XDMoD ' . OPEN_XDMOD_VERSION); switch($format){ case 'png': - $exifArgs = "-Title='$title' -Author='$author' -Description='$subject' -Source='$creator'"; + $exifArgs = "-Title=$title -Author=$author -Description=$subject -Source=$creator"; break; case 'pdf': - $exifArgs = "-Title='$title' -Author='$author' -Subject='$subject' -Creator='$creator'"; + $exifArgs = "-Title=$title -Author=$author -Subject=$subject -Creator=$creator"; break; default: return $svgData; diff --git a/tests/integration/lib/Export/ChartExportTest.php b/tests/integration/lib/Export/ChartExportTest.php new file mode 100644 index 0000000000..74755336cb --- /dev/null +++ b/tests/integration/lib/Export/ChartExportTest.php @@ -0,0 +1,161 @@ +helper = new XdmodTestHelper(); + } + + /** + * Test that proper escaping is done when exporting an svg ( which also occurs when exporting pdf's) + * @dataProvider provideChartExportEscapesCorrectly + * @return void + */ + public function testChartExportEscapesCorrectly(string $url, array $exportParams) + { + // login as the center director + $this->helper->authenticate('cd'); + + $originalLastName = $this->getPropertyFromUserProfile($this->helper, 'last_name'); + + try { + $updateResponse = $this->helper->patch('rest/v1/users/current', [], ['last_name' => "Changed' ; id > /tmp/this_shouldnt_exist; '"]); + + // Make sure that the update was successful. + $this->assertEquals(200, $updateResponse[1]['http_code']); + $this->assertSame( + [ + 'success' => true, + 'message' => 'User profile updated successfully' + ], + $updateResponse[0] + ); + + // Make sure that the last_name that was returned actually contains the right data. + $newLastName = $this->getPropertyFromUserProfile($this->helper, 'last_name'); + $this->assertNotFalse(strpos($newLastName, 'Changed'), 'The user last_name updated failed.'); + + $format = $exportParams['format']; + $exportResponse = $this->helper->get($url, $exportParams); + $this->assertEquals(200, $exportResponse[1]['http_code'], "Request to export in $format was unsuccessful."); + + // Make sure that the file that shouldnt' exist, does not in fact exist. + $this->assertFalse(is_file('/tmp/this_shouldnt_exist'), "Woops, chart export in $format did the bad thing. Best figure out why."); + + + } finally { + // Make sure to revert the update to centerdirector's last name. + $revertResponse = $this->helper->patch('rest/v1/users/current', [], ['last_name' => $originalLastName]); + if ($revertResponse[1]['http_code'] !== 200 || $revertResponse[0]['success'] === false) { + $this->fail('Unable to revert centerdirectors last name. You have been warned!'); + } + } + + // all done, logout. + $this->helper->logout(); + } + + /** + * @return array + */ + public function provideChartExportEscapesCorrectly(): array + { + $results = []; + $urls = [ + 'controllers/user_interface.php' => [ + 'public_user' => 'true', + 'realm' => 'Jobs', + 'group_by' => 'none', + 'statistic' => 'total_cpu_hours', + 'start_date' => '2026-03-01', + 'end_date' => '2026-03-31', + 'timeframe_label' => 'Previous+month', + 'scale' => '1', + 'aggregation_unit' => 'Auto', + 'dataset_type' => 'timeseries', + 'thumbnail' => 'n', + 'query_group' => 'tg_usage', + 'display_type' => 'line', + 'combine_type' => 'stack', + 'limit' => '10', + 'offset' => '0', + 'log_scale' => 'n', + 'show_guide_lines' => 'y', + 'show_trend_line' => 'n', + 'show_error_bars' => 'n', + 'show_aggregate_labels' => 'n', + 'show_error_labels' => 'n', + 'hide_tooltip' => 'false', + 'show_title' => 'y', + 'width' => '916', + 'height' => '484', + 'legend_type' => 'bottom_center', + 'font_size' => '3', + 'format' => '', + 'inline' => 'n', + 'operation' => 'get_data' + ], + 'controllers/metric_explorer.php' => [ + 'show_title' => 'y', + 'timeseries' => 'y', + 'aggregation_unit' => 'Auto', + 'start_date' => '2016-12-22', + 'end_date' => '2017-01-01', + 'global_filters' => '%7B%22data%22%3A%5B%5D%2C%22total%22%3A0%7D', + 'title' => 'untitled+query+1', + 'show_filters' => 'true', + 'show_warnings' => 'true', + 'show_remainder' => 'false', + 'start' => '0', + 'limit' => '10', + 'timeframe_label' => 'User+Defined', + 'operation' => 'get_data', + 'data_series' => '%5B%7B%22id%22%3A4860340157018481%2C%22metric%22%3A%22total_cpu_hours%22%2C%22category%22%3A%22Jobs%22%2C%22realm%22%3A%22Jobs%22%2C%22group_by%22%3A%22none%22%2C%22x_axis%22%3Afalse%2C%22log_scale%22%3Afalse%2C%22has_std_err%22%3Afalse%2C%22std_err%22%3Afalse%2C%22std_err_labels%22%3A%22%22%2C%22value_labels%22%3Afalse%2C%22display_type%22%3A%22line%22%2C%22line_type%22%3A%22Solid%22%2C%22line_width%22%3A2%2C%22combine_type%22%3A%22side%22%2C%22sort_type%22%3A%22value_desc%22%2C%22filters%22%3A%7B%22data%22%3A%5B%5D%2C%22total%22%3A0%7D%2C%22ignore_global%22%3Afalse%2C%22long_legend%22%3Atrue%2C%22trend_line%22%3Afalse%2C%22color%22%3A%22auto%22%2C%22shadow%22%3Afalse%2C%22visibility%22%3Anull%2C%22z_index%22%3A0%2C%22enabled%22%3Atrue%7D%5D', + 'swap_xy' => 'false', + 'share_y_axis' => 'false', + 'hide_tooltip' => 'false', + 'show_guide_lines' => 'y', + 'showContextMenu' => 'y', + 'scale' => '1', + 'format' => '', + 'width' => '916', + 'height' => '484', + 'legend_type' => 'bottom_center', + 'font_size' => '3', + 'featured' => 'false', + 'trendLineEnabled' => 'undefined', + 'x_axis' => '%7B%7D', + 'y_axis' => '%7B%7D', + 'legend' => '%7B%7D', + 'defaultDatasetConfig' => '%7B%7D', + 'controller_module' => 'metric_explorer', + 'inline' => 'n' + ] + ]; + $formats = ['svg', 'png', 'pdf']; + foreach($formats as $format) { + foreach($urls as $url => $urlData) { + $urlData['format'] = $format; + $results[] = [ + $url, + $urlData + ]; + + } + } + return $results; + } +} From 949e1f59458d5bc4bf5df14b7892f1671e4a2a23 Mon Sep 17 00:00:00 2001 From: Aaron Weeden <31246768+aaronweeden@users.noreply.github.com> Date: Tue, 21 Apr 2026 21:49:34 -0400 Subject: [PATCH 08/11] Add missing changes for 11.0.3 rc.1. (#2201) --- bin/xdmod-upgrade | 3 ++- .../ConfigFilesMigration.php | 23 +++++++++++++++++++ configuration/portal_settings.ini | 2 +- docs/_config.yml | 4 ++-- open_xdmod/modules/xdmod/build.json | 4 ++-- 5 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 classes/OpenXdmod/Migration/Version1102To1103/ConfigFilesMigration.php diff --git a/bin/xdmod-upgrade b/bin/xdmod-upgrade index ff825bf520..88acebdd39 100755 --- a/bin/xdmod-upgrade +++ b/bin/xdmod-upgrade @@ -29,7 +29,8 @@ $supportedUpgrades = array( '10.5.0' => '10.5.1', '10.5.1' => '11.0.0', '11.0.0' => '11.0.1', - '11.0.1' => '11.0.2' + '11.0.1' => '11.0.2', + '11.0.2' => '11.0.3' ); /** diff --git a/classes/OpenXdmod/Migration/Version1102To1103/ConfigFilesMigration.php b/classes/OpenXdmod/Migration/Version1102To1103/ConfigFilesMigration.php new file mode 100644 index 0000000000..8c641a7dfc --- /dev/null +++ b/classes/OpenXdmod/Migration/Version1102To1103/ConfigFilesMigration.php @@ -0,0 +1,23 @@ +assertPortalSettingsIsWritable(); + $this->assertModulePortalSettingsAreWritable(); + $this->writePortalSettingsFile(); + $this->writeModulePortalSettingsFiles(); + } +} diff --git a/configuration/portal_settings.ini b/configuration/portal_settings.ini index 23a1334907..2c7bd975f9 100644 --- a/configuration/portal_settings.ini +++ b/configuration/portal_settings.ini @@ -5,7 +5,7 @@ contact_page_recipient = "" tech_support_recipient = "" ; The version number is updated during the upgrade process. -version = "11.0.2" +version = "11.0.3" debug_mode = "off" debug_recipient = "" diff --git a/docs/_config.yml b/docs/_config.yml index 99cd685b8c..74a8b89fe4 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -38,8 +38,8 @@ defaults: layout: "page" version: "11.0" prev_sw_version: "10.5.1" - sw_version: "11.0.2" - rpm_version: "11.0.2-1" + sw_version: "11.0.3" + rpm_version: "11.0.3-1" style: "effervescence" tocversion: "v11_0toc" diff --git a/open_xdmod/modules/xdmod/build.json b/open_xdmod/modules/xdmod/build.json index e608191177..445b2c15af 100644 --- a/open_xdmod/modules/xdmod/build.json +++ b/open_xdmod/modules/xdmod/build.json @@ -1,7 +1,7 @@ { "name": "xdmod", - "version": "11.0.2", - "release": "3", + "version": "11.0.3", + "release": "rc.1", "files": { "include_paths": [ "/" From 49eacb84530906aadd0f45624245a66352afa4fb Mon Sep 17 00:00:00 2001 From: Aaron Weeden <31246768+aaronweeden@users.noreply.github.com> Date: Tue, 5 May 2026 13:13:51 -0400 Subject: [PATCH 09/11] Prepare to release v11.0.3. (#2191) --- CHANGELOG.md | 29 +++++++++++++++++++++++ docs/upgrade.md | 22 ++++++++++++++++++ html/about/release_notes/xdmod.html | 32 ++++++++++++++++++++++++++ open_xdmod/modules/xdmod/build.json | 2 +- open_xdmod/modules/xdmod/xdmod.spec.in | 2 ++ 5 files changed, 86 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6b2639ef8..f485f7c589 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Open XDMoD Change Log +## 2026-05-05 v11.0.3 + +- Important Notes + - This release fixes a critical security vulnerability and two other + moderate-to-high severity security vulnerabilities in Open XDMoD: + - https://github.com/ubccr/xdmod/security/advisories/GHSA-29qm-7w4v-43fw + - https://github.com/ubccr/xdmod/security/advisories/GHSA-3pv7-qvc3-h527 + - https://github.com/ubccr/xdmod/security/advisories/GHSA-3hfh-m242-8rmh +- Bug Fixes + - Fix bug in which the server runs out of memory when exporting data + ([\#2085](https://github.com/ubccr/xdmod/pull/2085)). + - Fix tooltip display when hovering over area plots + ([\#2077](https://github.com/ubccr/xdmod/pull/2077)). + - Fix charting export ([\#2192](https://github.com/ubccr/xdmod/pull/2192)). + - Fix username validation + ([\#2194](https://github.com/ubccr/xdmod/pull/2194)). +- Enhancements + - Improve performance of database queries + ([\#2182](https://github.com/ubccr/xdmod/pull/2182)). +- Documentation + - Update list of publications and presentations + ([\#2081](https://github.com/ubccr/xdmod/pull/2081)). +- Maintenance / Code Quality + - Remove unused code ([\#2188](https://github.com/ubccr/xdmod/pull/2188)). + ## 2025-08-19 v11.0.2 - New Features @@ -214,6 +239,10 @@ - A new endpoint for retrieving raw data has been added. ## 2023-08-04 v10.0.3 + +- Important Notes + - This release fixes a critical security vulnerability in Open XDMoD: + - https://github.com/ubccr/xdmod/security/advisories/GHSA-r33r-6g3c-r992 - Bug Fixes - General - Fix handling of filters where the filter string has a quote character in it (#1749) diff --git a/docs/upgrade.md b/docs/upgrade.md index bfef76fee5..75e4f2b6e1 100644 --- a/docs/upgrade.md +++ b/docs/upgrade.md @@ -422,5 +422,27 @@ A new file `resource_metadata.json` will be added during the upgrade; this file contains the SQL that is used by a new `/rest/warehouse/resources` REST endpoint that is used by the Data Analytics Framework. +Additional 11.0.3 Upgrade Notes +------------------- + +### Database Changes + +This release contains performance improvements for ingestion of OpenStack cloud +logs. After upgrading, the next time you run ingestion with the `openstack` +datatype, the following tables will be created in the `modw_cloud` schema: + +- `instance_type_change_flag` +- `instance_type_config_group` +- `instance_type_grouped` + +In addition: + +- The `modw_cloud.instance_type_staging` table will have its `instance_type_id` + column changed to be nullable. +- The `modw_cloud.instance_type_union` table will: + - Have its primary index updated to remove the `instance_type_id` column + and add the `disk_gb` and `start_time` columns. + - Have a new index added with just the `instance_type_id` column. + [github-release]: https://github.com/ubccr/xdmod/releases/tag/v{{ page.rpm_version }} [mysql-config]: configuration.html#mariadb-configuration diff --git a/html/about/release_notes/xdmod.html b/html/about/release_notes/xdmod.html index dc1e3c0c46..1f57458d3e 100644 --- a/html/about/release_notes/xdmod.html +++ b/html/about/release_notes/xdmod.html @@ -2,6 +2,32 @@

Open XDMoD Release Notes

Below is a list of Open XDMoD releases with major features and bug fixes listed.

+

2026-05-05 v11.0.3

+ +

2025-08-19 v11.0.2

  • New Features

      @@ -395,6 +421,12 @@

      2023-09-11 v10.5.0

    2023-08-04 v10.0.3

      +
    • Important Notes

    • Bug Fixes
      • General
        • Fix handling of filters where the filter string has a quote character in it (#1749)
        • diff --git a/open_xdmod/modules/xdmod/build.json b/open_xdmod/modules/xdmod/build.json index 445b2c15af..76d579ffb6 100644 --- a/open_xdmod/modules/xdmod/build.json +++ b/open_xdmod/modules/xdmod/build.json @@ -1,7 +1,7 @@ { "name": "xdmod", "version": "11.0.3", - "release": "rc.1", + "release": "1", "files": { "include_paths": [ "/" diff --git a/open_xdmod/modules/xdmod/xdmod.spec.in b/open_xdmod/modules/xdmod/xdmod.spec.in index c37642cc27..a07cbe5e30 100644 --- a/open_xdmod/modules/xdmod/xdmod.spec.in +++ b/open_xdmod/modules/xdmod/xdmod.spec.in @@ -97,6 +97,8 @@ rm -rf $RPM_BUILD_ROOT %dir %attr(0570,apache,xdmod) %{xdmod_export_dir} %changelog +* Tue May 05 2026 XDMoD 11.0.3-1 +- Release 11.0.3 * Tue Aug 19 2025 XDMoD 11.0.2-3 - Release 11.0.2 * Mon Mar 17 2025 XDMoD 11.0.1-1 From 6b636d8157f8a8c20a8981c247d8be19e7275a81 Mon Sep 17 00:00:00 2001 From: Aaron Weeden <31246768+aaronweeden@users.noreply.github.com> Date: Tue, 12 May 2026 10:40:04 -0400 Subject: [PATCH 10/11] Remove xdmod-jekyll-theme submodule (xdmod11.0). (#2214) --- .gitmodules | 3 --- docs/xdmod-rest-schema.json | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b50b738c8d..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "docs/xdmod-jekyll-theme"] - path = docs/xdmod-jekyll-theme - url = https://github.com/ubccr/xdmod-jekyll-theme diff --git a/docs/xdmod-rest-schema.json b/docs/xdmod-rest-schema.json index 7a612ed25d..48f5a4e0f8 100644 --- a/docs/xdmod-rest-schema.json +++ b/docs/xdmod-rest-schema.json @@ -16,7 +16,7 @@ layout: null "url": "https://www.gnu.org/licenses/lgpl-3.0.txt" }, "x-logo": { - "url": "https://open.xdmod.org/xdmod-jekyll-theme/assets/images/xdmod_logo.png", + "url": "https://open.xdmod.org/assets/images/xdmod_logo.png", "backgroundColor": "#FFFFFF", "altText": "" }, From 0b32a9e5d05963227ba0c9f38387bff162fd5851 Mon Sep 17 00:00:00 2001 From: Aaron Weeden <31246768+aaronweeden@users.noreply.github.com> Date: Tue, 12 May 2026 15:03:31 -0400 Subject: [PATCH 11/11] Update date of 11.0.3 release. (#2218) --- CHANGELOG.md | 2 +- html/about/release_notes/xdmod.html | 2 +- open_xdmod/modules/xdmod/build.json | 2 +- open_xdmod/modules/xdmod/xdmod.spec.in | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f485f7c589..f292f9e3db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Open XDMoD Change Log -## 2026-05-05 v11.0.3 +## 2026-05-12 v11.0.3 - Important Notes - This release fixes a critical security vulnerability and two other diff --git a/html/about/release_notes/xdmod.html b/html/about/release_notes/xdmod.html index 1f57458d3e..774f026432 100644 --- a/html/about/release_notes/xdmod.html +++ b/html/about/release_notes/xdmod.html @@ -2,7 +2,7 @@

          Open XDMoD Release Notes

          Below is a list of Open XDMoD releases with major features and bug fixes listed.

          -

          2026-05-05 v11.0.3

          +

          2026-05-12 v11.0.3

          • Important Notes

            • This release fixes a critical security vulnerability and two other diff --git a/open_xdmod/modules/xdmod/build.json b/open_xdmod/modules/xdmod/build.json index 76d579ffb6..8d45ac5946 100644 --- a/open_xdmod/modules/xdmod/build.json +++ b/open_xdmod/modules/xdmod/build.json @@ -1,7 +1,7 @@ { "name": "xdmod", "version": "11.0.3", - "release": "1", + "release": "2", "files": { "include_paths": [ "/" diff --git a/open_xdmod/modules/xdmod/xdmod.spec.in b/open_xdmod/modules/xdmod/xdmod.spec.in index a07cbe5e30..2510a9d46d 100644 --- a/open_xdmod/modules/xdmod/xdmod.spec.in +++ b/open_xdmod/modules/xdmod/xdmod.spec.in @@ -97,7 +97,7 @@ rm -rf $RPM_BUILD_ROOT %dir %attr(0570,apache,xdmod) %{xdmod_export_dir} %changelog -* Tue May 05 2026 XDMoD 11.0.3-1 +* Tue May 12 2026 XDMoD 11.0.3-2 - Release 11.0.3 * Tue Aug 19 2025 XDMoD 11.0.2-3 - Release 11.0.2