-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test-Layout s390x #483
Test-Layout s390x #483
Changes from all commits
561ce19
a724048
7065052
a054be9
cf9728d
c3c1000
58c42a8
83d6f29
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,6 +32,7 @@ type BootDevice struct { | |
|
||
type BootDeviceLuks struct { | ||
Discard *bool `yaml:"discard"` | ||
Device string `yaml:"device"` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit:This change should have been part of the originating commit. |
||
Tang []base.Tang `yaml:"tang"` | ||
Threshold *int `yaml:"threshold"` | ||
Tpm2 *bool `yaml:"tpm2"` | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,6 +17,8 @@ package v1_6_exp | |
import ( | ||
"fmt" | ||
"strings" | ||
"regexp" | ||
"strconv" | ||
|
||
baseutil "github.com/coreos/butane/base/util" | ||
"github.com/coreos/butane/config/common" | ||
|
@@ -29,6 +31,11 @@ import ( | |
"github.com/coreos/vcontext/report" | ||
) | ||
|
||
var ( | ||
dasdRe = regexp.MustCompile("(/dev/dasd[a-z]$)") | ||
sdRe = regexp.MustCompile("(/dev/sd[a-z]$)") | ||
) | ||
|
||
const ( | ||
reservedTypeGuid = "8DA63339-0007-60C0-C436-083AC8230908" | ||
biosTypeGuid = "21686148-6449-6E6F-744E-656564454649" | ||
|
@@ -109,8 +116,9 @@ func (c Config) processBootDevice(config *types.Config, ts *translate.Translatio | |
var r report.Report | ||
|
||
// check for high-level features | ||
wantLuks := util.IsTrue(c.BootDevice.Luks.Tpm2) || len(c.BootDevice.Luks.Tang) > 0 | ||
wantLuks := util.IsTrue(c.BootDevice.Luks.Tpm2) || len(c.BootDevice.Luks.Tang) > 0 | ||
wantMirror := len(c.BootDevice.Mirror.Devices) > 0 | ||
|
||
if !wantLuks && !wantMirror { | ||
return r | ||
} | ||
|
@@ -119,6 +127,8 @@ func (c Config) processBootDevice(config *types.Config, ts *translate.Translatio | |
var wantBIOSPart bool | ||
var wantEFIPart bool | ||
var wantPRePPart bool | ||
var wantMBR bool | ||
var wantDasd bool | ||
layout := c.BootDevice.Layout | ||
switch { | ||
case layout == nil || *layout == "x86_64": | ||
|
@@ -128,6 +138,13 @@ func (c Config) processBootDevice(config *types.Config, ts *translate.Translatio | |
wantEFIPart = true | ||
case *layout == "ppc64le": | ||
wantPRePPart = true | ||
case *layout == "s390x-zfcp": | ||
wantMBR = true | ||
case *layout == "s390x-eckd": | ||
wantDasd = true | ||
case *layout == "s390x-virt": | ||
wantBIOSPart = true | ||
wantEFIPart = true | ||
default: | ||
// should have failed validation | ||
panic("unknown layout") | ||
|
@@ -232,12 +249,25 @@ func (c Config) processBootDevice(config *types.Config, ts *translate.Translatio | |
rendered.Storage.Filesystems = append(rendered.Storage.Filesystems, bootFilesystem) | ||
} | ||
|
||
// encrypted root partition | ||
//encrypted root partition | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: why did we remove a space in the comment it makes it less readable. |
||
if wantLuks { | ||
luksDevice := "/dev/disk/by-partlabel/root" | ||
if wantMirror { | ||
var luksDevice string | ||
dasd := dasdRe.FindString(c.BootDevice.Luks.Device) | ||
sd := sdRe.FindString(c.BootDevice.Luks.Device) | ||
switch { | ||
case wantMBR && len(sd) > 0: | ||
luksDevice = sd + strconv.Itoa(2) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we get a comment explaining the luks device value? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also why strconv.Itoa()? and not "2" and is there a better way so there is not string magic? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will add the comment explaining the luks device value.. Also why strconv.Itoa()? and not "2" and is there a better way so there is not string magic? |
||
case wantDasd && len(dasd) > 0: | ||
luksDevice = dasd + strconv.Itoa(2) | ||
case wantMirror: | ||
luksDevice = "/dev/md/md-root" | ||
default: | ||
luksDevice = "/dev/disk/by-partlabel/root" | ||
} | ||
// luksDevice := "/dev/disk/by-partlabel/root" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Commented out code is a no no. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will remove the commented out code. |
||
// if wantMirror { | ||
// luksDevice = "/dev/md/md-root" | ||
// } | ||
clevis, ts2, r2 := translateBootDeviceLuks(c.BootDevice.Luks, options) | ||
rendered.Storage.Luks = []types.Luks{{ | ||
Clevis: clevis, | ||
|
@@ -258,7 +288,6 @@ func (c Config) processBootDevice(config *types.Config, ts *translate.Translatio | |
renderedTranslations.AddTranslation(lpath, path.New("json", "storage", "luks")) | ||
r.Merge(r2) | ||
} | ||
|
||
// create root filesystem | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. see above. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will remove the extra line. |
||
var rootDevice string | ||
switch { | ||
|
@@ -271,6 +300,7 @@ func (c Config) processBootDevice(config *types.Config, ts *translate.Translatio | |
default: | ||
panic("can't happen") | ||
} | ||
|
||
rootFilesystem := types.Filesystem{ | ||
Device: rootDevice, | ||
Format: util.StrToPtr("xfs"), | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -198,7 +198,7 @@ The Fedora CoreOS configuration is a YAML document conforming to the following s | |
* **_should_exist_** (boolean): whether or not the group with the specified `name` should exist. If omitted, it defaults to true. If false, then Ignition will delete the specified group. | ||
* **_system_** (boolean): whether or not the group should be a system group. This only has an effect if the group doesn't exist yet. | ||
* **_boot_device_** (object): describes the desired boot device configuration. At least one of `luks` or `mirror` must be specified. | ||
* **_layout_** (string): the disk layout of the target OS image. Supported values are `aarch64`, `ppc64le`, and `x86_64`. Defaults to `x86_64`. | ||
* **_layout_** (string): the disk layout of the target OS image. Supported values are `aarch64`, `ppc64le`, `s390x-zfcp`, `s390x-eckd`, `s390x-virt` and `x86_64`. Defaults to `x86_64`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "aarch64, ppc64le, and x86_64" ie : "aarch64, ppc64le,s390x-eckd, s390x-virt, s390x-zfcp, and x86_64. Defaults to x86_64". I think these were alphabetical lets keep it that way :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will update that. |
||
* **_luks_** (object): describes the clevis configuration for encrypting the root filesystem. | ||
* **_tang_** (list of objects): describes a tang server. Every server must have a unique `url`. | ||
* **url** (string): url of the tang server. | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -209,13 +209,14 @@ The Fedora CoreOS configuration is a YAML document conforming to the following s | |
* **_should_exist_** (list of strings): the list of kernel arguments that should exist. | ||
* **_should_not_exist_** (list of strings): the list of kernel arguments that should not exist. | ||
* **_boot_device_** (object): describes the desired boot device configuration. At least one of `luks` or `mirror` must be specified. | ||
* **_layout_** (string): the disk layout of the target OS image. Supported values are `aarch64`, `ppc64le`, and `x86_64`. Defaults to `x86_64`. | ||
* **_layout_** (string): the disk layout of the target OS image. Supported values are `aarch64`, `ppc64le`, `s390x-zfcp`, `s390x-eckd`, `s390x-virt` and `x86_64`. Defaults to `x86_64`. | ||
* **_luks_** (object): describes the clevis configuration for encrypting the root filesystem. | ||
* **_tang_** (list of objects): describes a tang server. Every server must have a unique `url`. | ||
* **url** (string): url of the tang server. | ||
* **thumbprint** (string): thumbprint of a trusted signing key. | ||
* **_advertisement_** (string): the advertisement JSON. If not specified, the advertisement is fetched from the tang server during provisioning. | ||
* **_tpm2_** (boolean): whether or not to use a tpm2 device. | ||
* **device** (string): Specifically for s390x `eckd` and `zfcp` disk without `mirror`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If "device" is specifically for s390x maybe we can name it more explicitly rather then "device"? wdyt? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. how about |
||
* **_threshold_** (integer): sets the minimum number of pieces required to decrypt the device. Default is 1. | ||
* **_discard_** (boolean): whether to issue discard commands to the underlying block device when blocks are freed. Enabling this improves performance and device longevity on SSDs and space utilization on thinly provisioned SAN devices, but leaks information about which disk blocks contain data. If omitted, it defaults to false. | ||
* **_mirror_** (object): describes mirroring of the boot disk for fault tolerance. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Commit 561ce19 should be amended with a724048
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll create a new PR with less clutter on spaces and new line. This PR was not supposed to raised, As i need some assistance is some of the logic in coding which i am not able to meet. I'll work upon.