tidy up documentation for alpha release
This commit is contained in:
283
docs/alpha/srs/SRS-00-Overview.md
Normal file
283
docs/alpha/srs/SRS-00-Overview.md
Normal file
@@ -0,0 +1,283 @@
|
||||
# Software Requirements Specification (SRS)
|
||||
## AtlasOS - Calypso Backup Appliance
|
||||
### Alpha Release
|
||||
|
||||
**Version:** 1.0.0-alpha
|
||||
**Date:** 2025-01-XX
|
||||
**Status:** In Development
|
||||
|
||||
---
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
### 1.1 Purpose
|
||||
This document provides a comprehensive Software Requirements Specification (SRS) for AtlasOS - Calypso, an enterprise-grade backup appliance management system. The system provides unified management for storage, backup, tape libraries, and system administration through a modern web-based interface.
|
||||
|
||||
### 1.2 Scope
|
||||
Calypso is designed to manage:
|
||||
- ZFS storage pools and datasets
|
||||
- File sharing (SMB/CIFS and NFS)
|
||||
- iSCSI block storage targets
|
||||
- Physical and Virtual Tape Libraries (VTL)
|
||||
- Backup job management (Bacula/Bareos integration)
|
||||
- System monitoring and alerting
|
||||
- User and access management (IAM)
|
||||
- Object storage services
|
||||
- Snapshot and replication management
|
||||
|
||||
### 1.3 Definitions, Acronyms, and Abbreviations
|
||||
- **ZFS**: Zettabyte File System
|
||||
- **SMB/CIFS**: Server Message Block / Common Internet File System
|
||||
- **NFS**: Network File System
|
||||
- **iSCSI**: Internet Small Computer Systems Interface
|
||||
- **VTL**: Virtual Tape Library
|
||||
- **IAM**: Identity and Access Management
|
||||
- **RBAC**: Role-Based Access Control
|
||||
- **API**: Application Programming Interface
|
||||
- **REST**: Representational State Transfer
|
||||
- **JWT**: JSON Web Token
|
||||
- **SNMP**: Simple Network Management Protocol
|
||||
- **NTP**: Network Time Protocol
|
||||
|
||||
### 1.4 References
|
||||
- ZFS Documentation: https://openzfs.github.io/openzfs-docs/
|
||||
- SCST Documentation: http://scst.sourceforge.net/
|
||||
- Bacula Documentation: https://www.bacula.org/documentation/
|
||||
- React Documentation: https://react.dev/
|
||||
- Go Documentation: https://go.dev/doc/
|
||||
|
||||
### 1.5 Overview
|
||||
This SRS is organized into the following sections:
|
||||
- **SRS-01**: Storage Management
|
||||
- **SRS-02**: File Sharing (SMB/NFS)
|
||||
- **SRS-03**: iSCSI Management
|
||||
- **SRS-04**: Tape Library Management
|
||||
- **SRS-05**: Backup Management
|
||||
- **SRS-06**: Object Storage
|
||||
- **SRS-07**: Snapshot & Replication
|
||||
- **SRS-08**: System Management
|
||||
- **SRS-09**: Monitoring & Alerting
|
||||
- **SRS-10**: Identity & Access Management
|
||||
- **SRS-11**: User Interface & Experience
|
||||
|
||||
---
|
||||
|
||||
## 2. System Overview
|
||||
|
||||
### 2.1 System Architecture
|
||||
Calypso follows a client-server architecture:
|
||||
- **Frontend**: React-based Single Page Application (SPA)
|
||||
- **Backend**: Go-based REST API server
|
||||
- **Database**: PostgreSQL for persistent storage
|
||||
- **External Services**: ZFS, SCST, Bacula/Bareos, MHVTL
|
||||
|
||||
### 2.2 Technology Stack
|
||||
|
||||
#### Frontend
|
||||
- React 18 with TypeScript
|
||||
- Vite for build tooling
|
||||
- TailwindCSS for styling
|
||||
- TanStack Query for data fetching
|
||||
- React Router for navigation
|
||||
- Zustand for state management
|
||||
- Axios for HTTP requests
|
||||
- Lucide React for icons
|
||||
|
||||
#### Backend
|
||||
- Go 1.21+
|
||||
- Gin web framework
|
||||
- PostgreSQL database
|
||||
- JWT for authentication
|
||||
- Structured logging (zerolog)
|
||||
|
||||
### 2.3 Deployment Model
|
||||
- Single-server deployment
|
||||
- Systemd service management
|
||||
- Reverse proxy support (nginx/caddy)
|
||||
- WebSocket support for real-time updates
|
||||
|
||||
---
|
||||
|
||||
## 3. Functional Requirements
|
||||
|
||||
### 3.1 Authentication & Authorization
|
||||
- User login/logout
|
||||
- JWT-based session management
|
||||
- Role-based access control (Admin, Operator, ReadOnly)
|
||||
- Permission-based feature access
|
||||
- Session timeout and refresh
|
||||
|
||||
### 3.2 Storage Management
|
||||
- ZFS pool creation, deletion, and monitoring
|
||||
- Dataset management (filesystems and volumes)
|
||||
- Disk discovery and monitoring
|
||||
- Storage repository management
|
||||
- ARC statistics monitoring
|
||||
|
||||
### 3.3 File Sharing
|
||||
- SMB/CIFS share creation and configuration
|
||||
- NFS share creation and client management
|
||||
- Share access control
|
||||
- Mount point management
|
||||
|
||||
### 3.4 iSCSI Management
|
||||
- iSCSI target creation and management
|
||||
- LUN mapping and configuration
|
||||
- Initiator access control
|
||||
- Portal configuration
|
||||
- Extent management
|
||||
|
||||
### 3.5 Tape Library Management
|
||||
- Physical tape library discovery
|
||||
- Virtual Tape Library (VTL) management
|
||||
- Tape drive and slot management
|
||||
- Media inventory
|
||||
|
||||
### 3.6 Backup Management
|
||||
- Backup job creation and scheduling
|
||||
- Bacula/Bareos integration
|
||||
- Storage pool and volume management
|
||||
- Job history and monitoring
|
||||
- Client management
|
||||
|
||||
### 3.7 Object Storage
|
||||
- S3-compatible bucket management
|
||||
- Access policy configuration
|
||||
- User and key management
|
||||
- Usage monitoring
|
||||
|
||||
### 3.8 Snapshot & Replication
|
||||
- ZFS snapshot creation and management
|
||||
- Snapshot rollback and cloning
|
||||
- Replication task configuration
|
||||
- Remote replication management
|
||||
|
||||
### 3.9 System Management
|
||||
- Network interface configuration
|
||||
- Service management (start/stop/restart)
|
||||
- NTP configuration
|
||||
- SNMP configuration
|
||||
- System logs viewing
|
||||
- Terminal console access
|
||||
- Feature license management
|
||||
|
||||
### 3.10 Monitoring & Alerting
|
||||
- Real-time system metrics
|
||||
- Storage health monitoring
|
||||
- Network throughput monitoring
|
||||
- Alert rule configuration
|
||||
- Alert history and management
|
||||
|
||||
### 3.11 Identity & Access Management
|
||||
- User account management
|
||||
- Role management
|
||||
- Permission assignment
|
||||
- Group management
|
||||
- User profile management
|
||||
|
||||
---
|
||||
|
||||
## 4. Non-Functional Requirements
|
||||
|
||||
### 4.1 Performance
|
||||
- API response time < 200ms for read operations
|
||||
- API response time < 1s for write operations
|
||||
- Support for 100+ concurrent users
|
||||
- Real-time metrics update every 5-30 seconds
|
||||
|
||||
### 4.2 Security
|
||||
- HTTPS support
|
||||
- JWT token expiration and refresh
|
||||
- Password hashing (bcrypt)
|
||||
- SQL injection prevention
|
||||
- XSS protection
|
||||
- CSRF protection
|
||||
- Rate limiting
|
||||
- Audit logging
|
||||
|
||||
### 4.3 Reliability
|
||||
- Database transaction support
|
||||
- Error handling and recovery
|
||||
- Health check endpoints
|
||||
- Graceful shutdown
|
||||
|
||||
### 4.4 Usability
|
||||
- Responsive web design
|
||||
- Dark theme support
|
||||
- Intuitive navigation
|
||||
- Real-time feedback
|
||||
- Loading states
|
||||
- Error messages
|
||||
|
||||
### 4.5 Maintainability
|
||||
- Clean code architecture
|
||||
- Comprehensive logging
|
||||
- API documentation
|
||||
- Code comments
|
||||
- Modular design
|
||||
|
||||
---
|
||||
|
||||
## 5. System Constraints
|
||||
|
||||
### 5.1 Hardware Requirements
|
||||
- Minimum: 4GB RAM, 2 CPU cores, 100GB storage
|
||||
- Recommended: 8GB+ RAM, 4+ CPU cores, 500GB+ storage
|
||||
|
||||
### 5.2 Software Requirements
|
||||
- Linux-based operating system (Ubuntu 24.04+)
|
||||
- PostgreSQL 14+
|
||||
- ZFS support
|
||||
- SCST installed and configured
|
||||
- Bacula/Bareos (optional, for backup features)
|
||||
|
||||
### 5.3 Network Requirements
|
||||
- Network connectivity for remote access
|
||||
- SSH access for system management
|
||||
- Port 8080 (API) and 3000 (Frontend) accessible
|
||||
|
||||
---
|
||||
|
||||
## 6. Assumptions and Dependencies
|
||||
|
||||
### 6.1 Assumptions
|
||||
- System has root/sudo access for ZFS and system operations
|
||||
- Network interfaces are properly configured
|
||||
- External services (Bacula, SCST) are installed and accessible
|
||||
- Users have basic understanding of storage and backup concepts
|
||||
|
||||
### 6.2 Dependencies
|
||||
- PostgreSQL database
|
||||
- ZFS kernel module and tools
|
||||
- SCST kernel module and tools
|
||||
- Bacula/Bareos (for backup features)
|
||||
- MHVTL (for VTL features)
|
||||
|
||||
---
|
||||
|
||||
## 7. Future Enhancements
|
||||
|
||||
### 7.1 Planned Features
|
||||
- LDAP/Active Directory integration
|
||||
- Multi-site replication
|
||||
- Cloud backup integration
|
||||
- Advanced encryption at rest
|
||||
- WebSocket real-time updates
|
||||
- Mobile responsive improvements
|
||||
- Advanced reporting and analytics
|
||||
|
||||
### 7.2 Potential Enhancements
|
||||
- Multi-tenant support
|
||||
- API rate limiting per user
|
||||
- Advanced backup scheduling
|
||||
- Disaster recovery features
|
||||
- Performance optimization tools
|
||||
|
||||
---
|
||||
|
||||
## Document History
|
||||
|
||||
| Version | Date | Author | Changes |
|
||||
|---------|------|--------|---------|
|
||||
| 1.0.0-alpha | 2025-01-XX | Development Team | Initial SRS document |
|
||||
|
||||
127
docs/alpha/srs/SRS-01-Storage-Management.md
Normal file
127
docs/alpha/srs/SRS-01-Storage-Management.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# SRS-01: Storage Management
|
||||
|
||||
## 1. Overview
|
||||
Storage Management module provides comprehensive management of ZFS storage pools, datasets, disks, and storage repositories.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 ZFS Pool Management
|
||||
**FR-SM-001**: System shall allow users to create ZFS pools
|
||||
- **Input**: Pool name, RAID level, disk selection, compression, deduplication options
|
||||
- **Output**: Created pool with UUID
|
||||
- **Validation**: Pool name uniqueness, disk availability, RAID level compatibility
|
||||
|
||||
**FR-SM-002**: System shall allow users to list all ZFS pools
|
||||
- **Output**: List of pools with status, capacity, health information
|
||||
- **Refresh**: Auto-refresh every 2 minutes
|
||||
|
||||
**FR-SM-003**: System shall allow users to view ZFS pool details
|
||||
- **Output**: Pool configuration, capacity, health, datasets, disk information
|
||||
|
||||
**FR-SM-004**: System shall allow users to delete ZFS pools
|
||||
- **Validation**: Pool must be empty or confirmation required
|
||||
- **Side Effect**: All datasets in pool are destroyed
|
||||
|
||||
**FR-SM-005**: System shall allow users to add spare disks to pools
|
||||
- **Input**: Pool ID, disk list
|
||||
- **Validation**: Disk availability, compatibility
|
||||
|
||||
### 2.2 ZFS Dataset Management
|
||||
**FR-SM-006**: System shall allow users to create ZFS datasets
|
||||
- **Input**: Pool ID, dataset name, type (filesystem/volume), compression, quota, reservation, mount point
|
||||
- **Output**: Created dataset with UUID
|
||||
- **Validation**: Name uniqueness within pool, valid mount point
|
||||
|
||||
**FR-SM-007**: System shall allow users to list datasets in a pool
|
||||
- **Input**: Pool ID
|
||||
- **Output**: List of datasets with properties
|
||||
- **Refresh**: Auto-refresh every 1 second
|
||||
|
||||
**FR-SM-008**: System shall allow users to delete ZFS datasets
|
||||
- **Input**: Pool ID, dataset name
|
||||
- **Validation**: Dataset must not be in use
|
||||
|
||||
### 2.3 Disk Management
|
||||
**FR-SM-009**: System shall discover and list all physical disks
|
||||
- **Output**: Disk list with size, type, status, mount information
|
||||
- **Refresh**: Auto-refresh every 5 minutes
|
||||
|
||||
**FR-SM-010**: System shall allow users to manually sync disk discovery
|
||||
- **Action**: Trigger disk rescan
|
||||
|
||||
**FR-SM-011**: System shall display disk details
|
||||
- **Output**: Disk properties, partitions, usage, health status
|
||||
|
||||
### 2.4 Storage Repository Management
|
||||
**FR-SM-012**: System shall allow users to create storage repositories
|
||||
- **Input**: Name, type, path, capacity
|
||||
- **Output**: Created repository with ID
|
||||
|
||||
**FR-SM-013**: System shall allow users to list storage repositories
|
||||
- **Output**: Repository list with capacity, usage, status
|
||||
|
||||
**FR-SM-014**: System shall allow users to view repository details
|
||||
- **Output**: Repository properties, usage statistics
|
||||
|
||||
**FR-SM-015**: System shall allow users to delete storage repositories
|
||||
- **Validation**: Repository must not be in use
|
||||
|
||||
### 2.5 ARC Statistics
|
||||
**FR-SM-016**: System shall display ZFS ARC statistics
|
||||
- **Output**: Hit ratio, cache size, eviction statistics
|
||||
- **Refresh**: Real-time updates
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Storage Dashboard
|
||||
- Pool overview cards with capacity and health
|
||||
- Dataset tree view
|
||||
- Disk list with status indicators
|
||||
- Quick actions (create pool, create dataset)
|
||||
|
||||
### 3.2 Pool Management
|
||||
- Pool creation wizard
|
||||
- Pool detail view with tabs (Overview, Datasets, Disks, Settings)
|
||||
- Pool deletion confirmation dialog
|
||||
|
||||
### 3.3 Dataset Management
|
||||
- Dataset creation form
|
||||
- Dataset list with filtering and sorting
|
||||
- Dataset detail view
|
||||
- Dataset deletion confirmation
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/storage/zfs/pools
|
||||
GET /api/v1/storage/zfs/pools/:id
|
||||
POST /api/v1/storage/zfs/pools
|
||||
DELETE /api/v1/storage/zfs/pools/:id
|
||||
POST /api/v1/storage/zfs/pools/:id/spare
|
||||
|
||||
GET /api/v1/storage/zfs/pools/:id/datasets
|
||||
POST /api/v1/storage/zfs/pools/:id/datasets
|
||||
DELETE /api/v1/storage/zfs/pools/:id/datasets/:dataset
|
||||
|
||||
GET /api/v1/storage/disks
|
||||
POST /api/v1/storage/disks/sync
|
||||
|
||||
GET /api/v1/storage/repositories
|
||||
GET /api/v1/storage/repositories/:id
|
||||
POST /api/v1/storage/repositories
|
||||
DELETE /api/v1/storage/repositories/:id
|
||||
|
||||
GET /api/v1/storage/zfs/arc/stats
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **storage:read**: Required for all read operations
|
||||
- **storage:write**: Required for create, update, delete operations
|
||||
|
||||
## 6. Error Handling
|
||||
- Invalid pool name format
|
||||
- Disk not available
|
||||
- Pool already exists
|
||||
- Dataset in use
|
||||
- Insufficient permissions
|
||||
|
||||
141
docs/alpha/srs/SRS-02-File-Sharing.md
Normal file
141
docs/alpha/srs/SRS-02-File-Sharing.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# SRS-02: File Sharing (SMB/NFS)
|
||||
|
||||
## 1. Overview
|
||||
File Sharing module provides management of SMB/CIFS and NFS shares for network file access.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Share Management
|
||||
**FR-FS-001**: System shall allow users to create shares
|
||||
- **Input**: Dataset ID, share type (SMB/NFS/Both), share name, mount point
|
||||
- **Output**: Created share with UUID
|
||||
- **Validation**: Dataset exists, share name uniqueness
|
||||
|
||||
**FR-FS-002**: System shall allow users to list all shares
|
||||
- **Output**: Share list with type, dataset, status
|
||||
- **Filtering**: By protocol, dataset, status
|
||||
|
||||
**FR-FS-003**: System shall allow users to view share details
|
||||
- **Output**: Share configuration, protocol settings, access control
|
||||
|
||||
**FR-FS-004**: System shall allow users to update shares
|
||||
- **Input**: Share ID, updated configuration
|
||||
- **Validation**: Valid configuration values
|
||||
|
||||
**FR-FS-005**: System shall allow users to delete shares
|
||||
- **Validation**: Share must not be actively accessed
|
||||
|
||||
### 2.2 SMB/CIFS Configuration
|
||||
**FR-FS-006**: System shall allow users to configure SMB share name
|
||||
- **Input**: Share ID, SMB share name
|
||||
- **Validation**: Valid SMB share name format
|
||||
|
||||
**FR-FS-007**: System shall allow users to configure SMB path
|
||||
- **Input**: Share ID, SMB path
|
||||
- **Validation**: Path exists and is accessible
|
||||
|
||||
**FR-FS-008**: System shall allow users to configure SMB comment
|
||||
- **Input**: Share ID, comment text
|
||||
|
||||
**FR-FS-009**: System shall allow users to enable/disable guest access
|
||||
- **Input**: Share ID, guest access flag
|
||||
|
||||
**FR-FS-010**: System shall allow users to configure read-only access
|
||||
- **Input**: Share ID, read-only flag
|
||||
|
||||
**FR-FS-011**: System shall allow users to configure browseable option
|
||||
- **Input**: Share ID, browseable flag
|
||||
|
||||
### 2.3 NFS Configuration
|
||||
**FR-FS-012**: System shall allow users to configure NFS clients
|
||||
- **Input**: Share ID, client list (IP addresses or hostnames)
|
||||
- **Validation**: Valid IP/hostname format
|
||||
|
||||
**FR-FS-013**: System shall allow users to add NFS clients
|
||||
- **Input**: Share ID, client address
|
||||
- **Validation**: Client not already in list
|
||||
|
||||
**FR-FS-014**: System shall allow users to remove NFS clients
|
||||
- **Input**: Share ID, client address
|
||||
|
||||
**FR-FS-015**: System shall allow users to configure NFS options
|
||||
- **Input**: Share ID, NFS options (ro, rw, sync, async, etc.)
|
||||
|
||||
### 2.4 Share Status
|
||||
**FR-FS-016**: System shall display share status (enabled/disabled)
|
||||
- **Output**: Current status for each protocol
|
||||
|
||||
**FR-FS-017**: System shall allow users to enable/disable SMB protocol
|
||||
- **Input**: Share ID, enabled flag
|
||||
|
||||
**FR-FS-018**: System shall allow users to enable/disable NFS protocol
|
||||
- **Input**: Share ID, enabled flag
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Share List View
|
||||
- Master-detail layout
|
||||
- Search and filter functionality
|
||||
- Protocol indicators (SMB/NFS badges)
|
||||
- Status indicators
|
||||
|
||||
### 3.2 Share Detail View
|
||||
- Protocol tabs (SMB, NFS)
|
||||
- Configuration forms
|
||||
- Client management (for NFS)
|
||||
- Quick actions (enable/disable protocols)
|
||||
|
||||
### 3.3 Create Share Modal
|
||||
- Dataset selection
|
||||
- Share name input
|
||||
- Protocol selection
|
||||
- Initial configuration
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/shares
|
||||
GET /api/v1/shares/:id
|
||||
POST /api/v1/shares
|
||||
PUT /api/v1/shares/:id
|
||||
DELETE /api/v1/shares/:id
|
||||
```
|
||||
|
||||
## 5. Data Model
|
||||
|
||||
### Share Object
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"dataset_id": "uuid",
|
||||
"dataset_name": "string",
|
||||
"mount_point": "string",
|
||||
"share_type": "smb|nfs|both",
|
||||
"smb_enabled": boolean,
|
||||
"smb_share_name": "string",
|
||||
"smb_path": "string",
|
||||
"smb_comment": "string",
|
||||
"smb_guest_ok": boolean,
|
||||
"smb_read_only": boolean,
|
||||
"smb_browseable": boolean,
|
||||
"nfs_enabled": boolean,
|
||||
"nfs_clients": ["string"],
|
||||
"nfs_options": "string",
|
||||
"is_active": boolean,
|
||||
"created_at": "timestamp",
|
||||
"updated_at": "timestamp",
|
||||
"created_by": "uuid"
|
||||
}
|
||||
```
|
||||
|
||||
## 6. Permissions
|
||||
- **storage:read**: Required for viewing shares
|
||||
- **storage:write**: Required for creating, updating, deleting shares
|
||||
|
||||
## 7. Error Handling
|
||||
- Invalid dataset ID
|
||||
- Duplicate share name
|
||||
- Invalid client address format
|
||||
- Share in use
|
||||
- Insufficient permissions
|
||||
|
||||
163
docs/alpha/srs/SRS-03-iSCSI-Management.md
Normal file
163
docs/alpha/srs/SRS-03-iSCSI-Management.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# SRS-03: iSCSI Management
|
||||
|
||||
## 1. Overview
|
||||
iSCSI Management module provides configuration and management of iSCSI targets, LUNs, initiators, and portals using SCST.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Target Management
|
||||
**FR-ISCSI-001**: System shall allow users to create iSCSI targets
|
||||
- **Input**: Target name, alias
|
||||
- **Output**: Created target with ID
|
||||
- **Validation**: Target name uniqueness, valid IQN format
|
||||
|
||||
**FR-ISCSI-002**: System shall allow users to list all iSCSI targets
|
||||
- **Output**: Target list with status, LUN count, initiator count
|
||||
|
||||
**FR-ISCSI-003**: System shall allow users to view target details
|
||||
- **Output**: Target configuration, LUNs, initiators, status
|
||||
|
||||
**FR-ISCSI-004**: System shall allow users to delete iSCSI targets
|
||||
- **Validation**: Target must not be in use
|
||||
|
||||
**FR-ISCSI-005**: System shall allow users to enable/disable targets
|
||||
- **Input**: Target ID, enabled flag
|
||||
|
||||
### 2.2 LUN Management
|
||||
**FR-ISCSI-006**: System shall allow users to add LUNs to targets
|
||||
- **Input**: Target ID, device path, LUN number
|
||||
- **Validation**: Device exists, LUN number available
|
||||
|
||||
**FR-ISCSI-007**: System shall allow users to remove LUNs from targets
|
||||
- **Input**: Target ID, LUN ID
|
||||
|
||||
**FR-ISCSI-008**: System shall display LUN information
|
||||
- **Output**: LUN number, device, size, status
|
||||
|
||||
### 2.3 Initiator Management
|
||||
**FR-ISCSI-009**: System shall allow users to add initiators to targets
|
||||
- **Input**: Target ID, initiator IQN
|
||||
- **Validation**: Valid IQN format
|
||||
|
||||
**FR-ISCSI-010**: System shall allow users to remove initiators from targets
|
||||
- **Input**: Target ID, initiator ID
|
||||
|
||||
**FR-ISCSI-011**: System shall allow users to list all initiators
|
||||
- **Output**: Initiator list with associated targets
|
||||
|
||||
**FR-ISCSI-012**: System shall allow users to create initiator groups
|
||||
- **Input**: Group name, initiator list
|
||||
- **Output**: Created group with ID
|
||||
|
||||
**FR-ISCSI-013**: System shall allow users to manage initiator groups
|
||||
- **Actions**: Create, update, delete, add/remove initiators
|
||||
|
||||
### 2.4 Portal Management
|
||||
**FR-ISCSI-014**: System shall allow users to create portals
|
||||
- **Input**: IP address, port
|
||||
- **Output**: Created portal with ID
|
||||
|
||||
**FR-ISCSI-015**: System shall allow users to list portals
|
||||
- **Output**: Portal list with IP, port, status
|
||||
|
||||
**FR-ISCSI-016**: System shall allow users to update portals
|
||||
- **Input**: Portal ID, updated configuration
|
||||
|
||||
**FR-ISCSI-017**: System shall allow users to delete portals
|
||||
- **Input**: Portal ID
|
||||
|
||||
### 2.5 Extent Management
|
||||
**FR-ISCSI-018**: System shall allow users to create extents
|
||||
- **Input**: Device path, size, type
|
||||
- **Output**: Created extent
|
||||
|
||||
**FR-ISCSI-019**: System shall allow users to list extents
|
||||
- **Output**: Extent list with device, size, type
|
||||
|
||||
**FR-ISCSI-020**: System shall allow users to delete extents
|
||||
- **Input**: Extent device
|
||||
|
||||
### 2.6 Configuration Management
|
||||
**FR-ISCSI-021**: System shall allow users to view SCST configuration file
|
||||
- **Output**: Current SCST configuration
|
||||
|
||||
**FR-ISCSI-022**: System shall allow users to update SCST configuration file
|
||||
- **Input**: Configuration content
|
||||
- **Validation**: Valid SCST configuration format
|
||||
|
||||
**FR-ISCSI-023**: System shall allow users to apply SCST configuration
|
||||
- **Action**: Reload SCST configuration
|
||||
- **Side Effect**: Targets may be restarted
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Target List View
|
||||
- Target cards with status indicators
|
||||
- Quick actions (enable/disable, delete)
|
||||
- Filter and search functionality
|
||||
|
||||
### 3.2 Target Detail View
|
||||
- Overview tab (target info, status)
|
||||
- LUNs tab (LUN list, add/remove)
|
||||
- Initiators tab (initiator list, add/remove)
|
||||
- Settings tab (target configuration)
|
||||
|
||||
### 3.3 Create Target Wizard
|
||||
- Target name input
|
||||
- Alias input
|
||||
- Initial LUN assignment (optional)
|
||||
- Initial initiator assignment (optional)
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/scst/targets
|
||||
GET /api/v1/scst/targets/:id
|
||||
POST /api/v1/scst/targets
|
||||
DELETE /api/v1/scst/targets/:id
|
||||
POST /api/v1/scst/targets/:id/enable
|
||||
POST /api/v1/scst/targets/:id/disable
|
||||
|
||||
POST /api/v1/scst/targets/:id/luns
|
||||
DELETE /api/v1/scst/targets/:id/luns/:lunId
|
||||
|
||||
POST /api/v1/scst/targets/:id/initiators
|
||||
GET /api/v1/scst/initiators
|
||||
GET /api/v1/scst/initiators/:id
|
||||
DELETE /api/v1/scst/initiators/:id
|
||||
|
||||
GET /api/v1/scst/initiator-groups
|
||||
GET /api/v1/scst/initiator-groups/:id
|
||||
POST /api/v1/scst/initiator-groups
|
||||
PUT /api/v1/scst/initiator-groups/:id
|
||||
DELETE /api/v1/scst/initiator-groups/:id
|
||||
POST /api/v1/scst/initiator-groups/:id/initiators
|
||||
|
||||
GET /api/v1/scst/portals
|
||||
GET /api/v1/scst/portals/:id
|
||||
POST /api/v1/scst/portals
|
||||
PUT /api/v1/scst/portals/:id
|
||||
DELETE /api/v1/scst/portals/:id
|
||||
|
||||
GET /api/v1/scst/extents
|
||||
POST /api/v1/scst/extents
|
||||
DELETE /api/v1/scst/extents/:device
|
||||
|
||||
GET /api/v1/scst/config/file
|
||||
PUT /api/v1/scst/config/file
|
||||
POST /api/v1/scst/config/apply
|
||||
|
||||
GET /api/v1/scst/handlers
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **iscsi:read**: Required for viewing targets, initiators, portals
|
||||
- **iscsi:write**: Required for creating, updating, deleting
|
||||
|
||||
## 6. Error Handling
|
||||
- Invalid IQN format
|
||||
- Target name already exists
|
||||
- Device not available
|
||||
- SCST configuration errors
|
||||
- Insufficient permissions
|
||||
|
||||
115
docs/alpha/srs/SRS-04-Tape-Library-Management.md
Normal file
115
docs/alpha/srs/SRS-04-Tape-Library-Management.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# SRS-04: Tape Library Management
|
||||
|
||||
## 1. Overview
|
||||
Tape Library Management module provides management of physical and virtual tape libraries, drives, slots, and media.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Physical Tape Library
|
||||
**FR-TAPE-001**: System shall discover physical tape libraries
|
||||
- **Action**: Scan for attached tape libraries
|
||||
- **Output**: List of discovered libraries
|
||||
|
||||
**FR-TAPE-002**: System shall list physical tape libraries
|
||||
- **Output**: Library list with vendor, model, serial number
|
||||
|
||||
**FR-TAPE-003**: System shall display physical library details
|
||||
- **Output**: Library properties, drives, slots, media
|
||||
|
||||
**FR-TAPE-004**: System shall allow users to load media
|
||||
- **Input**: Library ID, drive ID, slot ID
|
||||
- **Action**: Load tape from slot to drive
|
||||
|
||||
**FR-TAPE-005**: System shall allow users to unload media
|
||||
- **Input**: Library ID, drive ID, slot ID
|
||||
- **Action**: Unload tape from drive to slot
|
||||
|
||||
### 2.2 Virtual Tape Library (VTL)
|
||||
**FR-TAPE-006**: System shall allow users to create VTL libraries
|
||||
- **Input**: Library name, vendor, model, drive count, slot count
|
||||
- **Output**: Created VTL with ID
|
||||
|
||||
**FR-TAPE-007**: System shall allow users to list VTL libraries
|
||||
- **Output**: VTL list with status, drive count, slot count
|
||||
|
||||
**FR-TAPE-008**: System shall allow users to view VTL details
|
||||
- **Output**: VTL configuration, drives, slots, media
|
||||
|
||||
**FR-TAPE-009**: System shall allow users to update VTL libraries
|
||||
- **Input**: VTL ID, updated configuration
|
||||
|
||||
**FR-TAPE-010**: System shall allow users to delete VTL libraries
|
||||
- **Input**: VTL ID
|
||||
- **Validation**: VTL must not be in use
|
||||
|
||||
**FR-TAPE-011**: System shall allow users to start/stop VTL libraries
|
||||
- **Input**: VTL ID, action (start/stop)
|
||||
|
||||
### 2.3 Drive Management
|
||||
**FR-TAPE-012**: System shall display drive information
|
||||
- **Output**: Drive status, media loaded, position
|
||||
|
||||
**FR-TAPE-013**: System shall allow users to control drives
|
||||
- **Actions**: Load, unload, eject, rewind
|
||||
|
||||
### 2.4 Slot Management
|
||||
**FR-TAPE-014**: System shall display slot information
|
||||
- **Output**: Slot status, media present, media label
|
||||
|
||||
**FR-TAPE-015**: System shall allow users to manage slots
|
||||
- **Actions**: View media, move media
|
||||
|
||||
### 2.5 Media Management
|
||||
**FR-TAPE-016**: System shall display media inventory
|
||||
- **Output**: Media list with label, type, status, location
|
||||
|
||||
**FR-TAPE-017**: System shall allow users to label media
|
||||
- **Input**: Media ID, label
|
||||
- **Validation**: Valid label format
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Library List View
|
||||
- Physical and VTL library cards
|
||||
- Status indicators
|
||||
- Quick actions (discover, create VTL)
|
||||
|
||||
### 3.2 Library Detail View
|
||||
- Overview tab (library info, status)
|
||||
- Drives tab (drive list, controls)
|
||||
- Slots tab (slot grid, media info)
|
||||
- Media tab (media inventory)
|
||||
|
||||
### 3.3 VTL Creation Wizard
|
||||
- Library name and configuration
|
||||
- Drive and slot count
|
||||
- Vendor and model selection
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/tape/physical/libraries
|
||||
POST /api/v1/tape/physical/libraries/discover
|
||||
GET /api/v1/tape/physical/libraries/:id
|
||||
|
||||
GET /api/v1/tape/vtl/libraries
|
||||
GET /api/v1/tape/vtl/libraries/:id
|
||||
POST /api/v1/tape/vtl/libraries
|
||||
PUT /api/v1/tape/vtl/libraries/:id
|
||||
DELETE /api/v1/tape/vtl/libraries/:id
|
||||
POST /api/v1/tape/vtl/libraries/:id/start
|
||||
POST /api/v1/tape/vtl/libraries/:id/stop
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **tape:read**: Required for viewing libraries
|
||||
- **tape:write**: Required for creating, updating, deleting, controlling
|
||||
|
||||
## 6. Error Handling
|
||||
- Library not found
|
||||
- Drive not available
|
||||
- Slot already occupied
|
||||
- Media not found
|
||||
- MHVTL service errors
|
||||
- Insufficient permissions
|
||||
|
||||
130
docs/alpha/srs/SRS-05-Backup-Management.md
Normal file
130
docs/alpha/srs/SRS-05-Backup-Management.md
Normal file
@@ -0,0 +1,130 @@
|
||||
# SRS-05: Backup Management
|
||||
|
||||
## 1. Overview
|
||||
Backup Management module provides integration with Bacula/Bareos for backup job management, scheduling, and monitoring.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Backup Jobs
|
||||
**FR-BACKUP-001**: System shall allow users to create backup jobs
|
||||
- **Input**: Job name, client, fileset, schedule, storage pool
|
||||
- **Output**: Created job with ID
|
||||
- **Validation**: Valid client, fileset, schedule
|
||||
|
||||
**FR-BACKUP-002**: System shall allow users to list backup jobs
|
||||
- **Output**: Job list with status, last run, next run
|
||||
- **Filtering**: By status, client, schedule
|
||||
|
||||
**FR-BACKUP-003**: System shall allow users to view job details
|
||||
- **Output**: Job configuration, history, statistics
|
||||
|
||||
**FR-BACKUP-004**: System shall allow users to run jobs manually
|
||||
- **Input**: Job ID
|
||||
- **Action**: Trigger immediate job execution
|
||||
|
||||
**FR-BACKUP-005**: System shall display job history
|
||||
- **Output**: Job run history with status, duration, data transferred
|
||||
|
||||
### 2.2 Clients
|
||||
**FR-BACKUP-006**: System shall list backup clients
|
||||
- **Output**: Client list with status, last backup
|
||||
|
||||
**FR-BACKUP-007**: System shall display client details
|
||||
- **Output**: Client configuration, job history
|
||||
|
||||
### 2.3 Storage Pools
|
||||
**FR-BACKUP-008**: System shall allow users to create storage pools
|
||||
- **Input**: Pool name, pool type, volume count
|
||||
- **Output**: Created pool with ID
|
||||
|
||||
**FR-BACKUP-009**: System shall allow users to list storage pools
|
||||
- **Output**: Pool list with type, volume count, usage
|
||||
|
||||
**FR-BACKUP-010**: System shall allow users to delete storage pools
|
||||
- **Input**: Pool ID
|
||||
- **Validation**: Pool must not be in use
|
||||
|
||||
### 2.4 Storage Volumes
|
||||
**FR-BACKUP-011**: System shall allow users to create storage volumes
|
||||
- **Input**: Pool ID, volume name, size
|
||||
- **Output**: Created volume with ID
|
||||
|
||||
**FR-BACKUP-012**: System shall allow users to list storage volumes
|
||||
- **Output**: Volume list with status, usage, expiration
|
||||
|
||||
**FR-BACKUP-013**: System shall allow users to update storage volumes
|
||||
- **Input**: Volume ID, updated properties
|
||||
|
||||
**FR-BACKUP-014**: System shall allow users to delete storage volumes
|
||||
- **Input**: Volume ID
|
||||
|
||||
### 2.5 Media Management
|
||||
**FR-BACKUP-015**: System shall list backup media
|
||||
- **Output**: Media list with label, type, status, location
|
||||
|
||||
**FR-BACKUP-016**: System shall display media details
|
||||
- **Output**: Media properties, job history, usage
|
||||
|
||||
### 2.6 Dashboard Statistics
|
||||
**FR-BACKUP-017**: System shall display backup dashboard statistics
|
||||
- **Output**: Total jobs, running jobs, success rate, data backed up
|
||||
|
||||
### 2.7 Bconsole Integration
|
||||
**FR-BACKUP-018**: System shall allow users to execute bconsole commands
|
||||
- **Input**: Command string
|
||||
- **Output**: Command output
|
||||
- **Validation**: Allowed commands only
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Backup Dashboard
|
||||
- Statistics cards (total jobs, running, success rate)
|
||||
- Recent job activity
|
||||
- Quick actions
|
||||
|
||||
### 3.2 Job Management
|
||||
- Job list with filtering
|
||||
- Job creation wizard
|
||||
- Job detail view with history
|
||||
- Job run controls
|
||||
|
||||
### 3.3 Storage Management
|
||||
- Storage pool list and management
|
||||
- Volume list and management
|
||||
- Media inventory
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/backup/dashboard/stats
|
||||
GET /api/v1/backup/jobs
|
||||
GET /api/v1/backup/jobs/:id
|
||||
POST /api/v1/backup/jobs
|
||||
|
||||
GET /api/v1/backup/clients
|
||||
GET /api/v1/backup/storage/pools
|
||||
POST /api/v1/backup/storage/pools
|
||||
DELETE /api/v1/backup/storage/pools/:id
|
||||
|
||||
GET /api/v1/backup/storage/volumes
|
||||
POST /api/v1/backup/storage/volumes
|
||||
PUT /api/v1/backup/storage/volumes/:id
|
||||
DELETE /api/v1/backup/storage/volumes/:id
|
||||
|
||||
GET /api/v1/backup/media
|
||||
GET /api/v1/backup/storage/daemons
|
||||
|
||||
POST /api/v1/backup/console/execute
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **backup:read**: Required for viewing jobs, clients, storage
|
||||
- **backup:write**: Required for creating, updating, deleting, executing
|
||||
|
||||
## 6. Error Handling
|
||||
- Bacula/Bareos connection errors
|
||||
- Invalid job configuration
|
||||
- Job execution failures
|
||||
- Storage pool/volume errors
|
||||
- Insufficient permissions
|
||||
|
||||
111
docs/alpha/srs/SRS-06-Object-Storage.md
Normal file
111
docs/alpha/srs/SRS-06-Object-Storage.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# SRS-06: Object Storage
|
||||
|
||||
## 1. Overview
|
||||
Object Storage module provides S3-compatible object storage service management including buckets, access policies, and user/key management.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Bucket Management
|
||||
**FR-OBJ-001**: System shall allow users to create buckets
|
||||
- **Input**: Bucket name, access policy (private/public-read)
|
||||
- **Output**: Created bucket with ID
|
||||
- **Validation**: Bucket name uniqueness, valid S3 naming
|
||||
|
||||
**FR-OBJ-002**: System shall allow users to list buckets
|
||||
- **Output**: Bucket list with name, type, usage, object count
|
||||
- **Filtering**: By name, type, access policy
|
||||
|
||||
**FR-OBJ-003**: System shall allow users to view bucket details
|
||||
- **Output**: Bucket configuration, usage statistics, access policy
|
||||
|
||||
**FR-OBJ-004**: System shall allow users to delete buckets
|
||||
- **Input**: Bucket ID
|
||||
- **Validation**: Bucket must be empty or confirmation required
|
||||
|
||||
**FR-OBJ-005**: System shall display bucket usage
|
||||
- **Output**: Storage used, object count, last modified
|
||||
|
||||
### 2.2 Access Policy Management
|
||||
**FR-OBJ-006**: System shall allow users to configure bucket access policies
|
||||
- **Input**: Bucket ID, access policy (private, public-read, public-read-write)
|
||||
- **Output**: Updated access policy
|
||||
|
||||
**FR-OBJ-007**: System shall display current access policy
|
||||
- **Output**: Policy type, policy document
|
||||
|
||||
### 2.3 User & Key Management
|
||||
**FR-OBJ-008**: System shall allow users to create S3 users
|
||||
- **Input**: Username, access level
|
||||
- **Output**: Created user with access keys
|
||||
|
||||
**FR-OBJ-009**: System shall allow users to list S3 users
|
||||
- **Output**: User list with access level, key count
|
||||
|
||||
**FR-OBJ-010**: System shall allow users to generate access keys
|
||||
- **Input**: User ID
|
||||
- **Output**: Access key ID and secret key
|
||||
|
||||
**FR-OBJ-011**: System shall allow users to revoke access keys
|
||||
- **Input**: User ID, key ID
|
||||
|
||||
### 2.4 Service Management
|
||||
**FR-OBJ-012**: System shall display service status
|
||||
- **Output**: Service status (running/stopped), uptime
|
||||
|
||||
**FR-OBJ-013**: System shall display service statistics
|
||||
- **Output**: Total usage, object count, endpoint URL
|
||||
|
||||
**FR-OBJ-014**: System shall display S3 endpoint URL
|
||||
- **Output**: Endpoint URL with copy functionality
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Object Storage Dashboard
|
||||
- Service status card
|
||||
- Statistics cards (total usage, object count, uptime)
|
||||
- S3 endpoint display with copy button
|
||||
|
||||
### 3.2 Bucket Management
|
||||
- Bucket list with search and filter
|
||||
- Bucket creation modal
|
||||
- Bucket detail view with tabs (Overview, Settings, Access Policy)
|
||||
- Bucket actions (delete, configure)
|
||||
|
||||
### 3.3 Tabs
|
||||
- **Buckets**: Main bucket management
|
||||
- **Users & Keys**: S3 user and access key management
|
||||
- **Monitoring**: Usage statistics and monitoring
|
||||
- **Settings**: Service configuration
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/object-storage/buckets
|
||||
GET /api/v1/object-storage/buckets/:id
|
||||
POST /api/v1/object-storage/buckets
|
||||
DELETE /api/v1/object-storage/buckets/:id
|
||||
PUT /api/v1/object-storage/buckets/:id/policy
|
||||
|
||||
GET /api/v1/object-storage/users
|
||||
POST /api/v1/object-storage/users
|
||||
GET /api/v1/object-storage/users/:id/keys
|
||||
POST /api/v1/object-storage/users/:id/keys
|
||||
DELETE /api/v1/object-storage/users/:id/keys/:keyId
|
||||
|
||||
GET /api/v1/object-storage/service/status
|
||||
GET /api/v1/object-storage/service/stats
|
||||
GET /api/v1/object-storage/service/endpoint
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **object-storage:read**: Required for viewing buckets, users
|
||||
- **object-storage:write**: Required for creating, updating, deleting
|
||||
|
||||
## 6. Error Handling
|
||||
- Invalid bucket name
|
||||
- Bucket already exists
|
||||
- Bucket not empty
|
||||
- Invalid access policy
|
||||
- Service not available
|
||||
- Insufficient permissions
|
||||
|
||||
145
docs/alpha/srs/SRS-07-Snapshot-Replication.md
Normal file
145
docs/alpha/srs/SRS-07-Snapshot-Replication.md
Normal file
@@ -0,0 +1,145 @@
|
||||
# SRS-07: Snapshot & Replication
|
||||
|
||||
## 1. Overview
|
||||
Snapshot & Replication module provides ZFS snapshot management and remote replication task configuration.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Snapshot Management
|
||||
**FR-SNAP-001**: System shall allow users to create snapshots
|
||||
- **Input**: Dataset name, snapshot name
|
||||
- **Output**: Created snapshot with timestamp
|
||||
- **Validation**: Dataset exists, snapshot name uniqueness
|
||||
|
||||
**FR-SNAP-002**: System shall allow users to list snapshots
|
||||
- **Output**: Snapshot list with name, dataset, created date, referenced size
|
||||
- **Filtering**: By dataset, date range, name
|
||||
|
||||
**FR-SNAP-003**: System shall allow users to view snapshot details
|
||||
- **Output**: Snapshot properties, dataset, size, creation date
|
||||
|
||||
**FR-SNAP-004**: System shall allow users to delete snapshots
|
||||
- **Input**: Snapshot ID
|
||||
- **Validation**: Snapshot not in use
|
||||
|
||||
**FR-SNAP-005**: System shall allow users to rollback to snapshot
|
||||
- **Input**: Snapshot ID
|
||||
- **Warning**: Data loss warning required
|
||||
- **Action**: Rollback dataset to snapshot state
|
||||
|
||||
**FR-SNAP-006**: System shall allow users to clone snapshots
|
||||
- **Input**: Snapshot ID, clone name
|
||||
- **Output**: Created clone dataset
|
||||
|
||||
**FR-SNAP-007**: System shall display snapshot retention information
|
||||
- **Output**: Snapshots marked for expiration, retention policy
|
||||
|
||||
### 2.2 Replication Management
|
||||
**FR-SNAP-008**: System shall allow users to create replication tasks
|
||||
- **Input**: Task name, source dataset, target host, target dataset, schedule, compression
|
||||
- **Output**: Created replication task with ID
|
||||
- **Validation**: Valid source dataset, target host reachable
|
||||
|
||||
**FR-SNAP-009**: System shall allow users to list replication tasks
|
||||
- **Output**: Task list with status, last run, next run
|
||||
|
||||
**FR-SNAP-010**: System shall allow users to view replication task details
|
||||
- **Output**: Task configuration, history, status
|
||||
|
||||
**FR-SNAP-011**: System shall allow users to update replication tasks
|
||||
- **Input**: Task ID, updated configuration
|
||||
|
||||
**FR-SNAP-012**: System shall allow users to delete replication tasks
|
||||
- **Input**: Task ID
|
||||
|
||||
**FR-SNAP-013**: System shall display replication status
|
||||
- **Output**: Task status (idle, running, error), progress percentage
|
||||
|
||||
**FR-SNAP-014**: System shall allow users to run replication manually
|
||||
- **Input**: Task ID
|
||||
- **Action**: Trigger immediate replication
|
||||
|
||||
### 2.3 Replication Configuration
|
||||
**FR-SNAP-015**: System shall allow users to configure replication schedule
|
||||
- **Input**: Schedule type (hourly, daily, weekly, monthly, custom cron)
|
||||
- **Input**: Schedule time
|
||||
|
||||
**FR-SNAP-016**: System shall allow users to configure target settings
|
||||
- **Input**: Target host, SSH port, target user, target dataset
|
||||
|
||||
**FR-SNAP-017**: System shall allow users to configure compression
|
||||
- **Input**: Compression type (off, lz4, gzip, zstd)
|
||||
|
||||
**FR-SNAP-018**: System shall allow users to configure replication options
|
||||
- **Input**: Recursive flag, auto-snapshot flag, encryption flag
|
||||
|
||||
### 2.4 Restore Points
|
||||
**FR-SNAP-019**: System shall display restore points
|
||||
- **Output**: Available restore points from snapshots
|
||||
|
||||
**FR-SNAP-020**: System shall allow users to restore from snapshot
|
||||
- **Input**: Snapshot ID, restore target
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Snapshot & Replication Dashboard
|
||||
- Statistics cards (total snapshots, last replication, next scheduled)
|
||||
- Quick actions (create snapshot, view logs)
|
||||
|
||||
### 3.2 Tabs
|
||||
- **Snapshots**: Snapshot list and management
|
||||
- **Replication Tasks**: Replication task management
|
||||
- **Restore Points**: Restore point management
|
||||
|
||||
### 3.3 Snapshot List
|
||||
- Table view with columns (name, dataset, created, referenced, actions)
|
||||
- Search and filter functionality
|
||||
- Pagination
|
||||
- Bulk actions (select multiple)
|
||||
|
||||
### 3.4 Replication Task Management
|
||||
- Task list with status indicators
|
||||
- Task creation wizard
|
||||
- Task detail view with progress
|
||||
|
||||
### 3.5 Create Replication Modal
|
||||
- Task name input
|
||||
- Source dataset selection
|
||||
- Target configuration (host, port, user, dataset)
|
||||
- Schedule configuration
|
||||
- Compression and options
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/snapshots
|
||||
GET /api/v1/snapshots/:id
|
||||
POST /api/v1/snapshots
|
||||
DELETE /api/v1/snapshots/:id
|
||||
POST /api/v1/snapshots/:id/rollback
|
||||
POST /api/v1/snapshots/:id/clone
|
||||
|
||||
GET /api/v1/replication/tasks
|
||||
GET /api/v1/replication/tasks/:id
|
||||
POST /api/v1/replication/tasks
|
||||
PUT /api/v1/replication/tasks/:id
|
||||
DELETE /api/v1/replication/tasks/:id
|
||||
POST /api/v1/replication/tasks/:id/run
|
||||
GET /api/v1/replication/tasks/:id/status
|
||||
|
||||
GET /api/v1/restore-points
|
||||
POST /api/v1/restore-points/restore
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **storage:read**: Required for viewing snapshots and replication tasks
|
||||
- **storage:write**: Required for creating, updating, deleting, executing
|
||||
|
||||
## 6. Error Handling
|
||||
- Invalid dataset
|
||||
- Snapshot not found
|
||||
- Replication target unreachable
|
||||
- SSH authentication failure
|
||||
- Replication task errors
|
||||
- Insufficient permissions
|
||||
|
||||
167
docs/alpha/srs/SRS-08-System-Management.md
Normal file
167
docs/alpha/srs/SRS-08-System-Management.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# SRS-08: System Management
|
||||
|
||||
## 1. Overview
|
||||
System Management module provides configuration and management of system services, network interfaces, time synchronization, and system administration features.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Network Interface Management
|
||||
**FR-SYS-001**: System shall list network interfaces
|
||||
- **Output**: Interface list with name, IP address, status, speed
|
||||
- **Refresh**: Auto-refresh every 5 seconds
|
||||
|
||||
**FR-SYS-002**: System shall allow users to view interface details
|
||||
- **Output**: Interface properties, IP configuration, statistics
|
||||
|
||||
**FR-SYS-003**: System shall allow users to update interface configuration
|
||||
- **Input**: Interface name, IP address, subnet, gateway
|
||||
- **Validation**: Valid IP configuration
|
||||
|
||||
**FR-SYS-004**: System shall display interface status
|
||||
- **Output**: Connection status (Connected/Down), speed, role
|
||||
|
||||
### 2.2 Service Management
|
||||
**FR-SYS-005**: System shall list system services
|
||||
- **Output**: Service list with name, status, description
|
||||
- **Refresh**: Auto-refresh every 5 seconds
|
||||
|
||||
**FR-SYS-006**: System shall allow users to view service status
|
||||
- **Output**: Service status (active/inactive), enabled state
|
||||
|
||||
**FR-SYS-007**: System shall allow users to restart services
|
||||
- **Input**: Service name
|
||||
- **Action**: Restart service via systemd
|
||||
|
||||
**FR-SYS-008**: System shall allow users to start/stop services
|
||||
- **Input**: Service name, action (start/stop)
|
||||
|
||||
**FR-SYS-009**: System shall display service logs
|
||||
- **Input**: Service name
|
||||
- **Output**: Recent service logs
|
||||
|
||||
### 2.3 NTP Configuration
|
||||
**FR-SYS-010**: System shall allow users to configure timezone
|
||||
- **Input**: Timezone string
|
||||
- **Output**: Updated timezone
|
||||
|
||||
**FR-SYS-011**: System shall allow users to configure NTP servers
|
||||
- **Input**: NTP server list
|
||||
- **Output**: Updated NTP configuration
|
||||
|
||||
**FR-SYS-012**: System shall allow users to add NTP servers
|
||||
- **Input**: NTP server address
|
||||
- **Validation**: Valid NTP server address
|
||||
|
||||
**FR-SYS-013**: System shall allow users to remove NTP servers
|
||||
- **Input**: NTP server address
|
||||
|
||||
**FR-SYS-014**: System shall display NTP server status
|
||||
- **Output**: Server status, stratum, latency
|
||||
|
||||
### 2.4 SNMP Configuration
|
||||
**FR-SYS-015**: System shall allow users to enable/disable SNMP
|
||||
- **Input**: Enabled flag
|
||||
- **Action**: Enable/disable SNMP service
|
||||
|
||||
**FR-SYS-016**: System shall allow users to configure SNMP community string
|
||||
- **Input**: Community string
|
||||
- **Output**: Updated SNMP configuration
|
||||
|
||||
**FR-SYS-017**: System shall allow users to configure SNMP trap receiver
|
||||
- **Input**: Trap receiver IP address
|
||||
- **Output**: Updated SNMP configuration
|
||||
|
||||
### 2.5 System Logs
|
||||
**FR-SYS-018**: System shall allow users to view system logs
|
||||
- **Output**: System log entries with timestamp, level, message
|
||||
- **Filtering**: By level, time range, search
|
||||
|
||||
### 2.6 Terminal Console
|
||||
**FR-SYS-019**: System shall provide terminal console access
|
||||
- **Input**: Command string
|
||||
- **Output**: Command output
|
||||
- **Validation**: Allowed commands only (for security)
|
||||
|
||||
### 2.7 Feature License Management
|
||||
**FR-SYS-020**: System shall display license status
|
||||
- **Output**: License status (active/expired), expiration date, days remaining
|
||||
|
||||
**FR-SYS-021**: System shall display enabled features
|
||||
- **Output**: Feature list with enabled/disabled status
|
||||
|
||||
**FR-SYS-022**: System shall allow users to update license key
|
||||
- **Input**: License key
|
||||
- **Validation**: Valid license key format
|
||||
- **Action**: Update and validate license
|
||||
|
||||
**FR-SYS-023**: System shall allow users to download license information
|
||||
- **Output**: License information file
|
||||
|
||||
### 2.8 System Actions
|
||||
**FR-SYS-024**: System shall allow users to reboot system
|
||||
- **Action**: System reboot (with confirmation)
|
||||
|
||||
**FR-SYS-025**: System shall allow users to shutdown system
|
||||
- **Action**: System shutdown (with confirmation)
|
||||
|
||||
**FR-SYS-026**: System shall allow users to generate support bundle
|
||||
- **Output**: Support bundle archive
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 System Configuration Dashboard
|
||||
- Network interfaces card
|
||||
- Service control card
|
||||
- NTP configuration card
|
||||
- Management & SNMP card
|
||||
- Feature License card
|
||||
|
||||
### 3.2 Network Interface Management
|
||||
- Interface list with status indicators
|
||||
- Interface detail modal
|
||||
- Edit interface modal
|
||||
|
||||
### 3.3 Service Control
|
||||
- Service list with toggle switches
|
||||
- Service status indicators
|
||||
- Service log viewing
|
||||
|
||||
### 3.4 License Management
|
||||
- License status display
|
||||
- Enabled features list
|
||||
- Update license key modal
|
||||
- Download license info button
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/system/interfaces
|
||||
PUT /api/v1/system/interfaces/:name
|
||||
|
||||
GET /api/v1/system/services
|
||||
GET /api/v1/system/services/:name
|
||||
POST /api/v1/system/services/:name/restart
|
||||
GET /api/v1/system/services/:name/logs
|
||||
|
||||
GET /api/v1/system/ntp
|
||||
POST /api/v1/system/ntp
|
||||
|
||||
GET /api/v1/system/logs
|
||||
GET /api/v1/system/network/throughput
|
||||
|
||||
POST /api/v1/system/execute
|
||||
POST /api/v1/system/support-bundle
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **system:read**: Required for viewing interfaces, services, logs
|
||||
- **system:write**: Required for updating configuration, executing commands
|
||||
|
||||
## 6. Error Handling
|
||||
- Invalid IP configuration
|
||||
- Service not found
|
||||
- Service restart failures
|
||||
- Invalid NTP server
|
||||
- License validation errors
|
||||
- Insufficient permissions
|
||||
|
||||
127
docs/alpha/srs/SRS-09-Monitoring-Alerting.md
Normal file
127
docs/alpha/srs/SRS-09-Monitoring-Alerting.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# SRS-09: Monitoring & Alerting
|
||||
|
||||
## 1. Overview
|
||||
Monitoring & Alerting module provides real-time system monitoring, metrics collection, alert management, and system health tracking.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 System Metrics
|
||||
**FR-MON-001**: System shall collect and display CPU metrics
|
||||
- **Output**: CPU usage percentage, load average
|
||||
- **Refresh**: Every 5 seconds
|
||||
|
||||
**FR-MON-002**: System shall collect and display memory metrics
|
||||
- **Output**: Total memory, used memory, available memory, usage percentage
|
||||
- **Refresh**: Every 5 seconds
|
||||
|
||||
**FR-MON-003**: System shall collect and display storage metrics
|
||||
- **Output**: Total capacity, used capacity, available capacity, usage percentage
|
||||
- **Refresh**: Every 5 seconds
|
||||
|
||||
**FR-MON-004**: System shall collect and display network throughput
|
||||
- **Output**: Inbound/outbound throughput, historical data
|
||||
- **Refresh**: Every 5 seconds
|
||||
|
||||
**FR-MON-005**: System shall display ZFS ARC statistics
|
||||
- **Output**: ARC hit ratio, cache size, eviction statistics
|
||||
- **Refresh**: Real-time
|
||||
|
||||
### 2.2 ZFS Health Monitoring
|
||||
**FR-MON-006**: System shall display ZFS pool health
|
||||
- **Output**: Pool status, health indicators, errors
|
||||
|
||||
**FR-MON-007**: System shall display ZFS dataset health
|
||||
- **Output**: Dataset status, quota usage, compression ratio
|
||||
|
||||
### 2.3 System Logs
|
||||
**FR-MON-008**: System shall display system logs
|
||||
- **Output**: Log entries with timestamp, level, source, message
|
||||
- **Filtering**: By level, time range, search
|
||||
- **Refresh**: Every 10 minutes
|
||||
|
||||
**FR-MON-009**: System shall allow users to search logs
|
||||
- **Input**: Search query
|
||||
- **Output**: Filtered log entries
|
||||
|
||||
### 2.4 Active Jobs
|
||||
**FR-MON-010**: System shall display active jobs
|
||||
- **Output**: Job list with type, status, progress, start time
|
||||
|
||||
**FR-MON-011**: System shall allow users to view job details
|
||||
- **Output**: Job configuration, progress, logs
|
||||
|
||||
### 2.5 Alert Management
|
||||
**FR-MON-012**: System shall display active alerts
|
||||
- **Output**: Alert list with severity, source, message, timestamp
|
||||
|
||||
**FR-MON-013**: System shall allow users to acknowledge alerts
|
||||
- **Input**: Alert ID
|
||||
- **Action**: Mark alert as acknowledged
|
||||
|
||||
**FR-MON-014**: System shall allow users to resolve alerts
|
||||
- **Input**: Alert ID
|
||||
- **Action**: Mark alert as resolved
|
||||
|
||||
**FR-MON-015**: System shall display alert history
|
||||
- **Output**: Historical alerts with status, resolution
|
||||
|
||||
**FR-MON-016**: System shall allow users to configure alert rules
|
||||
- **Input**: Rule name, condition, severity, enabled flag
|
||||
- **Output**: Created alert rule
|
||||
|
||||
**FR-MON-017**: System shall evaluate alert rules
|
||||
- **Action**: Automatic evaluation based on metrics
|
||||
- **Output**: Generated alerts when conditions met
|
||||
|
||||
### 2.6 Health Checks
|
||||
**FR-MON-018**: System shall perform health checks
|
||||
- **Output**: Overall system health status (healthy/degraded/unhealthy)
|
||||
|
||||
**FR-MON-019**: System shall display health check details
|
||||
- **Output**: Component health status, issues, recommendations
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 Monitoring Dashboard
|
||||
- Metrics cards (CPU, Memory, Storage, Network)
|
||||
- Real-time charts (Network Throughput, ZFS ARC Hit Ratio)
|
||||
- System health indicators
|
||||
|
||||
### 3.2 Tabs
|
||||
- **Active Jobs**: Running jobs list
|
||||
- **System Logs**: Log viewer with filtering
|
||||
- **Alerts History**: Alert list and management
|
||||
|
||||
### 3.3 Alert Management
|
||||
- Alert list with severity indicators
|
||||
- Alert detail view
|
||||
- Alert acknowledgment and resolution
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/monitoring/metrics
|
||||
GET /api/v1/monitoring/health
|
||||
GET /api/v1/monitoring/alerts
|
||||
GET /api/v1/monitoring/alerts/:id
|
||||
POST /api/v1/monitoring/alerts/:id/acknowledge
|
||||
POST /api/v1/monitoring/alerts/:id/resolve
|
||||
GET /api/v1/monitoring/rules
|
||||
POST /api/v1/monitoring/rules
|
||||
PUT /api/v1/monitoring/rules/:id
|
||||
DELETE /api/v1/monitoring/rules/:id
|
||||
|
||||
GET /api/v1/system/logs
|
||||
GET /api/v1/system/network/throughput
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **monitoring:read**: Required for viewing metrics, alerts, logs
|
||||
- **monitoring:write**: Required for acknowledging/resolving alerts, configuring rules
|
||||
|
||||
## 6. Error Handling
|
||||
- Metrics collection failures
|
||||
- Alert rule evaluation errors
|
||||
- Log access errors
|
||||
- Insufficient permissions
|
||||
|
||||
191
docs/alpha/srs/SRS-10-IAM.md
Normal file
191
docs/alpha/srs/SRS-10-IAM.md
Normal file
@@ -0,0 +1,191 @@
|
||||
# SRS-10: Identity & Access Management
|
||||
|
||||
## 1. Overview
|
||||
Identity & Access Management (IAM) module provides user account management, role-based access control (RBAC), permission management, and group management.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 User Management
|
||||
**FR-IAM-001**: System shall allow admins to create users
|
||||
- **Input**: Username, email, password, roles
|
||||
- **Output**: Created user with ID
|
||||
- **Validation**: Username uniqueness, valid email, strong password
|
||||
|
||||
**FR-IAM-002**: System shall allow admins to list users
|
||||
- **Output**: User list with username, email, roles, status
|
||||
- **Filtering**: By role, status, search
|
||||
|
||||
**FR-IAM-003**: System shall allow admins to view user details
|
||||
- **Output**: User properties, roles, groups, permissions
|
||||
|
||||
**FR-IAM-004**: System shall allow admins to update users
|
||||
- **Input**: User ID, updated properties
|
||||
- **Validation**: Valid updated values
|
||||
|
||||
**FR-IAM-005**: System shall allow admins to delete users
|
||||
- **Input**: User ID
|
||||
- **Validation**: Cannot delete own account
|
||||
|
||||
**FR-IAM-006**: System shall allow users to view own profile
|
||||
- **Output**: Own user properties, roles, permissions
|
||||
|
||||
**FR-IAM-007**: System shall allow users to update own profile
|
||||
- **Input**: Updated profile properties (email, password)
|
||||
- **Validation**: Valid updated values
|
||||
|
||||
### 2.2 Role Management
|
||||
**FR-IAM-008**: System shall allow admins to create roles
|
||||
- **Input**: Role name, description, permissions
|
||||
- **Output**: Created role with ID
|
||||
- **Validation**: Role name uniqueness
|
||||
|
||||
**FR-IAM-009**: System shall allow admins to list roles
|
||||
- **Output**: Role list with name, description, permission count
|
||||
|
||||
**FR-IAM-010**: System shall allow admins to view role details
|
||||
- **Output**: Role properties, assigned permissions, users with role
|
||||
|
||||
**FR-IAM-011**: System shall allow admins to update roles
|
||||
- **Input**: Role ID, updated properties
|
||||
|
||||
**FR-IAM-012**: System shall allow admins to delete roles
|
||||
- **Input**: Role ID
|
||||
- **Validation**: Role not assigned to users
|
||||
|
||||
**FR-IAM-013**: System shall allow admins to assign permissions to roles
|
||||
- **Input**: Role ID, permission ID
|
||||
- **Action**: Add permission to role
|
||||
|
||||
**FR-IAM-014**: System shall allow admins to remove permissions from roles
|
||||
- **Input**: Role ID, permission ID
|
||||
- **Action**: Remove permission from role
|
||||
|
||||
### 2.3 Permission Management
|
||||
**FR-IAM-015**: System shall list available permissions
|
||||
- **Output**: Permission list with resource, action, description
|
||||
|
||||
**FR-IAM-016**: System shall display permission details
|
||||
- **Output**: Permission properties, roles with permission
|
||||
|
||||
### 2.4 Group Management
|
||||
**FR-IAM-017**: System shall allow admins to create groups
|
||||
- **Input**: Group name, description
|
||||
- **Output**: Created group with ID
|
||||
|
||||
**FR-IAM-018**: System shall allow admins to list groups
|
||||
- **Output**: Group list with name, description, member count
|
||||
|
||||
**FR-IAM-019**: System shall allow admins to view group details
|
||||
- **Output**: Group properties, members, roles
|
||||
|
||||
**FR-IAM-020**: System shall allow admins to update groups
|
||||
- **Input**: Group ID, updated properties
|
||||
|
||||
**FR-IAM-021**: System shall allow admins to delete groups
|
||||
- **Input**: Group ID
|
||||
|
||||
**FR-IAM-022**: System shall allow admins to add users to groups
|
||||
- **Input**: Group ID, user ID
|
||||
- **Action**: Add user to group
|
||||
|
||||
**FR-IAM-023**: System shall allow admins to remove users from groups
|
||||
- **Input**: Group ID, user ID
|
||||
- **Action**: Remove user from group
|
||||
|
||||
### 2.5 User-Role Assignment
|
||||
**FR-IAM-024**: System shall allow admins to assign roles to users
|
||||
- **Input**: User ID, role ID
|
||||
- **Action**: Assign role to user
|
||||
|
||||
**FR-IAM-025**: System shall allow admins to remove roles from users
|
||||
- **Input**: User ID, role ID
|
||||
- **Action**: Remove role from user
|
||||
|
||||
### 2.6 Authentication
|
||||
**FR-IAM-026**: System shall authenticate users
|
||||
- **Input**: Username, password
|
||||
- **Output**: JWT token on success
|
||||
- **Validation**: Valid credentials
|
||||
|
||||
**FR-IAM-027**: System shall manage user sessions
|
||||
- **Output**: Current user information, session expiration
|
||||
|
||||
**FR-IAM-028**: System shall allow users to logout
|
||||
- **Action**: Invalidate session token
|
||||
|
||||
## 3. User Interface Requirements
|
||||
|
||||
### 3.1 IAM Dashboard
|
||||
- User management tab
|
||||
- Role management tab
|
||||
- Group management tab
|
||||
- Permission overview
|
||||
|
||||
### 3.2 User Management
|
||||
- User list with filtering
|
||||
- User creation modal
|
||||
- User detail view
|
||||
- User edit form
|
||||
|
||||
### 3.3 Role Management
|
||||
- Role list with permission count
|
||||
- Role creation modal
|
||||
- Role detail view with permission assignment
|
||||
- Role edit form
|
||||
|
||||
### 3.4 Group Management
|
||||
- Group list with member count
|
||||
- Group creation modal
|
||||
- Group detail view with member management
|
||||
- Group edit form
|
||||
|
||||
## 4. API Endpoints
|
||||
|
||||
```
|
||||
GET /api/v1/iam/users
|
||||
GET /api/v1/iam/users/:id
|
||||
POST /api/v1/iam/users
|
||||
PUT /api/v1/iam/users/:id
|
||||
DELETE /api/v1/iam/users/:id
|
||||
|
||||
POST /api/v1/iam/users/:id/roles
|
||||
DELETE /api/v1/iam/users/:id/roles
|
||||
POST /api/v1/iam/users/:id/groups
|
||||
DELETE /api/v1/iam/users/:id/groups
|
||||
|
||||
GET /api/v1/iam/roles
|
||||
GET /api/v1/iam/roles/:id
|
||||
POST /api/v1/iam/roles
|
||||
PUT /api/v1/iam/roles/:id
|
||||
DELETE /api/v1/iam/roles/:id
|
||||
|
||||
GET /api/v1/iam/roles/:id/permissions
|
||||
POST /api/v1/iam/roles/:id/permissions
|
||||
DELETE /api/v1/iam/roles/:id/permissions
|
||||
|
||||
GET /api/v1/iam/permissions
|
||||
|
||||
GET /api/v1/iam/groups
|
||||
GET /api/v1/iam/groups/:id
|
||||
POST /api/v1/iam/groups
|
||||
PUT /api/v1/iam/groups/:id
|
||||
DELETE /api/v1/iam/groups/:id
|
||||
|
||||
POST /api/v1/iam/groups/:id/users
|
||||
DELETE /api/v1/iam/groups/:id/users/:user_id
|
||||
```
|
||||
|
||||
## 5. Permissions
|
||||
- **iam:read**: Required for viewing users, roles, groups
|
||||
- **iam:write**: Required for creating, updating, deleting
|
||||
- **admin role**: Required for all IAM operations
|
||||
|
||||
## 6. Error Handling
|
||||
- Username already exists
|
||||
- Invalid email format
|
||||
- Weak password
|
||||
- Role not found
|
||||
- Permission denied
|
||||
- Cannot delete own account
|
||||
- Insufficient permissions
|
||||
|
||||
179
docs/alpha/srs/SRS-11-User-Interface.md
Normal file
179
docs/alpha/srs/SRS-11-User-Interface.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# SRS-11: User Interface & Experience
|
||||
|
||||
## 1. Overview
|
||||
User Interface & Experience module defines the requirements for the web-based user interface, navigation, responsiveness, and user experience.
|
||||
|
||||
## 2. Functional Requirements
|
||||
|
||||
### 2.1 Layout & Navigation
|
||||
**FR-UI-001**: System shall provide a consistent layout structure
|
||||
- **Components**: Header, sidebar navigation, main content area, footer
|
||||
- **Responsive**: Adapt to different screen sizes
|
||||
|
||||
**FR-UI-002**: System shall provide sidebar navigation
|
||||
- **Features**: Collapsible sidebar, active route highlighting, icon-based navigation
|
||||
- **Items**: Dashboard, Storage, Object Storage, Shares, Snapshots, Tape, iSCSI, Backup, Terminal, Monitoring, Alerts, System, IAM
|
||||
|
||||
**FR-UI-003**: System shall provide breadcrumb navigation
|
||||
- **Features**: Hierarchical navigation path, clickable breadcrumbs
|
||||
|
||||
**FR-UI-004**: System shall provide user profile menu
|
||||
- **Features**: User info, logout option, profile link
|
||||
|
||||
### 2.2 Authentication UI
|
||||
**FR-UI-005**: System shall provide login page
|
||||
- **Components**: Username input, password input, login button, error messages
|
||||
- **Validation**: Real-time validation feedback
|
||||
|
||||
**FR-UI-006**: System shall handle authentication errors
|
||||
- **Display**: Clear error messages for invalid credentials
|
||||
|
||||
**FR-UI-007**: System shall redirect authenticated users
|
||||
- **Action**: Redirect to dashboard if already logged in
|
||||
|
||||
### 2.3 Dashboard
|
||||
**FR-UI-008**: System shall provide system overview dashboard
|
||||
- **Components**: System status, metrics cards, recent activity, quick actions
|
||||
- **Refresh**: Auto-refresh metrics
|
||||
|
||||
**FR-UI-009**: System shall display system health indicators
|
||||
- **Components**: Health status badge, component status indicators
|
||||
|
||||
### 2.4 Data Display
|
||||
**FR-UI-010**: System shall provide table views
|
||||
- **Features**: Sorting, filtering, pagination, search
|
||||
- **Responsive**: Mobile-friendly table layout
|
||||
|
||||
**FR-UI-011**: System shall provide card-based layouts
|
||||
- **Features**: Status indicators, quick actions, hover effects
|
||||
|
||||
**FR-UI-012**: System shall provide master-detail views
|
||||
- **Features**: List on left, details on right, selection highlighting
|
||||
|
||||
### 2.5 Forms & Modals
|
||||
**FR-UI-013**: System shall provide form inputs
|
||||
- **Types**: Text, number, select, checkbox, radio, textarea, file
|
||||
- **Validation**: Real-time validation, error messages
|
||||
|
||||
**FR-UI-014**: System shall provide modal dialogs
|
||||
- **Features**: Overlay, close button, form submission, loading states
|
||||
|
||||
**FR-UI-015**: System shall provide confirmation dialogs
|
||||
- **Features**: Warning messages, confirm/cancel actions
|
||||
|
||||
### 2.6 Feedback & Notifications
|
||||
**FR-UI-016**: System shall provide loading states
|
||||
- **Components**: Spinners, skeleton loaders, progress indicators
|
||||
|
||||
**FR-UI-017**: System shall provide success notifications
|
||||
- **Display**: Toast notifications, inline success messages
|
||||
|
||||
**FR-UI-018**: System shall provide error notifications
|
||||
- **Display**: Toast notifications, inline error messages, error pages
|
||||
|
||||
**FR-UI-019**: System shall provide warning notifications
|
||||
- **Display**: Warning dialogs, warning badges
|
||||
|
||||
### 2.7 Charts & Visualizations
|
||||
**FR-UI-020**: System shall provide metric charts
|
||||
- **Types**: Line charts, bar charts, pie charts, gauge charts
|
||||
- **Libraries**: Recharts integration
|
||||
|
||||
**FR-UI-021**: System shall provide real-time chart updates
|
||||
- **Refresh**: Auto-refresh chart data
|
||||
|
||||
### 2.8 Responsive Design
|
||||
**FR-UI-022**: System shall be responsive
|
||||
- **Breakpoints**: Mobile (< 640px), Tablet (640px - 1024px), Desktop (> 1024px)
|
||||
- **Adaptation**: Layout adjustments, menu collapse, touch-friendly controls
|
||||
|
||||
**FR-UI-023**: System shall support dark theme
|
||||
- **Features**: Dark color scheme, theme persistence
|
||||
|
||||
### 2.9 Accessibility
|
||||
**FR-UI-024**: System shall support keyboard navigation
|
||||
- **Features**: Tab navigation, keyboard shortcuts, focus indicators
|
||||
|
||||
**FR-UI-025**: System shall provide ARIA labels
|
||||
- **Features**: Screen reader support, semantic HTML
|
||||
|
||||
## 3. Design Requirements
|
||||
|
||||
### 3.1 Color Scheme
|
||||
- **Primary**: #137fec (Blue)
|
||||
- **Background Dark**: #101922
|
||||
- **Surface Dark**: #18232e
|
||||
- **Border Dark**: #2a3b4d
|
||||
- **Text Primary**: White
|
||||
- **Text Secondary**: #92adc9
|
||||
- **Success**: Green (#10b981)
|
||||
- **Warning**: Yellow (#f59e0b)
|
||||
- **Error**: Red (#ef4444)
|
||||
|
||||
### 3.2 Typography
|
||||
- **Font Family**: Manrope (Display), System fonts (Body)
|
||||
- **Headings**: Bold, various sizes
|
||||
- **Body**: Regular, readable sizes
|
||||
|
||||
### 3.3 Spacing
|
||||
- **Consistent**: 4px base unit
|
||||
- **Padding**: 16px, 24px, 32px
|
||||
- **Gap**: 8px, 16px, 24px, 32px
|
||||
|
||||
### 3.4 Components
|
||||
- **Buttons**: Primary, secondary, outline, danger variants
|
||||
- **Cards**: Rounded corners, borders, shadows
|
||||
- **Inputs**: Rounded, bordered, focus states
|
||||
- **Badges**: Small, colored, with icons
|
||||
|
||||
## 4. User Experience Requirements
|
||||
|
||||
### 4.1 Performance
|
||||
- **Page Load**: < 2 seconds initial load
|
||||
- **Navigation**: < 100ms route transitions
|
||||
- **API Calls**: Loading states during requests
|
||||
|
||||
### 4.2 Usability
|
||||
- **Intuitive**: Clear navigation, obvious actions
|
||||
- **Consistent**: Consistent patterns across pages
|
||||
- **Feedback**: Immediate feedback for user actions
|
||||
- **Error Handling**: Clear error messages and recovery options
|
||||
|
||||
### 4.3 Discoverability
|
||||
- **Help**: Tooltips, help text, documentation links
|
||||
- **Search**: Global search functionality (future)
|
||||
- **Guides**: Onboarding flow (future)
|
||||
|
||||
## 5. Technology Stack
|
||||
|
||||
### 5.1 Frontend Framework
|
||||
- React 18 with TypeScript
|
||||
- Vite for build tooling
|
||||
- React Router for navigation
|
||||
|
||||
### 5.2 Styling
|
||||
- TailwindCSS for utility-first styling
|
||||
- Custom CSS for specific components
|
||||
- Dark theme support
|
||||
|
||||
### 5.3 State Management
|
||||
- Zustand for global state
|
||||
- TanStack Query for server state
|
||||
- React hooks for local state
|
||||
|
||||
### 5.4 UI Libraries
|
||||
- Lucide React for icons
|
||||
- Recharts for charts
|
||||
- Custom components
|
||||
|
||||
## 6. Browser Support
|
||||
- Chrome/Edge: Latest 2 versions
|
||||
- Firefox: Latest 2 versions
|
||||
- Safari: Latest 2 versions
|
||||
|
||||
## 7. Error Handling
|
||||
- Network errors: Retry mechanism, error messages
|
||||
- Validation errors: Inline error messages
|
||||
- Server errors: Error pages, error notifications
|
||||
- 404 errors: Not found page
|
||||
|
||||
Reference in New Issue
Block a user