Skip to content

Commit 75ee9e9

Browse files
authored
Merge pull request #112 from xibz/expose_config
Expose config to allow for advanced handlers
2 parents dbdcd6d + e79d1e8 commit 75ee9e9

File tree

4 files changed

+50
-50
lines changed

4 files changed

+50
-50
lines changed

handlers.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ var ConfigValidationHandler = Handler{
4646
Name: ValidateCfgHandlerName,
4747
Fn: func(ctx context.Context, m *Machine) error {
4848
// ensure that the configuration is valid for the FcInit handlers.
49-
return m.cfg.Validate()
49+
return m.Cfg.Validate()
5050
},
5151
}
5252

@@ -55,12 +55,12 @@ var ConfigValidationHandler = Handler{
5555
var JailerConfigValidationHandler = Handler{
5656
Name: ValidateJailerCfgHandlerName,
5757
Fn: func(ctx context.Context, m *Machine) error {
58-
if m.cfg.JailerCfg == nil {
58+
if m.Cfg.JailerCfg == nil {
5959
return nil
6060
}
6161

6262
hasRoot := false
63-
for _, drive := range m.cfg.Drives {
63+
for _, drive := range m.Cfg.Drives {
6464
if BoolValue(drive.IsRootDevice) {
6565
hasRoot = true
6666
break
@@ -71,27 +71,27 @@ var JailerConfigValidationHandler = Handler{
7171
return fmt.Errorf("A root drive must be present in the drive list")
7272
}
7373

74-
if m.cfg.JailerCfg.ChrootStrategy == nil {
74+
if m.Cfg.JailerCfg.ChrootStrategy == nil {
7575
return fmt.Errorf("ChrootStrategy cannot be nil")
7676
}
7777

78-
if len(m.cfg.JailerCfg.ExecFile) == 0 {
78+
if len(m.Cfg.JailerCfg.ExecFile) == 0 {
7979
return fmt.Errorf("exec file must be specified when using jailer mode")
8080
}
8181

82-
if len(m.cfg.JailerCfg.ID) == 0 {
82+
if len(m.Cfg.JailerCfg.ID) == 0 {
8383
return fmt.Errorf("id must be specified when using jailer mode")
8484
}
8585

86-
if m.cfg.JailerCfg.GID == nil {
86+
if m.Cfg.JailerCfg.GID == nil {
8787
return fmt.Errorf("GID must be specified when using jailer mode")
8888
}
8989

90-
if m.cfg.JailerCfg.UID == nil {
90+
if m.Cfg.JailerCfg.UID == nil {
9191
return fmt.Errorf("UID must be specified when using jailer mode")
9292
}
9393

94-
if m.cfg.JailerCfg.NumaNode == nil {
94+
if m.Cfg.JailerCfg.NumaNode == nil {
9595
return fmt.Errorf("ID must be specified when using jailer mode")
9696
}
9797

@@ -112,8 +112,8 @@ var StartVMMHandler = Handler{
112112
var CreateLogFilesHandler = Handler{
113113
Name: CreateLogFilesHandlerName,
114114
Fn: func(ctx context.Context, m *Machine) error {
115-
logFifoPath := m.cfg.LogFifo
116-
metricsFifoPath := m.cfg.MetricsFifo
115+
logFifoPath := m.Cfg.LogFifo
116+
metricsFifoPath := m.Cfg.MetricsFifo
117117

118118
if len(logFifoPath) == 0 || len(metricsFifoPath) == 0 {
119119
// logging is disabled
@@ -160,7 +160,7 @@ var CreateMachineHandler = Handler{
160160
var CreateBootSourceHandler = Handler{
161161
Name: CreateBootSourceHandlerName,
162162
Fn: func(ctx context.Context, m *Machine) error {
163-
return m.createBootSource(ctx, m.cfg.KernelImagePath, m.cfg.KernelArgs)
163+
return m.createBootSource(ctx, m.Cfg.KernelImagePath, m.Cfg.KernelArgs)
164164
},
165165
}
166166

@@ -169,7 +169,7 @@ var CreateBootSourceHandler = Handler{
169169
var AttachDrivesHandler = Handler{
170170
Name: AttachDrivesHandlerName,
171171
Fn: func(ctx context.Context, m *Machine) error {
172-
return m.attachDrives(ctx, m.cfg.Drives...)
172+
return m.attachDrives(ctx, m.Cfg.Drives...)
173173
},
174174
}
175175

@@ -178,7 +178,7 @@ var AttachDrivesHandler = Handler{
178178
var CreateNetworkInterfacesHandler = Handler{
179179
Name: CreateNetworkInterfacesHandlerName,
180180
Fn: func(ctx context.Context, m *Machine) error {
181-
return m.createNetworkInterfaces(ctx, m.cfg.NetworkInterfaces...)
181+
return m.createNetworkInterfaces(ctx, m.Cfg.NetworkInterfaces...)
182182
},
183183
}
184184

@@ -187,7 +187,7 @@ var CreateNetworkInterfacesHandler = Handler{
187187
var AddVsocksHandler = Handler{
188188
Name: AddVsocksHandlerName,
189189
Fn: func(ctx context.Context, m *Machine) error {
190-
return m.addVsocks(ctx, m.cfg.VsockDevices...)
190+
return m.addVsocks(ctx, m.Cfg.VsockDevices...)
191191
},
192192
}
193193

@@ -234,7 +234,7 @@ type Handlers struct {
234234
// into a single list and running.
235235
func (h Handlers) Run(ctx context.Context, m *Machine) error {
236236
l := HandlerList{}
237-
if !m.cfg.DisableValidation {
237+
if !m.Cfg.DisableValidation {
238238
l = l.Append(h.Validation.list...)
239239
}
240240

jailer.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const (
3535
var (
3636
// ErrMissingJailerConfig will occur when entering jailer logic but the
3737
// jailer config had not been specified.
38-
ErrMissingJailerConfig = fmt.Errorf("JailerConfig was not set for use.")
38+
ErrMissingJailerConfig = fmt.Errorf("jailer config was not set for use")
3939
)
4040

4141
// SeccompLevelValue represents a secure computing level type.
@@ -372,52 +372,52 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
372372
return Handler{
373373
Name: LinkFilesToRootFSHandlerName,
374374
Fn: func(ctx context.Context, m *Machine) error {
375-
if m.cfg.JailerCfg == nil {
375+
if m.Cfg.JailerCfg == nil {
376376
return ErrMissingJailerConfig
377377
}
378378

379379
// copy kernel image to root fs
380380
if err := linkFileToRootFS(
381-
m.cfg.JailerCfg,
381+
m.Cfg.JailerCfg,
382382
filepath.Join(rootfs, kernelImageFileName),
383-
m.cfg.KernelImagePath,
383+
m.Cfg.KernelImagePath,
384384
); err != nil {
385385
return err
386386
}
387387

388388
// copy all drives to the root fs
389-
for i, drive := range m.cfg.Drives {
389+
for i, drive := range m.Cfg.Drives {
390390
hostPath := StringValue(drive.PathOnHost)
391391
driveFileName := filepath.Base(hostPath)
392392

393393
if err := linkFileToRootFS(
394-
m.cfg.JailerCfg,
394+
m.Cfg.JailerCfg,
395395
filepath.Join(rootfs, driveFileName),
396396
hostPath,
397397
); err != nil {
398398
return err
399399
}
400400

401-
m.cfg.Drives[i].PathOnHost = String(driveFileName)
401+
m.Cfg.Drives[i].PathOnHost = String(driveFileName)
402402
}
403403

404-
m.cfg.KernelImagePath = kernelImageFileName
404+
m.Cfg.KernelImagePath = kernelImageFileName
405405

406-
for _, fifoPath := range []*string{&m.cfg.LogFifo, &m.cfg.MetricsFifo} {
406+
for _, fifoPath := range []*string{&m.Cfg.LogFifo, &m.Cfg.MetricsFifo} {
407407
if fifoPath == nil || *fifoPath == "" {
408408
continue
409409
}
410410

411411
fileName := filepath.Base(*fifoPath)
412412
if err := linkFileToRootFS(
413-
m.cfg.JailerCfg,
413+
m.Cfg.JailerCfg,
414414
filepath.Join(rootfs, fileName),
415415
*fifoPath,
416416
); err != nil {
417417
return err
418418
}
419419

420-
if err := os.Chown(filepath.Join(rootfs, fileName), *m.cfg.JailerCfg.UID, *m.cfg.JailerCfg.GID); err != nil {
420+
if err := os.Chown(filepath.Join(rootfs, fileName), *m.Cfg.JailerCfg.UID, *m.Cfg.JailerCfg.GID); err != nil {
421421
return err
422422
}
423423

machine.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ type Machine struct {
141141
// Handlers holds the set of handlers that are run for validation and start
142142
Handlers Handlers
143143

144-
cfg Config
144+
Cfg Config
145145
client *Client
146146
cmd *exec.Cmd
147147
logger *log.Entry
@@ -209,17 +209,17 @@ type VsockDevice struct {
209209
// SocketPath returns the filesystem path to the socket used for VMM
210210
// communication
211211
func (m *Machine) socketPath() string {
212-
return m.cfg.SocketPath
212+
return m.Cfg.SocketPath
213213
}
214214

215215
// LogFile returns the filesystem path of the VMM log
216216
func (m *Machine) LogFile() string {
217-
return m.cfg.LogFifo
217+
return m.Cfg.LogFifo
218218
}
219219

220220
// LogLevel returns the VMM log level.
221221
func (m *Machine) LogLevel() string {
222-
return m.cfg.LogLevel
222+
return m.Cfg.LogLevel
223223
}
224224

225225
// NewMachine initializes a new Machine instance and performs validation of the
@@ -261,7 +261,7 @@ func NewMachine(ctx context.Context, cfg Config, opts ...Opt) (*Machine, error)
261261
}
262262

263263
m.machineConfig = cfg.MachineCfg
264-
m.cfg = cfg
264+
m.Cfg = cfg
265265

266266
m.logger.Debug("Called NewMachine()")
267267
return m, nil
@@ -309,7 +309,7 @@ func (m *Machine) Wait(ctx context.Context) error {
309309
}
310310

311311
func (m *Machine) addVsocks(ctx context.Context, vsocks ...VsockDevice) error {
312-
for _, dev := range m.cfg.VsockDevices {
312+
for _, dev := range m.Cfg.VsockDevices {
313313
if err := m.addVsock(ctx, dev); err != nil {
314314
return err
315315
}
@@ -342,7 +342,7 @@ func (m *Machine) attachDrives(ctx context.Context, drives ...models.Drive) erro
342342

343343
// startVMM starts the firecracker vmm process and configures logging.
344344
func (m *Machine) startVMM(ctx context.Context) error {
345-
m.logger.Printf("Called startVMM(), setting up a VMM on %s", m.cfg.SocketPath)
345+
m.logger.Printf("Called startVMM(), setting up a VMM on %s", m.Cfg.SocketPath)
346346

347347
errCh := make(chan error)
348348

@@ -352,7 +352,7 @@ func (m *Machine) startVMM(ctx context.Context) error {
352352
close(m.exitCh)
353353
return err
354354
}
355-
m.logger.Debugf("VMM started socket path is %s", m.cfg.SocketPath)
355+
m.logger.Debugf("VMM started socket path is %s", m.Cfg.SocketPath)
356356

357357
go func() {
358358
if err := m.cmd.Wait(); err != nil {
@@ -361,9 +361,9 @@ func (m *Machine) startVMM(ctx context.Context) error {
361361
m.logger.Printf("firecracker exited: status=0")
362362
}
363363

364-
os.Remove(m.cfg.SocketPath)
365-
os.Remove(m.cfg.LogFifo)
366-
os.Remove(m.cfg.MetricsFifo)
364+
os.Remove(m.Cfg.SocketPath)
365+
os.Remove(m.Cfg.LogFifo)
366+
os.Remove(m.Cfg.MetricsFifo)
367367
errCh <- err
368368

369369
// Notify subscribers that there will be no more values.
@@ -390,7 +390,7 @@ func (m *Machine) startVMM(ctx context.Context) error {
390390
// Wait for firecracker to initialize:
391391
err = m.waitForSocket(3*time.Second, errCh)
392392
if err != nil {
393-
msg := fmt.Sprintf("Firecracker did not create API socket %s: %s", m.cfg.SocketPath, err)
393+
msg := fmt.Sprintf("Firecracker did not create API socket %s: %s", m.Cfg.SocketPath, err)
394394
err = errors.New(msg)
395395
close(m.exitCh)
396396
return err
@@ -443,16 +443,16 @@ func createFifos(logFifo, metricsFifo string) error {
443443
}
444444

445445
func (m *Machine) setupLogging(ctx context.Context) error {
446-
if len(m.cfg.LogFifo) == 0 || len(m.cfg.MetricsFifo) == 0 {
446+
if len(m.Cfg.LogFifo) == 0 || len(m.Cfg.MetricsFifo) == 0 {
447447
// No logging configured
448448
m.logger.Printf("VMM logging and metrics disabled.")
449449
return nil
450450
}
451451

452452
l := models.Logger{
453-
LogFifo: String(m.cfg.LogFifo),
454-
Level: String(m.cfg.LogLevel),
455-
MetricsFifo: String(m.cfg.MetricsFifo),
453+
LogFifo: String(m.Cfg.LogFifo),
454+
Level: String(m.Cfg.LogLevel),
455+
MetricsFifo: String(m.Cfg.MetricsFifo),
456456
ShowLevel: Bool(true),
457457
ShowLogOrigin: Bool(false),
458458
Options: []string{},
@@ -464,12 +464,12 @@ func (m *Machine) setupLogging(ctx context.Context) error {
464464
}
465465

466466
m.logger.Debugf("Configured VMM logging to %s, metrics to %s",
467-
m.cfg.LogFifo,
468-
m.cfg.MetricsFifo,
467+
m.Cfg.LogFifo,
468+
m.Cfg.MetricsFifo,
469469
)
470470

471-
if m.cfg.FifoLogWriter != nil {
472-
if err := captureFifoToFile(m.logger, m.cfg.LogFifo, m.cfg.FifoLogWriter); err != nil {
471+
if m.Cfg.FifoLogWriter != nil {
472+
if err := captureFifoToFile(m.logger, m.Cfg.LogFifo, m.Cfg.FifoLogWriter); err != nil {
473473
return err
474474
}
475475
}
@@ -507,7 +507,7 @@ func captureFifoToFile(logger *log.Entry, fifoPath string, fifo io.Writer) error
507507
}
508508

509509
func (m *Machine) createMachine(ctx context.Context) error {
510-
resp, err := m.client.PutMachineConfiguration(ctx, &m.cfg.MachineCfg)
510+
resp, err := m.client.PutMachineConfiguration(ctx, &m.Cfg.MachineCfg)
511511
if err != nil {
512512
m.logger.Errorf("PutMachineConfiguration returned %s", resp.Error())
513513
return err
@@ -699,7 +699,7 @@ func (m *Machine) waitForSocket(timeout time.Duration, exitchan chan error) erro
699699
case err := <-exitchan:
700700
return err
701701
case <-ticker.C:
702-
if _, err := os.Stat(m.cfg.SocketPath); err != nil {
702+
if _, err := os.Stat(m.Cfg.SocketPath); err != nil {
703703
continue
704704
}
705705

machine_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ func TestWaitForSocket(t *testing.T) {
616616
errchan := make(chan error)
617617

618618
m := Machine{
619-
cfg: Config{SocketPath: filename},
619+
Cfg: Config{SocketPath: filename},
620620
logger: fctesting.NewLogEntry(t),
621621
}
622622

0 commit comments

Comments
 (0)