@@ -10,6 +10,7 @@ import (
10
10
"strconv"
11
11
"strings"
12
12
"syscall"
13
+ "text/template"
13
14
"time"
14
15
15
16
"github.com/docker/go-units"
@@ -88,7 +89,6 @@ func Inspect(instName string) (*Instance, error) {
88
89
if err == nil {
89
90
inst .Disk = disk
90
91
}
91
- inst .Message = y .Message
92
92
inst .Networks = y .Networks
93
93
inst .SSHLocalPort = * y .SSH .LocalPort // maybe 0
94
94
@@ -137,6 +137,26 @@ func Inspect(instName string) (*Instance, error) {
137
137
}
138
138
}
139
139
140
+ tmpl , err := template .New ("format" ).Parse (y .Message )
141
+ if err != nil {
142
+ inst .Errors = append (inst .Errors , fmt .Errorf ("message %q is not a valid template: %w" , y .Message , err ))
143
+ inst .Status = StatusBroken
144
+ } else {
145
+ data , err := AddGlobalFields (inst )
146
+ if err != nil {
147
+ inst .Errors = append (inst .Errors , fmt .Errorf ("cannot add global fields to instance data: %w" , err ))
148
+ inst .Status = StatusBroken
149
+ } else {
150
+ var message strings.Builder
151
+ err = tmpl .Execute (& message , data )
152
+ if err != nil {
153
+ inst .Errors = append (inst .Errors , fmt .Errorf ("cannot execute template %q: %w" , y .Message , err ))
154
+ inst .Status = StatusBroken
155
+ } else {
156
+ inst .Message = message .String ()
157
+ }
158
+ }
159
+ }
140
160
return inst , nil
141
161
}
142
162
0 commit comments