Skip to content

Commit 4c25b30

Browse files
committed
AGENT-890: Simplify Agent ISO kargs setting
Defer to the implementation provided by assisted-image-service in NewKargsReader(), so that we do not need to maintain any knowledge of how kernel args are implemented in the installer.
1 parent be35cef commit 4c25b30

File tree

4 files changed

+8
-42
lines changed

4 files changed

+8
-42
lines changed

pkg/asset/agent/image/agentartifacts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type AgentArtifacts struct {
3030
RendezvousIP string
3131
TmpPath string
3232
IgnitionByte []byte
33-
Kargs []byte
33+
Kargs string
3434
ISOPath string
3535
BootArtifactsBaseURL string
3636
}

pkg/asset/agent/image/agentimage.go

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"io/fs"
99
"os"
1010
"path/filepath"
11-
"regexp"
1211

1312
"github.com/sirupsen/logrus"
1413

@@ -150,49 +149,16 @@ func (a *AgentImage) overwriteFileData(fileInfo []isoeditor.FileData) error {
150149
return errors.Join(errs...)
151150
}
152151

153-
func updateKargsFile(tmpPath, filename string, embedArea *regexp.Regexp, kargs []byte) error {
154-
file, err := os.OpenFile(filepath.Join(tmpPath, filename), os.O_RDWR, 0)
155-
if err != nil {
156-
return err
157-
}
158-
defer file.Close()
159-
160-
content, err := io.ReadAll(file)
161-
if err != nil {
162-
return err
163-
}
164-
indices := embedArea.FindSubmatchIndex(content)
165-
if len(indices) != 4 {
166-
return fmt.Errorf("failed to find COREOS_KARG_EMBED_AREA in %s", filename)
167-
}
168-
169-
if size := (indices[3] - indices[2]); len(kargs) > size {
170-
return fmt.Errorf("kernel args content length (%d) exceeds embed area size (%d)", len(kargs), size)
171-
}
172-
173-
if _, err := file.WriteAt(append(kargs, '\n'), int64(indices[2])); err != nil {
174-
return err
175-
}
176-
return nil
177-
}
178-
179-
func (a *AgentImage) appendKargs(kargs []byte) error {
180-
if len(kargs) == 0 {
152+
func (a *AgentImage) appendKargs(kargs string) error {
153+
if kargs == "" {
181154
return nil
182155
}
183156

184-
kargsFiles, err := isoeditor.KargsFiles(a.isoPath)
157+
fileInfo, err := isoeditor.NewKargsReader(a.isoPath, kargs)
185158
if err != nil {
186159
return err
187160
}
188-
189-
embedArea := regexp.MustCompile(`(\n#*)# COREOS_KARG_EMBED_AREA`)
190-
for _, f := range kargsFiles {
191-
if err := updateKargsFile(a.tmpPath, f, embedArea, kargs); err != nil {
192-
return err
193-
}
194-
}
195-
return nil
161+
return a.overwriteFileData(fileInfo)
196162
}
197163

198164
// normalizeFilesExtension scans the extracted ISO files and trims

pkg/asset/agent/image/kargs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ func (a *Kargs) Name() string {
6161
}
6262

6363
// KernelCmdLine returns the data to be appended to the kernel arguments.
64-
func (a *Kargs) KernelCmdLine() []byte {
64+
func (a *Kargs) KernelCmdLine() string {
6565
cmdLine := a.consoleArgs
6666
if a.fips {
6767
cmdLine += " fips=1"
6868
}
69-
return []byte(cmdLine)
69+
return cmdLine
7070
}

pkg/asset/agent/image/kargs_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func TestKargs_Generate(t *testing.T) {
101101

102102
if tc.expectedErr == "" {
103103
assert.NoError(t, err)
104-
assert.Equal(t, tc.expectedArgs, string(kargs.KernelCmdLine()))
104+
assert.Equal(t, tc.expectedArgs, kargs.KernelCmdLine())
105105
} else {
106106
assert.Regexp(t, tc.expectedErr, err.Error())
107107
}

0 commit comments

Comments
 (0)