23 Commits

Author SHA1 Message Date
Brian Gates 45bb0e24eb Update README to include LXC support details
Added support for LXC container root volumes in the plugin documentation.
2026-05-03 17:12:36 -04:00
Timur Kumakbayev c666235082 Build script and documentation updates (#83) 2026-01-18 05:05:25 +05:00
Timur Kumakbayev f9f8eed94b Active Cluster Support, Pod Quota Fixes,Token Cache and CI Improvements (#81)
feat: add Active Cluster support and improve plugin stability

## Major Features

### Active Cluster Support (Experimental) (#42)
- Add support for multiple PureStorage arrays in Active Cluster configuration
- Automatic volume connection on all arrays for high availability
- Configure via comma-separated addresses and tokens

### Pod Quota Limit Support (#69)
- Add proper handling of pod quota_limit parameter
- Use quota_limit when set, fall back to array capacity when unlimited
- Fix capacity reporting for pods with quotas

### Session Token Caching
- Implement session token caching in /etc/pve/priv/purestorage/
- Automatic token refresh at 80% of TTL to prevent expiration
- In-memory and file-based caching with jitter to prevent thundering herd

### Debug Logging
- Add configurable debug logging with 4 levels (0-3)
- Support both config parameter and PURESTORAGE_DEBUG environment variable

## Bug Fixes
- Fix volume deletion when connected to multiple hosts
- Query all connections before destroy
- Disconnect from all hosts on all arrays
- Prevents "Cannot destroy volume because it is currently connected" error

## CI/CD Improvements
- Add workflow_dispatch trigger to checks workflow
- Add option to check all files or only changed files
- Add comprehensive markdown linting with markdownlint-cli2

## Testing
- Add token caching tests (tests/token_cache_test.pl)
- Test token validation, expiration, and race conditions
- Test cleanup of expired cache files

## Refactoring (#72)
- Refactor volume removal logic to handle multiple host connections
- Improve device cleanup sequence (LVM, partitions, multipath)
- Extract connection querying logic before volume destruction
- Refactor CI/CD workflows for better maintainability and flexibility
- Improve error handling and logging throughout the plugin
- Enhance Active Cluster support with proper multi-array operations

## Code Formatting
- Format all Perl files with perltidy using .perltidyrc configuration
- Ensure consistent code style across the codebase
- Fix formatting issues in PureStoragePlugin.pm and test files

## Documentation
- Update README with new functionality
2026-01-17 17:20:28 +05:00
Timur Kumakbayev f9a458efae Merge pull request #65 from PwrBank/patch-2
Update README.md
2025-09-10 08:28:24 +05:00
PwrBank 14096218b9 Update README.md
Added a features section to the README, so users are able to easily identify the benefits of the plugin.

More features listed would be helpful
2025-06-24 06:22:25 -05:00
cbka 71c7074675 Update README.md
add some information about hostconfig and pvesm setup
2025-05-26 10:08:41 +02:00
PwrBank 098ea4dc4f Update README.md
Updated the cd command to reflect the folder create by git
Removed sudo from the commands
2025-03-28 13:12:01 -05:00
NojuHD 44e53e7e20 Fix typos & change name scheme 2025-02-07 21:41:14 -05:00
NojuHD 4f3f2d081d Added support for SCSI (Fibre Channel)
- Added subroutines
    - added sub::scsi_scan_new
    - added sub::scsi_rescan_device
- Added protocol selection
2025-02-05 19:40:18 -05:00
NojuHD 3cb2f31699 Update README.md
1. changing git clone to https so no auth is needed.
2. removing doubled "token" in pvesm template.
2025-02-04 18:36:48 +01:00
amulet1 d01feb85a8 Added support for "podname" and "vnprefix" parameters (#29)
The "podname" value (mutually exclusive with "vgname") specifies Purestorage pod name.

The "vnprefix" value is an optional prefix to prepend to volume names.

The "vnprefix" can be used in combination with "podname" or "vgname".

Examples of volume name "vm-100-disk-0" mapping to PureStorage:
 "podname mypod"                  => mypod::vm-100-disk-0
    (same as "vnprefix mypod::")

 "vgname mypve"                   => mypve/vm-100-disk-0
    (same as "vnprefix mypve/")

 "podname mypod", "vnprefix dev-" => mypod::dev-vm-100-disk-0
    (same as "vnprefix mypod::dev-")

 "vgname mypve", "vnprefix dev-"  => mypve/dev-vm-100-disk-0
    (same as "vnprefix mypve/dev-")

Also:
 * Made "vgname" parameter optional
 * Moved array address parameters check to purestorage_api_request()
 * Removed volume info caching (#15), eliminated purestorage_volume_info()
 * Modified purestorage_list_volumes() to return only disk names we recognize [ $vmid = undef case ]
 * Use substr() instead of regex to strip volume name prefix in purestorage_get_volumes()
 * Show PVE volume names in "Info ::" messages
 * Added description of new parameters to README.md
2025-01-27 20:59:51 -05:00
Dmitry Petrov 6b37e1ea81 Updated README.md
Added pvesm as a method to configure the plugin.
2025-01-27 09:57:34 -05:00
PwrBank c6770fc4cd Update README.md
Updated troubleshooting commands, as suggested by @timansky
2025-01-17 06:49:47 -06:00
PwrBank e9342bee43 Merge branch 'kolesa-team:main' into main 2025-01-16 11:32:40 -06:00
PwrBank d97f93c340 Update README.md
Added some troubleshooting commands
2025-01-16 11:32:29 -06:00
timansky b8e620f4c1 Merge remote-tracking branch 'origin/main' into development 2025-01-16 21:56:29 +05:00
PwrBank 077514702f Update README.md
Fixed type on the manual install instructions
2025-01-16 08:25:58 -06:00
timansky e4aae03d51 README added lvm case 2025-01-16 08:59:08 +05:00
Dmitry Petrov 17ddc7ecc4 Merge pull request #4 from kolesa-team/main
Merge README.md changes
2025-01-15 09:43:30 -05:00
PwrBank c26a4a659e Update README.md
Clarified to create the Custom folder if it does not exist
Corrected the copy command
2025-01-15 07:12:53 -06:00
Dmitry Petrov 16721e35d1 Updated recommended multipah.conf file
Added Pure wwids to blacklist_exceptions section.
2025-01-14 14:32:45 -05:00
Andreas Steinel 288300aa1f correct name for storage.cfg
The configuration file is not storage.conf, but storage.cfg.
2025-01-09 08:33:29 +01:00
timansky c252c0310f Initial commit 2024-12-04 22:27:16 +05:00