Skip to content

Commit 48095b6

Browse files
authoredAug 7, 2023
Auto calculate partiton size on install (#121)
1 parent f5c01f7 commit 48095b6

File tree

3 files changed

+33
-28
lines changed

3 files changed

+33
-28
lines changed
 

‎pkg/config/spec.go

+17-14
Original file line numberDiff line numberDiff line change
@@ -85,20 +85,23 @@ func NewInstallSpec(cfg *Config) *v1.InstallSpec {
8585
Size: constants.ImgSize,
8686
}
8787

88-
return &v1.InstallSpec{
89-
Target: cfg.Install.Device,
90-
Firmware: firmware,
91-
PartTable: v1.GPT,
92-
Partitions: NewInstallElementalPartitions(),
93-
GrubConf: constants.GrubConf,
94-
Tty: constants.DefaultTty,
95-
Active: activeImg,
96-
Recovery: recoveryImg,
97-
Passive: passiveImg,
98-
}
88+
spec := &v1.InstallSpec{
89+
Target: cfg.Install.Device,
90+
Firmware: firmware,
91+
PartTable: v1.GPT,
92+
GrubConf: constants.GrubConf,
93+
Tty: constants.DefaultTty,
94+
Active: activeImg,
95+
Recovery: recoveryImg,
96+
Passive: passiveImg,
97+
}
98+
// Calculate the partitions sizes automatically based on the images set size
99+
spec.Partitions = NewInstallElementalPartitions(spec)
100+
101+
return spec
99102
}
100103

101-
func NewInstallElementalPartitions() v1.ElementalPartitions {
104+
func NewInstallElementalPartitions(spec *v1.InstallSpec) v1.ElementalPartitions {
102105
pt := v1.ElementalPartitions{}
103106
pt.OEM = &v1.Partition{
104107
FilesystemLabel: constants.OEMLabel,
@@ -111,7 +114,7 @@ func NewInstallElementalPartitions() v1.ElementalPartitions {
111114

112115
pt.Recovery = &v1.Partition{
113116
FilesystemLabel: constants.RecoveryLabel,
114-
Size: constants.RecoverySize,
117+
Size: spec.Recovery.Size + 100,
115118
Name: constants.RecoveryPartName,
116119
FS: constants.LinuxFs,
117120
MountPoint: constants.RecoveryDir,
@@ -120,7 +123,7 @@ func NewInstallElementalPartitions() v1.ElementalPartitions {
120123

121124
pt.State = &v1.Partition{
122125
FilesystemLabel: constants.StateLabel,
123-
Size: constants.StateSize,
126+
Size: spec.Active.Size + spec.Passive.Size + 100,
124127
Name: constants.StatePartName,
125128
FS: constants.LinuxFs,
126129
MountPoint: constants.StateDir,

‎pkg/config/spec_test.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,21 @@ package config_test
1818

1919
import (
2020
"fmt"
21+
"github.com/jaypipes/ghw/pkg/block"
2122
config "github.com/kairos-io/kairos-agent/v2/pkg/config"
23+
"github.com/kairos-io/kairos-agent/v2/pkg/constants"
24+
v1 "github.com/kairos-io/kairos-agent/v2/pkg/types/v1"
2225
"github.com/kairos-io/kairos-agent/v2/pkg/utils/fs"
26+
v1mock "github.com/kairos-io/kairos-agent/v2/tests/mocks"
2327
"github.com/kairos-io/kairos-sdk/collector"
28+
. "github.com/onsi/ginkgo/v2"
29+
. "github.com/onsi/gomega"
2430
"github.com/sanity-io/litter"
2531
"github.com/sirupsen/logrus"
32+
"github.com/twpayne/go-vfs/vfst"
2633
"k8s.io/mount-utils"
2734
"os"
2835
"path/filepath"
29-
30-
"github.com/jaypipes/ghw/pkg/block"
31-
"github.com/kairos-io/kairos-agent/v2/pkg/constants"
32-
v1 "github.com/kairos-io/kairos-agent/v2/pkg/types/v1"
33-
v1mock "github.com/kairos-io/kairos-agent/v2/tests/mocks"
34-
. "github.com/onsi/ginkgo/v2"
35-
. "github.com/onsi/gomega"
36-
"github.com/twpayne/go-vfs/vfst"
3736
)
3837

3938
var _ = Describe("Types", Label("types", "config"), func() {

‎pkg/elemental/elemental_test.go

+9-6
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ var _ = Describe("Elemental", Label("elemental"), func() {
8383
var el *elemental.Elemental
8484
var parts v1.ElementalPartitions
8585
BeforeEach(func() {
86-
parts = agentConfig.NewInstallElementalPartitions()
86+
spec := &v1.InstallSpec{}
87+
parts = agentConfig.NewInstallElementalPartitions(spec)
8788

8889
err := fsutils.MkdirAll(fs, "/some", cnst.DirPerm)
8990
Expect(err).ToNot(HaveOccurred())
@@ -147,7 +148,8 @@ var _ = Describe("Elemental", Label("elemental"), func() {
147148
var el *elemental.Elemental
148149
var parts v1.ElementalPartitions
149150
BeforeEach(func() {
150-
parts = agentConfig.NewInstallElementalPartitions()
151+
spec := &v1.InstallSpec{}
152+
parts = agentConfig.NewInstallElementalPartitions(spec)
151153

152154
err := fsutils.MkdirAll(fs, "/some", cnst.DirPerm)
153155
Expect(err).ToNot(HaveOccurred())
@@ -195,7 +197,8 @@ var _ = Describe("Elemental", Label("elemental"), func() {
195197
var el *elemental.Elemental
196198
var parts v1.ElementalPartitions
197199
BeforeEach(func() {
198-
parts = agentConfig.NewInstallElementalPartitions()
200+
spec := &v1.InstallSpec{}
201+
parts = agentConfig.NewInstallElementalPartitions(spec)
199202

200203
err := fsutils.MkdirAll(fs, "/some", cnst.DirPerm)
201204
Expect(err).ToNot(HaveOccurred())
@@ -384,13 +387,13 @@ var _ = Describe("Elemental", Label("elemental"), func() {
384387
"mkpart", "oem", "ext4", "133120", "264191",
385388
}, {"mkfs.ext4", "-L", "COS_OEM", "/some/device2"}, {
386389
"parted", "--script", "--machine", "--", "/some/device", "unit", "s",
387-
"mkpart", "recovery", "ext4", "264192", "17041407",
390+
"mkpart", "recovery", "ext4", "264192", "6760447",
388391
}, {"mkfs.ext4", "-L", "COS_RECOVERY", "/some/device3"}, {
389392
"parted", "--script", "--machine", "--", "/some/device", "unit", "s",
390-
"mkpart", "state", "ext4", "17041408", "48498687",
393+
"mkpart", "state", "ext4", "6760448", "19548159",
391394
}, {"mkfs.ext4", "-L", "COS_STATE", "/some/device4"}, {
392395
"parted", "--script", "--machine", "--", "/some/device", "unit", "s",
393-
"mkpart", "persistent", "ext4", "48498688", "100%",
396+
"mkpart", "persistent", "ext4", "19548160", "100%",
394397
}, {"mkfs.ext4", "-L", "COS_PERSISTENT", "/some/device5"},
395398
}
396399

0 commit comments

Comments
 (0)
Please sign in to comment.