From 09af65d41816a7cad00da9e45b71ab8e6880753f Mon Sep 17 00:00:00 2001 From: Roman Dodin Date: Mon, 28 Jun 2021 22:01:29 +0200 Subject: [PATCH] added save for srl --- nodes/srl/srl.go | 15 +++++++++++++++ runtime/docker/docker.go | 1 + 2 files changed, 16 insertions(+) diff --git a/nodes/srl/srl.go b/nodes/srl/srl.go index 2f3543014..5acc89ef3 100644 --- a/nodes/srl/srl.go +++ b/nodes/srl/srl.go @@ -54,6 +54,8 @@ var ( //go:embed topology/* topologies embed.FS + + saveCmd []string = []string{"sr_cli", "-d", "tools", "system", "configuration", "generate-checkpoint"} ) func init() { @@ -173,6 +175,19 @@ func (s *srl) Destroy(ctx context.Context, r runtime.ContainerRuntime) error { func (s *srl) WithMgmtNet(*types.MgmtNet) {} func (s *srl) SaveConfig(ctx context.Context, r runtime.ContainerRuntime) error { + + stdout, stderr, err := r.Exec(ctx, s.cfg.LongName, saveCmd) + if err != nil { + return fmt.Errorf("%s: failed to execute cmd: %v", s.cfg.ShortName, err) + } + + if len(stderr) > 0 { + return fmt.Errorf("%s errors: %s", s.cfg.ShortName, string(stderr)) + } + + confPath := s.cfg.LabDir + "/config/checkpoint/checkpoint-0.json" + log.Infof("saved SR Linux configuration from %s node to %s\noutput:\n%s", s.cfg.ShortName, confPath, string(stdout)) + return nil } diff --git a/runtime/docker/docker.go b/runtime/docker/docker.go index 054ee6a6b..5412f62ee 100644 --- a/runtime/docker/docker.go +++ b/runtime/docker/docker.go @@ -303,6 +303,7 @@ func (c *DockerRuntime) CreateContainer(ctx context.Context, node *types.NodeCon if err != nil { return err } + return utils.LinkContainerNS(node.NSPath, node.LongName) }