commit 62237fb887b5f467bf008c7646918e6b29d445d2 Author: CentOS Sources Date: Tue May 7 06:10:05 2019 -0400 import system-storage-manager-1.2-2.el8 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eba654a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/system-storage-manager-1.2.tar.gz diff --git a/.system-storage-manager.metadata b/.system-storage-manager.metadata new file mode 100644 index 0000000..f1af851 --- /dev/null +++ b/.system-storage-manager.metadata @@ -0,0 +1 @@ +d108c18383f5b143cee5ffb69eafe44d6d666d54 SOURCES/system-storage-manager-1.2.tar.gz diff --git a/SOURCES/ssm-1.2-Change-python-to-python3.patch b/SOURCES/ssm-1.2-Change-python-to-python3.patch new file mode 100644 index 0000000..d02250f --- /dev/null +++ b/SOURCES/ssm-1.2-Change-python-to-python3.patch @@ -0,0 +1,86 @@ +From 4966dad8a241f431bc064982486b711e02fc0095 Mon Sep 17 00:00:00 2001 +From: Jan Tulak +Date: Fri, 10 Aug 2018 17:29:48 +0200 +Subject: [PATCH 2/2] change 'python' to 'python3' + +Future RHEL will have a default of python3. + +Signed-off-by: Jan Tulak +--- + Makefile | 8 ++++---- + bin/ssm | 2 +- + bin/ssm.local | 2 +- + test.py | 2 +- + 4 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/Makefile b/Makefile +index 2d887c4..80ae3f9 100644 +--- a/Makefile ++++ b/Makefile +@@ -28,7 +28,7 @@ ifndef PREVIOUS + endif + + clean: +- @python setup.py clean ++ @python3 setup.py clean + rm -f MANIFEST + find . -\( -name "*.pyc" -o -name '*.pyo' -o -name "*~" -\) -delete + +@@ -36,7 +36,7 @@ git-clean: + git clean -f + + install: +- @python setup.py install ++ @python3 setup.py install + + spec: check_vars + @(LC_ALL=C date +"* %a %b %e %Y `git config --get user.name` <`git config --get user.email`> - $(VERSION)"; git log --pretty="format:- %s (%an)" $(PREVIOUS)..HEAD| cat; echo -e "\n\n"; cat CHANGES) > CHANGES.bck; mv CHANGES.bck CHANGES +@@ -51,10 +51,10 @@ docs: + @make dist -C doc + + source: test clean +- @python setup.py sdist ++ @python3 setup.py sdist + + test: +- @python test.py ++ @python3 test.py + + push_html: + scp -r doc/_build/singlehtml/* lczerner@shell.sourceforge.net:/home/project-web/storagemanager/htdocs/ +diff --git a/bin/ssm b/bin/ssm +index 53aece6..13b2241 100755 +--- a/bin/ssm ++++ b/bin/ssm +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # (C)2011 Red Hat, Inc., Lukas Czerner + # +diff --git a/bin/ssm.local b/bin/ssm.local +index d5bedec..94ea9dd 100755 +--- a/bin/ssm.local ++++ b/bin/ssm.local +@@ -26,7 +26,7 @@ export PYTHONPATH="$SSMDIR" + + # Run coverage if the environment variable is set up. + if [ "$RUN_COVERAGE" = "" ]; then +- python $SSMDIR/bin/ssm "$@" ++ python3 $SSMDIR/bin/ssm "$@" + else + $RUN_COVERAGE $SSMDIR/bin/ssm "$@" + fi +diff --git a/test.py b/test.py +index 7501cc0..247b1dc 100755 +--- a/test.py ++++ b/test.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # (C)2011 Red Hat, Inc., Lukas Czerner + # +-- +2.16.2 + diff --git a/SOURCES/ssm-1.2-Remove-info-command-for-RHEL.patch b/SOURCES/ssm-1.2-Remove-info-command-for-RHEL.patch new file mode 100644 index 0000000..b624c7c --- /dev/null +++ b/SOURCES/ssm-1.2-Remove-info-command-for-RHEL.patch @@ -0,0 +1,231 @@ +From d395fbf4c1cb2289cb512dd255b420b8b1cf7971 Mon Sep 17 00:00:00 2001 +From: Jan Tulak +Date: Fri, 10 Aug 2018 16:43:45 +0200 +Subject: [PATCH 1/2] Remove info command for RHEL + +Signed-off-by: Jan Tulak +--- + README | 9 --------- + doc/generate_usage_includes.py | 10 ---------- + doc/src/commands/index.rst | 1 - + doc/src/commands/info.rst | 8 -------- + doc/src/commands/info.txt | 7 ------- + man8/ssm.8 | 20 +------------------- + ssmlib/main.py | 32 -------------------------------- + 7 files changed, 1 insertion(+), 86 deletions(-) + delete mode 100644 doc/src/commands/info.rst + delete mode 100644 doc/src/commands/info.txt + +diff --git a/README b/README +index fe16990..efce489 100644 +--- a/README ++++ b/README +@@ -148,15 +148,6 @@ The following sections can be specified: + Info command + ************ + +-**EXPERIMENTAL** This feature is currently experimental. The output +-format can change and fields can be added or removed. +- +-Show detailed information about all detected devices, pools, volumes +-and snapshots found on the system. The **info** command can be used +-either alone to show all available items, or you can specify a device, +-pool, or any other identifier to see information about the specific +-item. +- + + Remove command + ************** +diff --git a/doc/generate_usage_includes.py b/doc/generate_usage_includes.py +index d7695f8..e694722 100755 +--- a/doc/generate_usage_includes.py ++++ b/doc/generate_usage_includes.py +@@ -12,7 +12,6 @@ SYNOPSIS_INC = "src/synopsis.inc" + OPTIONS_DIR = "src/options/" + SSM_OPTIONS_INC = OPTIONS_DIR + "ssm_options.inc" + CREATE_OPTIONS_INC = OPTIONS_DIR + "create_options.inc" +-INFO_OPTIONS_INC = OPTIONS_DIR + "info_options.inc" + LIST_OPTIONS_INC = OPTIONS_DIR + "list_options.inc" + REMOVE_OPTIONS_INC = OPTIONS_DIR + "remove_options.inc" + RESIZE_OPTIONS_INC = OPTIONS_DIR + "resize_options.inc" +@@ -24,7 +23,6 @@ MIGRATE_OPTIONS_INC = OPTIONS_DIR + "migrate_options.inc" + + SSM_USAGE_INC = OPTIONS_DIR + "ssm_usage.inc" + CREATE_USAGE_INC = OPTIONS_DIR + "create_usage.inc" +-INFO_USAGE_INC = OPTIONS_DIR + "info_usage.inc" + LIST_USAGE_INC = OPTIONS_DIR + "list_usage.inc" + REMOVE_USAGE_INC = OPTIONS_DIR + "remove_usage.inc" + RESIZE_USAGE_INC = OPTIONS_DIR + "resize_usage.inc" +@@ -68,10 +66,6 @@ class GenerateIncludes(object): + message = self.format_synopsis(self.ssm_parser.parser_create) + self._write_message(message, CREATE_USAGE_INC) + +- def write_info_usage(self): +- message = self.format_synopsis(self.ssm_parser.parser_info) +- self._write_message(message, INFO_USAGE_INC) +- + def write_list_usage(self): + message = self.format_synopsis(self.ssm_parser.parser_list) + self._write_message(message, LIST_USAGE_INC) +@@ -107,7 +101,6 @@ class GenerateIncludes(object): + def write_usage(self): + self.write_ssm_usage() + self.write_create_usage() +- self.write_info_usage() + self.write_list_usage() + self.write_remove_usage() + self.write_resize_usage() +@@ -137,9 +130,6 @@ class GenerateIncludes(object): + message = self._format_options(self.ssm_parser.parser_create) + self._write_message(message, CREATE_OPTIONS_INC) + +- message = self._format_options(self.ssm_parser.parser_info) +- self._write_message(message, INFO_OPTIONS_INC) +- + message = self._format_options(self.ssm_parser.parser_list) + self._write_message(message, LIST_OPTIONS_INC) + +diff --git a/doc/src/commands/index.rst b/doc/src/commands/index.rst +index 85ee495..d3f0a0f 100644 +--- a/doc/src/commands/index.rst ++++ b/doc/src/commands/index.rst +@@ -7,7 +7,6 @@ System Storage Manager Commands + + commands_introduction + create +- info + list + remove + resize +diff --git a/doc/src/commands/info.rst b/doc/src/commands/info.rst +deleted file mode 100644 +index d2917ef..0000000 +--- a/doc/src/commands/info.rst ++++ /dev/null +@@ -1,8 +0,0 @@ +-Info command +-============ +- +-.. include:: ../options/info_usage.inc +- +-.. include:: info.txt +- +-.. include:: ../options/info_options.inc +\ No newline at end of file +diff --git a/doc/src/commands/info.txt b/doc/src/commands/info.txt +deleted file mode 100644 +index 7fadda0..0000000 +--- a/doc/src/commands/info.txt ++++ /dev/null +@@ -1,7 +0,0 @@ +-**EXPERIMENTAL** This feature is currently experimental. The output format can +-change and fields can be added or removed. +- +-Show detailed information about all detected devices, pools, volumes and +-snapshots found on the system. The **info** command can be used either alone +-to show all available items, or you can specify a device, pool, or any other +-identifier to see information about the specific item. +\ No newline at end of file +diff --git a/man8/ssm.8 b/man8/ssm.8 +index c1de972..d421814 100644 +--- a/man8/ssm.8 ++++ b/man8/ssm.8 +@@ -59,14 +59,12 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] + .. + .SH SYNOPSIS + .sp +-\fBssm\fP [\fB\-h\fP] [\fB\-\-version\fP] [\fB\-v\fP] [\fB\-f\fP] [\fB\-b\fP BACKEND] [\fB\-n\fP] {check,resize,create,list,info,add,remove,snapshot,mount,migrate} ... ++\fBssm\fP [\fB\-h\fP] [\fB\-\-version\fP] [\fB\-v\fP] [\fB\-f\fP] [\fB\-b\fP BACKEND] [\fB\-n\fP] {check,resize,create,list,add,remove,snapshot,mount,migrate} ... + .sp + \fBssm\fP \fBcreate\fP [\fB\-h\fP] [\fB\-s\fP SIZE] [\fB\-n\fP NAME] [\fB\-\-fstype\fP FSTYPE] [\fB\-r\fP LEVEL] [\fB\-I\fP STRIPESIZE] [\fB\-i\fP STRIPES] [\fB\-p\fP POOL] [\fB\-e\fP [{luks,plain}]] [\fB\-o\fP MNT_OPTIONS] [\fB\-v\fP VIRTUAL_SIZE] [\fBdevice\fP [\fBdevice\fP ...]] [mount] + .sp + \fBssm\fP \fBlist\fP [\fB\-h\fP] [{volumes,vol,dev,devices,pool,pools,fs,filesystems,snap,snapshots}] + .sp +-\fBssm\fP \fBinfo\fP [\fB\-h\fP] [item] +-.sp + \fBssm\fP \fBremove\fP [\fB\-h\fP] [\fB\-a\fP] [\fBitems\fP [\fBitems\fP ...]] + .sp + \fBssm\fP \fBresize\fP [\fB\-h\fP] [\fB\-s\fP SIZE] \fBvolume\fP [\fBdevice\fP [\fBdevice\fP ...]] +@@ -243,22 +241,6 @@ volume. A size suffix K|k, M|m, G|g, T|t, P|p, E|e can + be used to define \(aqpower of two\(aq units. If no unit is + provided, it defaults to kilobytes. + .UNINDENT +-.SS Info command +-.sp +-\fBssm\fP \fBinfo\fP [\fB\-h\fP] [item] +-.sp +-\fBEXPERIMENTAL\fP This feature is currently experimental. The output format can +-change and fields can be added or removed. +-.sp +-Show detailed information about all detected devices, pools, volumes and +-snapshots found on the system. The \fBinfo\fP command can be used either alone +-to show all available items, or you can specify a device, pool, or any other +-identifier to see information about the specific item. +-.INDENT 0.0 +-.TP +-.B \-h\fP,\fB \-\-help +-show this help message and exit +-.UNINDENT + .SS List command + .sp + \fBssm\fP \fBlist\fP [\fB\-h\fP] [{volumes,vol,dev,devices,pool,pools,fs,filesystems,snap,snapshots}] +diff --git a/ssmlib/main.py b/ssmlib/main.py +index 9bbffd0..1e323df 100644 +--- a/ssmlib/main.py ++++ b/ssmlib/main.py +@@ -1976,26 +1976,6 @@ class StorageHandle(object): + elif args.type in ['snap', 'snapshots']: + self.snap.psummary() + +- def info(self, args): +- """ +- Show a detailed info about an object +- """ +- sources = [self.pool, self.dev, self.vol, self.snap] +- create_graph(*sources) +- print("EXPERIMENTAL FEATURE (The format can yet change)\n") +- +- if not args.item: +- for source in sources: +- source.pinfo() +- else: +- found = False +- for source in sources: +- found |= source.pinfo(item=args.item) +- if not found: +- err = "The item '%s' was not found." % args.item +- raise argparse.ArgumentTypeError(err) +- +- + def add(self, args, skip_check=False): + """ + Add devices into the pool +@@ -2529,7 +2509,6 @@ class SsmParser(object): + self.parser_resize = self._get_parser_resize() + self.parser_create = self._get_parser_create() + self.parser_list = self._get_parser_list() +- self.parser_info = self._get_parser_info() + self.parser_add = self._get_parser_add() + self.parser_remove = self._get_parser_remove() + self.parser_snapshot = self._get_parser_snapshot() +@@ -2707,17 +2686,6 @@ class SsmParser(object): + parser_list.set_defaults(func=self.storage.list) + return parser_list + +- def _get_parser_info(self): +- """ +- Info command +- """ +- parser_info = self.subcommands.add_parser("info", +- help='''Show detailed information about +- an object. EXPERIMENTAL''') +- parser_info.add_argument('item', nargs='?') +- parser_info.set_defaults(func=self.storage.info) +- return parser_info +- + def _get_parser_add(self): + """ + Add command +-- +2.16.2 + diff --git a/SOURCES/ssm-1.2-fix-pwquality.patch b/SOURCES/ssm-1.2-fix-pwquality.patch new file mode 100644 index 0000000..d7602c4 --- /dev/null +++ b/SOURCES/ssm-1.2-fix-pwquality.patch @@ -0,0 +1,34 @@ +From 8a07c9b2349633a603da5b1bea9bf5ea3fa320b7 Mon Sep 17 00:00:00 2001 +From: Jan Tulak +Date: Thu, 24 Jan 2019 13:59:02 +0100 +Subject: [PATCH] ssmlib: fix pwquality support for python3 + +The pwquality.PWQError has some differences between Python 2 and 3. The +semantics for P3 works for P2, but not the other way around, so use +ex.args instead of a simple ex. + +Resolves: rhbz#1670714 + +Signed-off-by: Jan Tulak +--- + ssmlib/main.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ssmlib/main.py b/ssmlib/main.py +index 1e323df..102e30c 100644 +--- a/ssmlib/main.py ++++ b/ssmlib/main.py +@@ -1790,8 +1790,8 @@ class StorageHandle(object): + pwq = pwquality.PWQSettings() + pwq.check(password) + except pwquality.PWQError as ex: +- if not PR.check(PR.WEAK_PASSWORD, ex[1]): +- raise problem.WeakPassword(ex[1]) ++ if not PR.check(PR.WEAK_PASSWORD, ex.args[1]): ++ raise problem.WeakPassword(ex.args[1]) + else: + force_weak_password = True + +-- +2.20.1 + diff --git a/SOURCES/ssm-1.2-python3-sphinx.patch b/SOURCES/ssm-1.2-python3-sphinx.patch new file mode 100644 index 0000000..a6378f7 --- /dev/null +++ b/SOURCES/ssm-1.2-python3-sphinx.patch @@ -0,0 +1,23 @@ +diff --git a/doc/Makefile b/doc/Makefile +index 135bfb4..efe5f22 100644 +--- a/doc/Makefile ++++ b/doc/Makefile +@@ -3,7 +3,7 @@ + + # You can set these variables from the command line. + SPHINXOPTS = +-SPHINXBUILD = sphinx-build ++SPHINXBUILD = sphinx-build-3 + PAPER = a4 + BUILDDIR = _build + +diff --git a/doc/generate_usage_includes.py b/doc/generate_usage_includes.py +index 257ba51..0182116 100755 +--- a/doc/generate_usage_includes.py ++++ b/doc/generate_usage_includes.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + import re + import sys, os diff --git a/SPECS/system-storage-manager.spec b/SPECS/system-storage-manager.spec new file mode 100644 index 0000000..62e150e --- /dev/null +++ b/SPECS/system-storage-manager.spec @@ -0,0 +1,161 @@ +%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} + +Name: system-storage-manager +Version: 1.2 +Release: 2%{?dist} +Summary: A single tool to manage your storage + +Group: System Environment/Base +License: GPLv2+ +URL: https://system-storage-manager.github.io/ +Source0: https://github.com/system-storage-manager/ssm/archive/%{name}-%{version}.tar.gz + +Patch1: ssm-1.2-python3-sphinx.patch +Patch2: ssm-1.2-Remove-info-command-for-RHEL.patch +Patch3: ssm-1.2-Change-python-to-python3.patch +Patch4: ssm-1.2-fix-pwquality.patch + +BuildArch: noarch +BuildRequires: python3-devel +BuildRequires: python3-sphinx +BuildRequires: python3-pwquality +Requires: util-linux +Requires: which +Requires: xfsprogs +Requires: e2fsprogs +Requires: python3-pwquality + + +%description +System Storage Manager provides an easy to use command line interface to manage +your storage using various technologies like lvm, btrfs, encrypted volumes and +more. + +In more sophisticated enterprise storage environments, management with Device +Mapper (dm), Logical Volume Manager (LVM), or Multiple Devices (md) is becoming +increasingly more difficult. With file systems added to the mix, the number of +tools needed to configure and manage storage has grown so large that it is +simply not user friendly. With so many options for a system administrator to +consider, the opportunity for errors and problems is large. + +The btrfs administration tools have shown us that storage management can be +simplified, and we are working to bring that ease of use to Linux file systems +in general. + +You should install the ssm if you need to manage your storage with various +technologies via a single unified interface. + + +%prep +%setup -q -n ssm-%{name}-%{version} + +# ssm-1.2-python3-sphinx.patch +%patch1 -p1 +# ssm-1.2-Remove-info-command-for-RHEL.patch +%patch2 -p1 +# ssm-1.2-Change-python-to-python3.patch +%patch3 -p1 +%patch4 -p1 + + + +%build +make docs + + +%install +rm -rf ${RPM_BUILD_ROOT} +%{__python3} setup.py install --root=${RPM_BUILD_ROOT} +if [ "%{_pkgdocdir}" != "%{_docdir}/%{name}-%{version}" ]; then + mv ${RPM_BUILD_ROOT}/{%{_docdir}/%{name}-%{version},%{_pkgdocdir}} +fi + +%check +%{__python3} test.py || : + + +%files +%{_bindir}/ssm +%{_pkgdocdir}/ +%{_mandir}/man8/ssm.8* +%{python3_sitelib}/ssmlib/ +%{python3_sitelib}/*.egg-info + + +%changelog +*Fri Feb 15 2019 Jan Tulak - 1.2-2: +- fix poor luks password leads to ssm crash (rhbz#1670714) + +* Sun Aug 12 2018 Jan Tulak - 1.2-1 +- Upstream release 1.2 which fixes: +- use pwquality to test password strength for cryptsetup (#1141871) +- add multipath detection support (#1309729) +- add migrate command (#1014708) + +* Fri Feb 09 2018 Fedora Release Engineering - 0.5-1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Oct 30 2017 Jan Tulak - 0.5-0 +- New upstream stable version 0.5 + +* Thu Jul 27 2017 Fedora Release Engineering - 0.4-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 0.4-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Dec 19 2016 Miro Hrončok - 0.4-12 +- Rebuild for Python 3.6 + +* Tue Jul 19 2016 Fedora Release Engineering - 0.4-11 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri Feb 05 2016 Fedora Release Engineering - 0.4-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Nov 10 2015 Fedora Release Engineering - 0.4-9 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + + +* Mon Jul 27 2015 Lukas Czerner 0.4-7 +- Big upstream update +- Python3 support (#1239016) +- Error out if file system is not supported (#1196428) + +* Fri Jun 19 2015 Fedora Release Engineering - 0.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 0.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon Jan 20 2014 Lukas Czerner 0.4-4 +- Update to a new upstream release v0.4 +- Remove btrfs resize support +- Unmount all btrfs subvolumes when removing a filesystem +- Fix size argument parsing for create and snapshot command +- Fix list output for some cases +- Add support to create encrypted volumes with crypt backend +- Add dry-run option +- Fix removing volumes with crypt backend +- Add raid1 and raid10 support for lvm backend +- Allow to check btrfs volumes +- Fix error handling when trying to resize btrfs subvolume +- Fix ssm mount command so it detects directory properly +- Suppress backtrace when a command fails +- Fix ssm to recognize units in new btrfs output properly +- Use correct sysfs file to get size for a partition +- Fix ssm to be able add a device with signature to btrfs file system +- Resognize btrfs devices from new btrfs output properly + + +* Mon Dec 16 2013 Ville Skyttä - 0.2-4 +- Install docs to %%{_pkgdocdir} where available (#994122). + +* Sun Aug 04 2013 Fedora Release Engineering - 0.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Feb 15 2013 Fedora Release Engineering - 0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Fri Jun 1 2012 Lukas Czerner 0.2-1 +- Initial version of the package