Skip to content

Commit

Permalink
🐛 Load overlay config from cos-layout.env (#71)
Browse files Browse the repository at this point in the history
Load the base overlay config from the cos-layout.env file. This means we
have to depend the base overlay mount to the load-config step, which
moves things a bit in the DAG.

Signed-off-by: Itxaka <itxaka.garcia@spectrocloud.com>
  • Loading branch information
Itxaka committed Mar 2, 2023
1 parent 73c4c3e commit 6ed15c7
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 16 deletions.
2 changes: 1 addition & 1 deletion earthly.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/bash

docker run --privileged -v /var/run/docker.sock:/var/run/docker.sock --rm -t -v $(pwd):/workspace -v earthly-tmp:/tmp/earthly:rw earthly/earthly:v0.6.30 --allow-privileged $@
docker run --privileged -v /var/run/docker.sock:/var/run/docker.sock --rm -t -v $(pwd):/workspace -v earthly-tmp:/tmp/earthly:rw earthly/earthly:v0.7.1 --allow-privileged $@
1 change: 1 addition & 0 deletions internal/utils/mounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ func GetOemTimeout() int {

// GetOverlayBase parses the cdmline and gets the overlay config
// Format is rd.cos.overlay=tmpfs:20% or rd.cos.overlay=LABEL=$LABEL or rd.cos.overlay=UUID=$UUID
// Notice that this can be later override by the config coming from cos-layout.env
func GetOverlayBase() string {
overlayConfig := ReadCMDLineArg("rd.cos.overlay=")
if len(overlayConfig) == 0 {
Expand Down
10 changes: 9 additions & 1 deletion pkg/mount/dag_steps.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,12 @@ func (s *State) LoadEnvLayoutDagStep(g *herd.Graph, deps ...string) error {
// Remove any duplicates
s.BindMounts = internalUtils.UniqueSlice(internalUtils.CleanupSlice(s.BindMounts))

// Load Overlay config
overlayConfig := env["OVERLAY"]
if overlayConfig != "" {
s.OverlayBase = overlayConfig
}

s.StateDir = env["PERSISTENT_STATE_TARGET"]
if s.StateDir == "" {
s.StateDir = cnst.PersistentStateTarget
Expand Down Expand Up @@ -190,8 +196,10 @@ func (s *State) MountOemDagStep(g *herd.Graph, deps ...string) error {
}

// MountBaseOverlayDagStep will add mounting /run/overlay as an overlay dir
// Requires the config-load step because some parameters can come from there
func (s *State) MountBaseOverlayDagStep(g *herd.Graph) error {
return g.Add(cnst.OpMountBaseOverlay,
herd.WithDeps(cnst.OpLoadConfig),
herd.WithCallback(
func(ctx context.Context) error {
op, err := baseOverlay(Overlay{
Expand Down Expand Up @@ -221,7 +229,7 @@ func (s *State) MountBaseOverlayDagStep(g *herd.Graph) error {
// MountCustomOverlayDagStep will add mounting s.OverlayDirs under /run/overlay
func (s *State) MountCustomOverlayDagStep(g *herd.Graph) error {
return g.Add(cnst.OpOverlayMount,
herd.WithDeps(cnst.OpLoadConfig),
herd.WithDeps(cnst.OpLoadConfig, cnst.OpMountBaseOverlay),
herd.WithCallback(
func(ctx context.Context) error {
var multierr *multierror.Error
Expand Down
20 changes: 6 additions & 14 deletions pkg/mount/state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,48 +78,40 @@ func checkLiveCDDag(dag [][]herd.GraphEntry, actualDag string) {
func checkDag(dag [][]herd.GraphEntry, actualDag string) {
Expect(len(dag)).To(Equal(10), actualDag)
Expect(len(dag[0])).To(Equal(1), actualDag)
Expect(len(dag[1])).To(Equal(4), actualDag)
Expect(len(dag[1])).To(Equal(3), actualDag)
Expect(len(dag[2])).To(Equal(1), actualDag)
Expect(len(dag[3])).To(Equal(1), actualDag)
Expect(len(dag[4])).To(Equal(1), actualDag)
Expect(len(dag[5])).To(Equal(1), actualDag)
Expect(len(dag[6])).To(Equal(1), actualDag)
Expect(len(dag[7])).To(Equal(2), actualDag)
Expect(len(dag[8])).To(Equal(1), actualDag)
Expect(len(dag[8])).To(Equal(2), actualDag)
Expect(len(dag[9])).To(Equal(1), actualDag)

Expect(dag[0][0].Name).To(Equal("init"))
Expect(dag[1][0].Name).To(Or(
Equal("mount-tmpfs"),
Equal("create-sentinel"),
Equal("mount-base-overlay"),
Equal("mount-state"),
), actualDag)
Expect(dag[1][1].Name).To(Or(
Equal("mount-tmpfs"),
Equal("create-sentinel"),
Equal("mount-base-overlay"),
Equal("mount-state"),
), actualDag)
Expect(dag[1][2].Name).To(Or(
Equal("mount-tmpfs"),
Equal("create-sentinel"),
Equal("mount-base-overlay"),
Equal("mount-state"),
), actualDag)
Expect(dag[1][3].Name).To(Or(
Equal("mount-tmpfs"),
Equal("create-sentinel"),
Equal("mount-base-overlay"),
Equal("mount-state"),
), actualDag)
Expect(dag[2][0].Name).To(Equal("discover-state"), actualDag)
Expect(dag[3][0].Name).To(Equal("mount-root"), actualDag)
Expect(dag[4][0].Name).To(Equal("mount-oem"), actualDag)
Expect(dag[5][0].Name).To(Equal("rootfs-hook"), actualDag)
Expect(dag[6][0].Name).To(Equal("load-config"), actualDag)
Expect(dag[7][0].Name).To(Or(Equal("overlay-mount"), Equal("custom-mount")), actualDag)
Expect(dag[7][1].Name).To(Or(Equal("overlay-mount"), Equal("custom-mount")), actualDag)
Expect(dag[8][0].Name).To(Equal("mount-bind"), actualDag)
Expect(dag[7][0].Name).To(Or(Equal("mount-base-overlay"), Equal("custom-mount")), actualDag)
Expect(dag[7][1].Name).To(Or(Equal("mount-base-overlay"), Equal("custom-mount")), actualDag)
Expect(dag[8][0].Name).To(Or(Equal("mount-bind"), Equal("overlay-mount")), actualDag)
Expect(dag[8][1].Name).To(Or(Equal("mount-bind"), Equal("overlay-mount")), actualDag)
Expect(dag[9][0].Name).To(Equal("write-fstab"), actualDag)
}

0 comments on commit 6ed15c7

Please sign in to comment.