131 Commits

Author SHA1 Message Date
Timur Kumakbayev 06410fb99a Merge pull request #40 from amulet1/expired-session
Address API session token expirations
2025-01-30 00:59:32 +05:00
amulet1 c156355589 Redesigned purestorage_api_request() to handle session expirations 2025-01-29 14:02:50 -05:00
Timur Kumakbayev c9d4c07cde Merge pull request #38 from kolesa-team/issue-37
return path in map_volume (#37)
2025-01-29 20:00:59 +05:00
timansky 2f5bc26369 Merge remote-tracking branch 'origin/main' into issue-37 2025-01-29 09:12:49 +05:00
timansky 46ccf11ece Return error if path does not exists 2025-01-29 09:12:08 +05:00
Timur Kumakbayev 7bc3922674 Merge pull request #39 from amulet1/support-pods
Add support for "podname" and "vnprefix" parameters (#29)
2025-01-29 09:09:46 +05: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
timansky 75625bdbdb return path in map_volume (#37) 2025-01-28 05:10:45 +05:00
Timur Kumakbayev fbd1493369 Merge pull request #36 from amulet1/support-clone
Add support for volume and snapshot cloning
2025-01-28 03:28:26 +05:00
amulet1 236ab82740 Added support for volume and snapshot cloning
Implemented purestorage_volume_restore()

Enabled volume and snapshot cloning

Eliminated purestorage_snap_volume_rollback()

Instant cloning can be done using "qm clone" with --full no
 (template cloning would work from GUI too)

Examples:
  To clone VM 100 to 123:
    qm clone 100 123 --full no

  To clone VM 100's snapshot ABCD to VM 123:
    qm clone 100 123 --full no --snapname ABCD
2025-01-27 17:22:38 -05:00
Timur Kumakbayev ae51b4b510 Merge pull request #31 from amulet1/dev2
Various improvements
2025-01-28 02:50:03 +05:00
Timur Kumakbayev 1eeec41f40 Merge pull request #35 from kolesa-team/development
fix linter rules name
2025-01-28 02:31:15 +05:00
timansky 6ca954e50f fix linter rules name 2025-01-28 02:30:17 +05:00
Dmitry Petrov 25aba73428 Merge branch 'main' into dev2 2025-01-27 16:28:39 -05:00
amulet1 c249fe46cb Merged $params into $action in purestorage_api_request()
* Added prepare_api_params() function to assemble api call parameters
 * Redesigned and simplified purestorage_volume_info()
 * Adjusted all api calls to have call parameters inside of $action
2025-01-27 16:16:34 -05:00
Timur Kumakbayev f248f00e14 Merge pull request #34 from amulet1/pvesm
Add an option to configure the plugin using `pvesm`
2025-01-28 01:12:59 +05:00
Timur Kumakbayev 424b94b2a9 Merge pull request #33 from amulet1/sparseinit
Enabled "sparseinit" feature
2025-01-28 01:12:44 +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
amulet1 a0fcb1437c Enabled "sparseinit" feature
This dramatically speeds up copy/restore operations by skipping writing zeroes to unallocated blocks
2025-01-27 09:52:20 -05:00
amulet1 752b6fe06f Merged $body into $action parameter in purestorage_api_request() 2025-01-25 12:22:14 -05:00
amulet1 71542b1b94 Replaced purestorage_request() with purestorage_api_request()
Combined $type and $method parameters into $action hash reference
2025-01-25 12:21:53 -05:00
amulet1 725e99023f Made purestorage_request() static 2025-01-25 12:21:13 -05:00
amulet1 4a1bec377f Started redesign of purestorage_request()
Simplified code, eliminated purestorage_get_auth_token()
2025-01-25 12:19:14 -05:00
Timur Kumakbayev 78a46db7c4 Merge pull request #17 from kolesa-team/development
Do not convert to prerelease
2025-01-20 03:03:24 +05:00
timansky 3a76010d96 Do not convert to prerelease 2025-01-20 03:02:51 +05:00
Timur Kumakbayev fc989677bb Merge pull request #16 from kolesa-team/temp
More fixes
v0.0.4
2025-01-20 02:33:23 +05:00
Timur Kumakbayev d9018eec0f Merge pull request #14 from PwrBank/main
Troubleshooting commands
2025-01-19 20:56:17 +05:00
PwrBank c6770fc4cd Update README.md
Updated troubleshooting commands, as suggested by @timansky
2025-01-17 06:49:47 -06:00
amulet1 6474161796 Unmap volume before renaming it
PVE storage subsystem does not unmap disk before moving it to another guest.

Also added check to make sure the target volume (if specified) does not exist.
2025-01-16 15:41:31 -05:00
amulet1 829cf63e1f Added purestorage_get_volume_info() and purestorage_get_existing_volume_info()
The functions return first matching volume object.

Use purestorage_get_existing_volume_info() in purestorage_get_wwn()
2025-01-16 15:41:07 -05:00
amulet1 660d9bff76 Make hgsuffix truly optional
Replaced the default value "pve" with ""

Resolves #5
2025-01-16 15:40:30 -05: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
Timur Kumakbayev 265904dfa3 Merge pull request #10 from kolesa-team/development
Release v0.0.3
v0.0.3
2025-01-16 21:57:34 +05:00
timansky 6e68385d96 remove zigmund from codeowners 2025-01-16 21:56:45 +05:00
timansky b8e620f4c1 Merge remote-tracking branch 'origin/main' into development 2025-01-16 21:56:29 +05:00
Timur Kumakbayev f508c00b4f Merge pull request #13 from PwrBank/main
Update README.md
2025-01-16 21:34:26 +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
Timur Kumakbayev 081c0b8459 Merge pull request #12 from amulet1/main
Various fixes and improvements (#9)
2025-01-16 08:55:19 +05:00
amulet1 246cba516e Added wrapper to run_command() to streamline error handling
Replaced run_command() occurences with exec_command() which takes care of errors

Setting $DEBUG set to 2+ will show shell commands we are executing in the log
2025-01-15 12:47:39 -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
Timur Kumakbayev 621ebf7dd2 Merge pull request #8 from PwrBank/patch-1 2025-01-15 18:36:34 +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
Timur Kumakbayev c3830d827f Merge pull request #6 from amulet1/fixes
Various fixes
2025-01-15 16:42:09 +05:00
Timur Kumakbayev 6dbf308f17 Merge pull request #4 from kolesa-team/development
- snapshot eradicate on remove
2025-01-15 16:42:01 +05:00
Dmitry Petrov 16721e35d1 Updated recommended multipah.conf file
Added Pure wwids to blacklist_exceptions section.
2025-01-14 14:32:45 -05:00
Dmitry Petrov d2fecfd95a unmap_volume(): Do not die if volume is already unmapped
(accidentally reintroduced the issue in prior commit)
2025-01-14 13:35:00 -05:00
Dmitry Petrov a8de2749c5 unmap_volume(): Use $wwid instead of $path where possible
Other changes:
  * Replaced readlink() with abs_path()
  * Added error check for blockdev call
2025-01-14 11:43:40 -05:00
Dmitry Petrov 4484ff1a01 Simplified rename_volume() 2025-01-13 20:03:35 -05:00