Skip to content

Commit 25353ef

Browse files
committed
Refactor PortForward guest/host processing
Put into functions, so that they can be reused for ConfigFile. Fix typo in comment, and add Instance to avoid future conflict. Signed-off-by: Anders F Björklund <[email protected]>
1 parent f26b412 commit 25353ef

File tree

2 files changed

+52
-38
lines changed

2 files changed

+52
-38
lines changed

pkg/limayaml/defaults.go

Lines changed: 50 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,47 @@ func FillDefault(y, d, o *LimaYAML, filePath string) {
527527
y.CACertificates.Certs = caCerts
528528
}
529529

530+
func processGuest(format string) (bytes.Buffer, error) {
531+
tmpl, err := template.New("").Parse(format)
532+
if err == nil {
533+
user, _ := osutil.LimaUser(false)
534+
data := map[string]string{
535+
"Home": fmt.Sprintf("/home/%s.linux", user.Username),
536+
"UID": user.Uid,
537+
"User": user.Username,
538+
}
539+
var out bytes.Buffer
540+
if err := tmpl.Execute(&out, data); err == nil {
541+
return out, nil
542+
}
543+
}
544+
return bytes.Buffer{}, err
545+
}
546+
547+
func processHost(format string, instDir string) (bytes.Buffer, error) {
548+
tmpl, err := template.New("").Parse(format)
549+
if err == nil {
550+
user, _ := osutil.LimaUser(false)
551+
home, _ := os.UserHomeDir()
552+
limaHome, _ := dirnames.LimaDir()
553+
data := map[string]string{
554+
"Dir": instDir,
555+
"Home": home,
556+
"Name": filepath.Base(instDir),
557+
"UID": user.Uid,
558+
"User": user.Username,
559+
560+
"Instance": filepath.Base(instDir), // DEPRECATED, use `{{.Name}}`
561+
"LimaHome": limaHome, // DEPRECATED, (use `Dir` instead of `{{.LimaHome}}/{{.Instance}}`
562+
}
563+
var out bytes.Buffer
564+
if err := tmpl.Execute(&out, data); err == nil {
565+
return out, nil
566+
}
567+
}
568+
return bytes.Buffer{}, err
569+
}
570+
530571
func FillPortForwardDefaults(rule *PortForward, instDir string) {
531572
if rule.Proto == "" {
532573
rule.Proto = TCP
@@ -559,47 +600,20 @@ func FillPortForwardDefaults(rule *PortForward, instDir string) {
559600
}
560601
}
561602
if rule.GuestSocket != "" {
562-
tmpl, err := template.New("").Parse(rule.GuestSocket)
563-
if err == nil {
564-
user, _ := osutil.LimaUser(false)
565-
data := map[string]string{
566-
"Home": fmt.Sprintf("/home/%s.linux", user.Username),
567-
"UID": user.Uid,
568-
"User": user.Username,
569-
}
570-
var out bytes.Buffer
571-
if err := tmpl.Execute(&out, data); err == nil {
572-
rule.GuestSocket = out.String()
573-
} else {
574-
logrus.WithError(err).Warnf("Couldn't process guestSocket %q as a template", rule.GuestSocket)
575-
}
603+
if out, err := processGuest(rule.GuestSocket); err == nil {
604+
rule.GuestSocket = out.String()
605+
} else {
606+
logrus.WithError(err).Warnf("Couldn't process guestSocket %q as a template", rule.GuestSocket)
576607
}
577608
}
578609
if rule.HostSocket != "" {
579-
tmpl, err := template.New("").Parse(rule.HostSocket)
580-
if err == nil {
581-
user, _ := osutil.LimaUser(false)
582-
home, _ := os.UserHomeDir()
583-
limaHome, _ := dirnames.LimaDir()
584-
data := map[string]string{
585-
"Dir": instDir,
586-
"Home": home,
587-
"Name": filepath.Base(instDir),
588-
"UID": user.Uid,
589-
"User": user.Username,
590-
591-
"Instance": filepath.Base(instDir), // DEPRECATED, use `{{.Name}}`
592-
"LimaHome": limaHome, // DEPRECATED, (use `Dir` instead of `{{.LimaHome}}/{{.Instance}}`
593-
}
594-
var out bytes.Buffer
595-
if err := tmpl.Execute(&out, data); err == nil {
596-
rule.HostSocket = out.String()
597-
} else {
598-
logrus.WithError(err).Warnf("Couldn't process hostSocket %q as a template", rule.HostSocket)
599-
}
610+
if out, err := processHost(rule.HostSocket, instDir); err == nil {
611+
rule.HostSocket = out.String()
612+
} else {
613+
logrus.WithError(err).Warnf("Couldn't process hostSocket %q as a template", rule.HostSocket)
600614
}
601615
if !filepath.IsAbs(rule.HostSocket) {
602-
rule.HostSocket = filepath.Join(instDir, filenames.SocketDir, rule.HostSocket)
616+
rule.HostSocket = filepath.Join(instDir, filenames.InstanceSocketDir, rule.HostSocket)
603617
}
604618
}
605619
}

pkg/store/filenames/filenames.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ const (
4545
VzIdentifier = "vz-identifier"
4646
VzEfi = "vz-efi"
4747

48-
// SocketDir is the default location for forwarded sockets with a relative paths in HostSocket
49-
SocketDir = "sock"
48+
// InstanceSocketDir is the default location for forwarded sockets with a relative path in HostSocket
49+
InstanceSocketDir = "sock"
5050
)
5151

5252
// Filenames used under a disk directory

0 commit comments

Comments
 (0)