Skip to content

Commit 6f031a6

Browse files
Merge pull request openshift#8513 from zaneb/simplify-kargs
AGENT-890: Simplify Agent ISO kargs setting
2 parents 0f694c4 + 4c25b30 commit 6f031a6

File tree

4 files changed

+19
-45
lines changed

4 files changed

+19
-45
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: 15 additions & 41 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

@@ -125,66 +124,41 @@ func (a *AgentImage) updateIgnitionContent(agentArtifacts *AgentArtifacts) error
125124
return err
126125
}
127126

127+
return a.overwriteFileData(fileInfo)
128+
}
129+
130+
func (a *AgentImage) overwriteFileData(fileInfo []isoeditor.FileData) error {
131+
var errs []error
128132
for _, fileData := range fileInfo {
133+
defer fileData.Data.Close()
134+
129135
filename := filepath.Join(a.tmpPath, fileData.Filename)
130136
file, err := os.Create(filename)
131137
if err != nil {
132-
return err
138+
errs = append(errs, err)
139+
continue
133140
}
134141
defer file.Close()
135142

136143
_, err = io.Copy(file, fileData.Data)
137144
if err != nil {
138-
return err
145+
errs = append(errs, err)
139146
}
140147
}
141148

142-
return nil
149+
return errors.Join(errs...)
143150
}
144151

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

176-
kargsFiles, err := isoeditor.KargsFiles(a.isoPath)
157+
fileInfo, err := isoeditor.NewKargsReader(a.isoPath, kargs)
177158
if err != nil {
178159
return err
179160
}
180-
181-
embedArea := regexp.MustCompile(`(\n#*)# COREOS_KARG_EMBED_AREA`)
182-
for _, f := range kargsFiles {
183-
if err := updateKargsFile(a.tmpPath, f, embedArea, kargs); err != nil {
184-
return err
185-
}
186-
}
187-
return nil
161+
return a.overwriteFileData(fileInfo)
188162
}
189163

190164
// 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)