BAMS initial project structure

This commit is contained in:
2025-12-23 18:34:39 +00:00
parent e1df870f98
commit 861e0f65c3
24 changed files with 2495 additions and 0 deletions

250
cockpit/index.html Normal file
View File

@@ -0,0 +1,250 @@
<!DOCTYPE html>
<html>
<head>
<title>BAMS - Backup Appliance Management System</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../base1/cockpit.css" type="text/css" rel="stylesheet">
<script src="../base1/jquery.js"></script>
<script src="../base1/cockpit.js"></script>
</head>
<body>
<div class="container-fluid">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">BAMS</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="#dashboard" data-tab="dashboard">Dashboard</a></li>
<li><a href="#storage" data-tab="storage">Storage</a></li>
<li><a href="#tape" data-tab="tape">Tape Library</a></li>
<li><a href="#iscsi" data-tab="iscsi">iSCSI Targets</a></li>
<li><a href="#bacula" data-tab="bacula">Bacula</a></li>
<li><a href="#logs" data-tab="logs">Logs</a></li>
</ul>
</div>
</nav>
<div id="dashboard" class="tab-content active">
<div class="page-header">
<h1>Dashboard</h1>
</div>
<div class="row">
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">Disk Storage</div>
<div class="panel-body">
<div id="disk-stats">
<p>Loading...</p>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">Tape Library</div>
<div class="panel-body">
<div id="tape-stats">
<p>Loading...</p>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">iSCSI</div>
<div class="panel-body">
<div id="iscsi-stats">
<p>Loading...</p>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="panel panel-default">
<div class="panel-heading">Bacula SD</div>
<div class="panel-body">
<div id="bacula-stats">
<p>Loading...</p>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">Alerts</div>
<div class="panel-body">
<div id="alerts">
<p>No alerts</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="storage" class="tab-content" style="display: none;">
<div class="page-header">
<h1>Storage Repositories</h1>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<button class="btn btn-primary" id="create-repo-btn">Create Repository</button>
</div>
<div class="panel-body">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Size</th>
<th>Used</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="repositories-table">
<tr><td colspan="6">Loading...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="tape" class="tab-content" style="display: none;">
<div class="page-header">
<h1>Tape Library Management</h1>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
Library Status
<button class="btn btn-sm btn-default pull-right" id="inventory-btn">Run Inventory</button>
</div>
<div class="panel-body" id="library-status">
<p>Loading...</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Tape Drives</div>
<div class="panel-body" id="drives-list">
<p>Loading...</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">Slots</div>
<div class="panel-body" id="slots-list">
<p>Loading...</p>
</div>
</div>
</div>
</div>
</div>
<div id="iscsi" class="tab-content" style="display: none;">
<div class="page-header">
<h1>iSCSI Target Management</h1>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<button class="btn btn-primary" id="create-target-btn">Create Target</button>
</div>
<div class="panel-body">
<table class="table table-striped">
<thead>
<tr>
<th>IQN</th>
<th>Portals</th>
<th>Initiators</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="targets-table">
<tr><td colspan="5">Loading...</td></tr>
</tbody>
</table>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Active Sessions</div>
<div class="panel-body">
<table class="table table-striped">
<thead>
<tr>
<th>Target IQN</th>
<th>Initiator IQN</th>
<th>IP Address</th>
<th>State</th>
</tr>
</thead>
<tbody id="sessions-table">
<tr><td colspan="4">Loading...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="bacula" class="tab-content" style="display: none;">
<div class="page-header">
<h1>Bacula Integration</h1>
</div>
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Storage Daemon Status</div>
<div class="panel-body" id="bacula-status">
<p>Loading...</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">Actions</div>
<div class="panel-body">
<button class="btn btn-default" id="bacula-inventory-btn">Run Inventory</button>
<button class="btn btn-default" id="bacula-restart-btn">Restart SD</button>
<button class="btn btn-default" id="bacula-config-btn">Generate Config</button>
</div>
</div>
</div>
</div>
</div>
<div id="logs" class="tab-content" style="display: none;">
<div class="page-header">
<h1>Logs & Diagnostics</h1>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<select id="log-service" class="form-control" style="display: inline-block; width: 200px;">
<option value="bams">BAMS</option>
<option value="scst">SCST</option>
<option value="iscsi">iSCSI</option>
<option value="bacula">Bacula</option>
</select>
<button class="btn btn-default" id="refresh-logs-btn">Refresh</button>
<button class="btn btn-default" id="download-bundle-btn">Download Support Bundle</button>
</div>
<div class="panel-body">
<pre id="logs-content" style="max-height: 600px; overflow-y: auto;"></pre>
</div>
</div>
</div>
</div>
<script src="bams.js"></script>
</body>
</html>