This commit is contained in:
e025532
2025-04-29 15:25:31 +02:00
parent 20e3d5a1b0
commit a2dddd8f57
9 changed files with 1498 additions and 374 deletions

194
Storage/D.php Normal file
View File

@@ -0,0 +1,194 @@
<?php
include $_SERVER['DOCUMENT_ROOT']."/include/all.php";
$json = json_decode(PostJson("$bdnuss/Storage/SVC/SVC_INVENTORY.php",''),true);
$poolsData = $json['Data']['Pools'];
function formatBytes($bytes, $precision = 2) {
if ($bytes == 0) return '0 octets';
$base = 1024;
$size = $bytes / pow($base, 4);
return round($size, $precision) . ' Tio';
}
$seriesData = [
'V5100' => [
'physical_used' => 0, 'physical_free' => 0, 'physical_total_api' => 0,
'virtual_total' => 0, 'written_total' => 0, 'compressed_total' => 0,
'dedup_savings' => 0
],
'V5030' => [
'physical_used' => 0, 'physical_free' => 0, 'physical_total_api' => 0,
'virtual_total' => 0, 'written_total' => 0, 'compressed_total' => 0,
'dedup_savings' => 0
],
];
foreach ($poolsData as $poolName => $poolDetails) {
$currentSeries = null;
if (strpos($poolName, 'V5100') !== false) {
$currentSeries = 'V5100';
} elseif (strpos($poolName, 'V5030') !== false) {
$currentSeries = 'V5030';
}
if ($currentSeries) {
$used_capacity = (float) $poolDetails['used_capacity'];
$free_capacity = (float) $poolDetails['free_capacity'];
$capacity = (float) $poolDetails['capacity'];
$virtual_cap = (float) $poolDetails['virtual_capacity'];
$uncomp_cap = (float) $poolDetails['compression_uncompressed_capacity'];
$comp_cap = (float) $poolDetails['compression_compressed_capacity'];
$dedup_sav = (float) $poolDetails['deduplication_capacity_saving'];
$seriesData[$currentSeries]['physical_used'] += $used_capacity;
$seriesData[$currentSeries]['physical_free'] += $free_capacity;
$seriesData[$currentSeries]['physical_total_api'] += $capacity;
$seriesData[$currentSeries]['virtual_total'] += $virtual_cap;
$seriesData[$currentSeries]['written_total'] += $uncomp_cap;
$seriesData[$currentSeries]['compressed_total'] += $comp_cap;
$seriesData[$currentSeries]['dedup_savings'] += $dedup_sav;
}
}
foreach ($seriesData as $series => &$data) {
$data['physical_total_calc'] = ($data['physical_used'] + ($data['physical_free'] /2));
$data['physical_used_percent'] = ($data['physical_total_calc'] > 0) ? ($data['physical_used'] / $data['physical_total_calc']) * 100 : 0;
$data['physical_free_percent'] = 100 - $data['physical_used_percent'];
$data['volume_written_percent'] = ($data['virtual_total'] > 0) ? ($data['written_total'] / $data['virtual_total']) * 100 : 0;
$data['compression_savings'] = $data['written_total'] - $data['compressed_total'];
$data['thin_savings'] = $data['virtual_total'] - $data['written_total'];
$data['total_savings'] = $data['compression_savings'] + $data['dedup_savings'] + $data['thin_savings'];
$data['compression_ratio'] = ($data['compressed_total'] > 0) ? ($data['written_total'] / $data['compressed_total']) : 0;
$data['compression_savings_percent'] = ($data['written_total'] > 0) ? ($data['compression_savings'] / $data['written_total']) * 100 : 0;
$data['dedup_savings_percent'] = ($data['written_total'] > 0) ? ($data['dedup_savings'] / $data['written_total']) * 100 : 0;
$data['thin_savings_percent'] = ($data['virtual_total'] > 0) ? ($data['thin_savings'] / $data['virtual_total']) * 100 : 0;
$data['total_savings_percent'] = ($data['virtual_total'] > 0) ? ($data['total_savings'] / $data['virtual_total']) * 100 : 0;
}
unset($data);
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dashboard Capacité SVC</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<style>
.capacity-block .value {
font-size: 1.8rem;
font-weight: bold;
}
.capacity-block .percent {
font-size: 1rem;
font-weight: bold;
color: #555;
}
.capacity-block .label {
font-size: 0.9rem;
color: #6c757d; /* text-muted */
}
.capacity-block .sub-value {
font-size: 1.1rem;
font-weight: normal;
display: block; /* Pour mettre les valeurs de gains les unes sous les autres */
margin-bottom: 0.3rem;
}
.card-body {
min-height: 150px; /* Hauteur minimale pour aligner les cartes */
display: flex;
flex-direction: column;
justify-content: space-between;
}
.gain-item {
display: flex;
justify-content: space-between;
margin-bottom: 5px;
font-size: 0.9rem;
}
.gain-item span:last-child {
font-weight: bold;
}
</style>
</head>
<body>
<div class="container mt-4">
<h1>Synthèse Capacité IBM Spectrum Virtualize</h1>
<hr>
<?php foreach ($seriesData as $series => $data): ?>
<h2 class="mt-5">Statistiques Baies <?= $series ?></h2>
<div class="row g-4">
<div class="col-lg-4">
<div class="card h-100">
<div class="card-body capacity-block">
<div>
<h5 class="card-title">Capacité physique</h5>
<div class="d-flex justify-content-between align-items-start mb-2">
<div>
<span class="percent"><?= number_format($data['physical_used_percent'], 0) ?>%</span>
<div class="value"><?= formatBytes($data['physical_used']) ?></div>
</div>
<div class="text-end">
<span class="percent"><?= number_format($data['physical_free_percent'], 0) ?>%</span>
<div class="value"><?= formatBytes($data['physical_free']/2) ?></div>
</div>
</div>
<div class="progress" style="height: 20px;">
<div class="progress-bar" role="progressbar" style="width: <?= $data['physical_used_percent'] ?>%;" aria-valuenow="<?= $data['physical_used_percent'] ?>" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card h-100">
<div class="card-body capacity-block">
<div>
<h5 class="card-title">Capacité de volume</h5>
<div class="d-flex justify-content-between align-items-start mb-2">
<div>
<span class="percent"><?= number_format($data['volume_written_percent'], 0) ?>%</span>
<div class="value"><?= formatBytes($data['written_total']) ?></div>
</div>
</div>
<div class="progress" style="height: 20px;">
<div class="progress-bar" role="progressbar" style="width: <?= $data['volume_written_percent'] ?>%;" aria-valuenow="<?= $data['volume_written_percent'] ?>" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card ">
<div class="card-body capacity-block">
<div>
<h5 class="card-title">Gains de capacité</h5>
<div class="gain-item">
<span><?= number_format($data['compression_savings_percent'], 0) ?>% Compression</span>
<span><?= formatBytes($data['compression_savings']) ?></span>
</div>
<div class="gain-item">
<span><?= number_format($data['thin_savings_percent'], 0) ?>% Allocation dynamique</span>
<span><?= formatBytes($data['thin_savings']) ?></span>
</div>
<hr>
<div class="gain-item">
<span>Taux compression</span>
<span><?= number_format($data['compression_ratio'], 1) ?>:1</span>
</div>
</div>
</div>
</div>
</div>
</div> <?php endforeach; ?>
</div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>