distro: define PartitionType method on ImageType

This is needed so that we can do different things depending on the 
given layout; this will be used in tests for now only. Only GPT
allows for arbitrary number of partitions and once we assert this
in code we will need to adjust the tests accordingly.

NB: This method might be removed again in the future, once generic
LVM support is added everywhere and the ability to differentiate 
between MBR and GPT layouts is not needed anymore.
This commit is contained in:
Christian Kellner 2022-01-10 17:11:47 +00:00 committed by Tom Gundersen
parent c64e3149aa
commit 2ee3fd31a1
10 changed files with 66 additions and 0 deletions

View file

@ -97,6 +97,10 @@ type ImageType interface {
// is 0 the default value for the format will be returned.
Size(size uint64) uint64
// Returns the corresponding partion type ("gpt", "dos") or "" the image type
// has no partition table. Only support for RHEL 8.5+
PartitionType() string
// Returns the sets of packages to include and exclude when building the image.
// Indexed by a string label. How each set is labeled and used depends on the
// image type.

View file

@ -192,6 +192,10 @@ func (t *imageType) Size(size uint64) uint64 {
return size
}
func (t *imageType) PartitionType() string {
return ""
}
func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) {
packages := append(t.packages, bp.GetPackages()...)
timezone, _ := bp.Customizations.GetTimezoneSettings()

View file

@ -184,6 +184,10 @@ func (t *imageType) Size(size uint64) uint64 {
return size
}
func (t *imageType) PartitionType() string {
return ""
}
func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) {
packages := append(t.packages, bp.GetPackages()...)
timezone, _ := bp.Customizations.GetTimezoneSettings()

View file

@ -215,6 +215,10 @@ func (t *imageType) Size(size uint64) uint64 {
return size
}
func (t *imageType) PartitionType() string {
return ""
}
func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) {
packages := append(t.packages, bp.GetPackages()...)
timezone, _ := bp.Customizations.GetTimezoneSettings()

View file

@ -68,6 +68,10 @@ func (t *imageTypeS2) Size(size uint64) uint64 {
return size
}
func (t *imageTypeS2) PartitionType() string {
return ""
}
func (t *imageTypeS2) Packages(bp blueprint.Blueprint) ([]string, []string) {
packages := append(t.packageSets["packages"].Include, bp.GetPackages()...)
timezone, _ := bp.Customizations.GetTimezoneSettings()

View file

@ -327,6 +327,16 @@ func (t *imageType) getPartitionTable(
return disk.CreatePartitionTable(mountpoints, imageSize, &basePartitionTable, rng)
}
func (t *imageType) PartitionType() string {
archName := t.arch.Name()
basePartitionTable, exists := t.basePartitionTables[archName]
if !exists {
return ""
}
return basePartitionTable.Type
}
// local type for ostree commit metadata used to define commit sources
type ostreeCommit struct {
Checksum string

View file

@ -404,6 +404,17 @@ func (t *imageType) getDefaultImageConfig() *distro.ImageConfig {
imageConfig = &distro.ImageConfig{}
}
return imageConfig.InheritFrom(t.arch.distro.getDefaultImageConfig())
}
func (t *imageType) PartitionType() string {
archName := t.arch.Name()
basePartitionTable, exists := t.basePartitionTables[archName]
if !exists {
return ""
}
return basePartitionTable.Type
}
// local type for ostree commit metadata used to define commit sources

View file

@ -392,6 +392,17 @@ func (t *imageType) getDefaultImageConfig() *distro.ImageConfig {
imageConfig = &distro.ImageConfig{}
}
return imageConfig.InheritFrom(t.arch.distro.getDefaultImageConfig())
}
func (t *imageType) PartitionType() string {
archName := t.arch.Name()
basePartitionTable, exists := t.basePartitionTables[archName]
if !exists {
return ""
}
return basePartitionTable.Type
}
// local type for ostree commit metadata used to define commit sources

View file

@ -362,6 +362,16 @@ func (t *imageType) getPartitionTable(
return disk.CreatePartitionTable(mountpoints, imageSize, &basePartitionTable, rng)
}
func (t *imageType) PartitionType() string {
archName := t.arch.Name()
basePartitionTable, exists := t.basePartitionTables[archName]
if !exists {
return ""
}
return basePartitionTable.Type
}
// local type for ostree commit metadata used to define commit sources
type ostreeCommit struct {
Checksum string

View file

@ -167,6 +167,10 @@ func (t *TestImageType) Size(size uint64) uint64 {
return 0
}
func (t *TestImageType) PartitionType() string {
return ""
}
func (t *TestImageType) Packages(bp blueprint.Blueprint) ([]string, []string) {
return nil, nil
}