@@ -17,6 +17,7 @@ import (
1717 "context"
1818 "fmt"
1919 "net"
20+ "net/url"
2021 "os"
2122 "os/signal"
2223 "strconv"
@@ -134,17 +135,33 @@ func initSnapshotter(ctx context.Context, config config.Config) (snapshots.Snaps
134135 if err != nil {
135136 return nil , err
136137 }
137- host , portstr , err := net . SplitHostPort (response .Address )
138+ u , err := url . Parse (response .Address )
138139 if err != nil {
139140 return nil , err
140141 }
141- port , err := strconv .ParseUint (portstr , base10 , bits32 )
142+ host := u .Hostname ()
143+ port , err := strconv .ParseUint (response .SnapshotterPort , base10 , bits32 )
142144 if err != nil {
143145 return nil , err
144146 }
145147 snapshotterDialer := func (ctx context.Context , namespace string ) (net.Conn , error ) {
146148 return vsock .DialContext (ctx , host , uint32 (port ), vsock .WithLogger (log .G (ctx )))
147149 }
150+
151+ if config .Snapshotter .Metrics .Enable {
152+ metricsPort , err := strconv .ParseUint (response .MetricsPort , base10 , bits32 )
153+ if err != nil {
154+ return nil , err
155+ }
156+
157+ // TODO (ginglis13) metricsDialer func to be defined here using metricsPort. It will dial
158+ // the same host but connect via its own port. The metrics proxy will be configured in NewProxySnapshotter
159+ // task 2 of https://github.com/firecracker-microvm/firecracker-containerd/issues/602
160+ _ = func (ctx context.Context , _ string ) (net.Conn , error ) {
161+ return vsock .DialContext (ctx , host , uint32 (metricsPort ), vsock .WithLogger (log .G (ctx )))
162+ }
163+ }
164+
148165 return proxy .NewProxySnapshotter (ctx , host , snapshotterDialer )
149166 }
150167
0 commit comments