- Update to version 0.30 (bsc#1064755)

+ improved error messages on failure.
  + ignore sfdisk failure in 2.28.1 when due to reread failing
   (LP: #1619285)
  + Add service file to start growpart via systemd
  + Add rootgrow script to wrap growpart

OBS-URL: https://build.opensuse.org/package/show/Cloud:Tools/growpart?expand=0&rev=7
This commit is contained in:
Robert Schweikert 2018-01-23 13:48:13 +00:00 committed by Git OBS Bridge
parent 739b3f2e99
commit b71ffcb776
6 changed files with 101 additions and 7 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9ea1b66f5a4798c8d6eeca48d908e11169a38e943efa433b7ec5dffa907e257c
size 419396

BIN
cloud-utils-0.30.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Mon Jan 22 21:12:33 UTC 2018 - rjschwei@suse.com
- Update to version 0.30 (bsc#1064755)
+ improved error messages on failure.
+ ignore sfdisk failure in 2.28.1 when due to reread failing
(LP: #1619285)
+ Add service file to start growpart via systemd
+ Add rootgrow script to wrap growpart
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Sep 13 20:53:26 UTC 2016 - rjschwei@suse.com Tue Sep 13 20:53:26 UTC 2016 - rjschwei@suse.com

View File

@ -1,7 +1,7 @@
# #
# spec file for package growpart # spec file for package growpart
# #
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@ -17,17 +17,24 @@
Name: growpart Name: growpart
Version: 0.29 Version: 0.30
Release: 0 Release: 0
Summary: Grow a partition Summary: Grow a partition
License: GPL-3.0 License: GPL-3.0
Group: System/Management Group: System/Management
Url: http://launchpad.net/cloud-utils Url: http://launchpad.net/cloud-utils
Source0: cloud-utils-%{version}.tar.gz Source0: cloud-utils-%{version}.tar.gz
Source1: rootgrow
Source2: rootgrow.service
Patch: licenseGPLv3.patch Patch: licenseGPLv3.patch
Requires: util-linux Requires: util-linux
%if 0%{?suse_version} && 0%{?suse_version} >= 1220 %if 0%{?suse_version} && 0%{?suse_version} > 1220
Requires: gptfdisk Requires: gptfdisk
Requires: python3
Requires: systemd
# pkg-config is needed to find correct systemd unit dir
BuildRequires: pkg-config
BuildRequires: systemd
%endif %endif
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch BuildArch: noarch
@ -44,10 +51,15 @@ partition can be expanded to take up the additional size.
%build %build
%install %install
mkdir -p %{buildroot}/%{_sbindir}
mkdir -p %{buildroot}/%{_mandir}/man1 mkdir -p %{buildroot}/%{_mandir}/man1
mkdir -p %{buildroot}/%{_sbindir}
cp bin/growpart %{buildroot}/%{_sbindir} cp bin/growpart %{buildroot}/%{_sbindir}
cp man/growpart.1 %{buildroot}/%{_mandir}/man1 cp man/growpart.1 %{buildroot}/%{_mandir}/man1
%if 0%{?suse_version} && 0%{?suse_version} > 1220
mkdir -p %{buildroot}/usr/lib/systemd/system
cp %SOURCE1 %{buildroot}/%{_sbindir}
cp %SOURCE2 %{buildroot}/usr/lib/systemd/system
%endif
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
@ -57,5 +69,9 @@ rm -rf $RPM_BUILD_ROOT
%doc LICENSE-GPLv3 %doc LICENSE-GPLv3
%{_sbindir}/growpart %{_sbindir}/growpart
%{_mandir}/man1/* %{_mandir}/man1/*
%if 0%{?suse_version} && 0%{?suse_version} > 1220
%{_sbindir}/rootgrow
/usr/lib/systemd/system/rootgrow.service
%endif
%changelog %changelog

57
rootgrow Normal file
View File

@ -0,0 +1,57 @@
#!/usr/bin/python3
import os
import re
import syslog
split_dev = re.compile('([a-z/]*)(\d*)')
mounts = open('/proc/mounts' ,'r').readlines()
def get_mount_point(device):
for mount in mounts:
if mount.startswith(device):
return mount.split(' ')[1]
def resize_fs(fs_type, device):
if fs_type.startswith('ext'):
cmd = 'resize2fs %s' % device
syslog.syslog(
syslog.LOG_INFO,
'Resizing: "%s"' %cmd
)
os.system(cmd)
elif fs_type == 'xfs':
mnt_point = get_mount_point(device)
cmd = 'xfs_growfs %s' % mnt_point
syslog.syslog(
syslog.LOG_INFO,
'Resizing: "%s"' %cmd
)
os.system(cmd)
for mount in mounts:
if ' / ' in mount:
mount_dev = mount.split(' ')[0]
fs = mount.split(' ')[2]
try:
dev, partition = split_dev.match(mount_dev).groups()
except:
syslog.syslog(
syslog.LOG_ERR,
'match exception for "%s"' % mount
)
break
if dev and partition:
cmd = '/usr/sbin/growpart %s %s' %(dev, partition)
syslog.syslog(
syslog.LOG_INFO,
'Executing: "%s"' % cmd
)
os.system(cmd)
resize_fs(fs, mount_dev)
else:
syslog.syslog(
syslog.LOG_ERR,
'could not match device and partition in "%s"' % mount
)

11
rootgrow.service Normal file
View File

@ -0,0 +1,11 @@
[Unit]
Description=Grow the root partition
After=local-fs.target
Wants=local-fs.target
[Service]
ExecStart=/usr/sbin/rootgrow
Type=oneshot
[Install]
WantedBy=multi-user.target