From c542c81c9ad05f93247b7d00a903e051bbcc177c Mon Sep 17 00:00:00 2001 From: ak1ra24 Date: Mon, 3 Feb 2020 09:29:32 +0900 Subject: [PATCH] support default tinet volume add tinet volume option --- internal/pkg/shell/shell.go | 7 +++++++ internal/pkg/shell/shell_test.go | 26 ++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/internal/pkg/shell/shell.go b/internal/pkg/shell/shell.go index 9bd9910..fb3dd77 100644 --- a/internal/pkg/shell/shell.go +++ b/internal/pkg/shell/shell.go @@ -51,6 +51,7 @@ type Node struct { Name string `yaml:"name" mapstructure:"name"` Type string `yaml:"type" mapstructure:"type"` NetBase string `yaml:"net_base" mapstructure:"net_base"` + VolumeBase string `yaml:"volume" mapstructure:"volume"` Image string `yaml:"image" mapstructure:"image"` Interfaces []Interface `yaml:"interfaces" mapstructure:"interfaces"` Sysctls []Sysctl `yaml:"sysctls" mapstructure:"sysctls"` @@ -403,6 +404,12 @@ func (node *Node) CreateNode() []string { } } + if node.VolumeBase == "" { + createNodeCmd += fmt.Sprintf("-v /tmp/tinet:/tinet ") + } else { + createNodeCmd += fmt.Sprintf("-v %s:/tinet ", node.VolumeBase) + } + if len(node.Mounts) != 0 { for _, mount := range node.Mounts { createNodeCmd += fmt.Sprintf("-v %s ", mount) diff --git a/internal/pkg/shell/shell_test.go b/internal/pkg/shell/shell_test.go index 5cc5a13..7a54946 100644 --- a/internal/pkg/shell/shell_test.go +++ b/internal/pkg/shell/shell_test.go @@ -477,6 +477,7 @@ func TestNode_CreateNode(t *testing.T) { Name string Type string NetBase string + VolumeBase string Image string Interfaces []Interface Sysctls []Sysctl @@ -500,7 +501,7 @@ func TestNode_CreateNode(t *testing.T) { }, }, }, - want: []string{"docker run -td --hostname R1 --net none --name R1 --rm --privileged slankdev/frr"}, + want: []string{"docker run -td --hostname R1 --net none --name R1 --rm --privileged -v /tmp/tinet:/tinet slankdev/frr"}, }, { name: "create docker node net None with sysctls", @@ -523,7 +524,7 @@ func TestNode_CreateNode(t *testing.T) { }, }, }, - want: []string{"docker run -td --hostname R1 --net none --name R1 --rm --privileged --sysctl net.ipv4.ip_forward=1 --sysctl net.ipv6.conf.all.forwarding=1 slankdev/frr"}, + want: []string{"docker run -td --hostname R1 --net none --name R1 --rm --privileged --sysctl net.ipv4.ip_forward=1 --sysctl net.ipv6.conf.all.forwarding=1 -v /tmp/tinet:/tinet slankdev/frr"}, }, { name: "create docker node net bridge", @@ -539,7 +540,7 @@ func TestNode_CreateNode(t *testing.T) { }, }, }, - want: []string{"docker run -td --hostname R1 --net bridge --name R1 --rm --privileged slankdev/frr"}, + want: []string{"docker run -td --hostname R1 --net bridge --name R1 --rm --privileged -v /tmp/tinet:/tinet slankdev/frr"}, }, { name: "create netns node", @@ -614,7 +615,23 @@ func TestNode_CreateNode(t *testing.T) { "/usr/share/vim:/mnt/vim", }, }, - want: []string{"docker run -td --hostname T1 --net none --name T1 --rm --privileged -v `pwd`:/mnt/test -v /usr/share/vim:/mnt/vim slankdev/frr"}, + want: []string{"docker run -td --hostname T1 --net none --name T1 --rm --privileged -v /tmp/tinet:/tinet -v `pwd`:/mnt/test -v /usr/share/vim:/mnt/vim slankdev/frr"}, + }, + { + name: "create node with specify tinet volume", + fields: fields{ + Name: "T1", + Image: "slankdev/frr", + VolumeBase: "/tmp/ak1ra24", + Interfaces: []Interface{ + Interface{ + Name: "net0", + Type: "direct", + Args: "T2#net0", + }, + }, + }, + want: []string{"docker run -td --hostname T1 --net none --name T1 --rm --privileged -v /tmp/ak1ra24:/tinet slankdev/frr"}, }, } for _, tt := range tests { @@ -623,6 +640,7 @@ func TestNode_CreateNode(t *testing.T) { Name: tt.fields.Name, Type: tt.fields.Type, NetBase: tt.fields.NetBase, + VolumeBase: tt.fields.VolumeBase, Image: tt.fields.Image, Interfaces: tt.fields.Interfaces, Sysctls: tt.fields.Sysctls,